【转】程序员该如何定位?

从接触计算机编程到今天已经10年了,我从来没敢说自己技术多么好,也自始至终都没感觉自己技术多么了得。但是这么多年下来,我发现了一点,那就是我学会了定位。这个过程可以说一点也不平坦,因为在没有任何的帮助之下,一个人很难知道最适合自己的到底是什么?自己到底要做写什么才能让自己满意?我想这些问题每个人都会遇到,不单单是程序员。
前两天一个同事找到我,说自己很郁闷想找人聊聊天,所以我就陪他一直走了好几站,最后聊的还不痛快就直接进了个饭店,吃喝了一顿才算找到了他的问题。到底他怎么了?其实也没有什么事情,就是他在公司做了三年多,工作也稳定了,但是却发现自己什么也没有得到,每天只是不停的加班加班、写代码调试代码。觉得自己没有什么发展,而且看到源源不断的新人又进来挑战他的工作让他感到不安,感到没有出路了。想想自己要这样一直做下去,早晚一天会倒下,早晚一天会厌倦。那时该怎么办?
在他不断的重复这些问题的时候,我深切的感觉到他的不安。确实,现在的很多刚入行的都是抱着憧憬来的,可是当真正进入了一个团队之后,发现自己每天只在做那些琐碎的事情,甚至有时候自己的事情完全不能由自己决定。随着时间的流失,自我也慢慢的丢失了。有时候只是为了完成工作而完成工作了,甚至有人已经忘记了当初的憧憬和梦想是什么?这是谁的错?
我想这里面有四个方面的问题存在:
第一、我们现在的大多数人从小接受的教育中没有太多对人生定位的教育,导致大多数人从小学到大学毕业都还没有真正清楚学习的意义,更何况工作的意义了;
第二、我们在过多的压力下,往往选择了逃避,因此我们对于自己出现的问题大多都没有很好的处理,时间久了就慢慢成为习惯、就没有了真正的进取心;
第三、拿软件行业来讲,我们现在的企业都只是拼命的在想办法捞钱,捞不到就通过节流的方式来压榨员工获得利益。导致大多软件企业的软件生产环境都不是太好。
第四、软件行业的外敌太多,出现了国人整体被压制的情况。

我逐一来分析这四方面的情况。首先我们当前的教育体制确实让我们感到头痛,填鸭式的教育让多数人变成了机器,思路完全被封闭在一种被动模式之中。大多数被生产出来的人,只会照猫画虎,甚至有时候照着猫都能画出狗来。而且多数人被这种教育模式逼得不喜欢学习,认为学习根本没用,认为学习是给别人学的。所以一旦出了校园,就很少有人会继续去看书、去学习了。当这种习惯和思考方式带到工作中之后,多数人虽然开始热情很高(因为有新鲜感嘛),但随着时间的慢慢耗尽,热情也被慢慢耗尽,你就不知道自己到底在干什么了。也就是说大多数人在工作后三年把以前15年甚至更长时间填鸭进来的那点都倒光了,就必然会空虚,就必然会没有方向感。因为从开始就是没有方向乱撞到这个环境来的。
如果你是这样的状态进入的工作环境,也是这样的状态从学生变成了一个社会人。那么你就必然会受到很多挫折。要想摆脱这种困境,就必须从观念上改变自己,不要再觉得学习无用,也不要总说自己工作忙没时间学习。等你把你的水倒光,才发现自己原来需要学习的东西很多的时候,你的一次机会就已经丢失了。人生的机会没有几次!
所以这时应该立刻开始学习,拿起你能拿起的所有书开始行动起来。不要只拘泥于技术类书籍。有些程序员整天只会看技术书籍,感觉技术是万能的,学了一个技术又学一个技术,在技术的海洋中游的不亦乐乎。但到头来才发现,自己走了极端,因为人生不单单只有技术,技术只是辅助你走好人生这条路的一个工具而已。你要大量阅读各种书籍,利用这种方式来丰富你的视野,因为出现上面那种困境的最大问题,就是因为你的目光短浅,因为你知识结构不合理,导致你不适应这个社会了。如果能够真正的知道学习对你的作用,那么你就会找到方向。《劝学》中第一句就说道:学不可以已。我们就要坚持这一点,只要坚持的学下来,当你知识面达到了一定的程度,就会发现眼前到处都是出路,到处都是机会了。

第二个问题,可能有些人没有,但是我感觉大多数的程序员都存在。我总结这种问题为心理问题与个人素质问题的综合问题。确实,我们现在的工作环境远比几十年前我们父辈们面对的压力更多,因为他们那时毕竟还是计划经济,而现在的我们处在这个时期却需要拼命。而在计划经济模式下教育出来的我们,在面对这些压力和变化的时候,确实会捉襟见肘。因此很多人在承受不了了,就会选择换工作甚至是换行业。这就是为什么我面试过的人没有一个是工作年限超过3年的原因。当然很多人换工作的原因可能并非这一点点,还可能有其他的因素在里面。不过如果我们能够静心的思考一下,如果抛去利益因素,你是否是被压力也抑郁的心理驱使着才换工作的?(排除那些高人)
所以我们应该学会承受,中华民族能够毅力5000年而保住自己的文明(其他的几个文明古国的文明都曾经出现断裂或者直接消亡了),就是因为有一个字当头,万事能忍者当委以重任,很可能你的机会正在那里考验你,只看你能不能忍过这一关了。
这里不得不说一点,有些新人承受能力确实不怎样,工作上一点点的挫折就会让他意志消沉。甚至有些开发人员都变得不能被说,一说他哪里不好他就会不好好干。这给团队的管理和开发带来了很大的不便。这也是中国软件不能腾飞的一个小原因。我们从小都学过天将降大任于斯人也,必先苦其心志,劳其筋骨。。。。。,我想所有智商超过80的人也都会懂得这句话的意思,可是为什么真的到了自己的头上却不能理解其意了?听到的却总是埋怨,埋怨公司环境不好、埋怨上级不懂得技术、埋怨公司不赚钱、埋怨这个埋怨那个。我想如果一个团队中有几个这种人就会被搅得不得安宁。
当然也有些人从来不会埋怨,他们甚至什么都不会说,你只要安排了工作他就做,不紧不慢只要不耽误你的要求他就万事大吉了。这种人不会对团队有任何帮助,但是也不会怎么拖团队的后腿。如果你属于这两种的一种,我感觉你还是趁早改掉,因为一个公司的好坏,一个团队的好坏是要靠大家的努力,如果总是有人说风凉话或者大多数人都一句话都不说,我想这个团队这个公司也支撑不了多久了。
其实究其原因,是因为这种人没有忠心。作为一个人,首先就是要有忠心,要忠于国家、忠于社会、忠于家人、忠于朋友、忠于公司。只为一己之利是没法做到这些的。

万事都去忍,都忠心也未必能修成正果。一个好的平台,会让我们的发展少走很多弯路。而现在大多数软件公司,都不能提供一个真正适合程序员发展的平台,有的过于重视任务、有的在钱上斤斤计较、有的对技术的要求苛刻到了极点、有的则缺乏管理这些问题,都会让开发人员没有归属感。一个只会捞钱的公司,最终会死在这种小农意识中。一个不关心员工的企业,最终也会因为人才流失而废物成群而死。一个只会造分配任务而不会合理管理任务的企业,最终也会因为混乱而寿终。
所以说对于一个普通的开发人员来讲,好的平台是迈向成功的第一步。而现在大多数应届毕业生,都是匆忙的面试匆忙的过场,只要公司会要就进。而进入之后才发现问题多多,再换。在这种换来换去的过程中,每个新环境都会让这些新人重新学习一些新东西,虽然对于他们来讲很有价值。可是对于公司也好对于个人也好,都会造成浪费。
遇到这种情况,我希望所有的企业能够真正的做好自己,把自己真正做成一个好的软件公司,好的平台。对于新人来讲,也不要盲目应聘,要对目标企业有深刻的了解,不要觉得换工作很酷。你的青春往往是在换工作的过程中白白的浪费掉,等到年龄大了才发现,虽然经验多多,可是没有做成功过一件事情。
我建议你,不管公司如何,你都要做成功一件事情,不管这件事情是如何的,只要你觉得值得又会为企业和个人带来好处的,那么你就去做。要勇于面对困难,要正视公司的缺点。因为没有哪个企业真正适合你,也没有哪个企业真正会为你着想。你摆正了姿态,那么你就不会浪费时间了。

第四个确实属于一个外部原因,也是中国软件业的一个软肋。放眼软件行业,中国现在使用的技术、使用的工具、使用的产品。大多都是外国的,就连很多门户网站也都是外国人执掌的。当这些技术和平台都被外国人掌握的时候,他们会建立很多的标准和技术,弄的整个行业新技术层出不穷、新标准比比皆是。让我们这些编外人员,疲于奔命。所以导致了很多程序员在做了几年程序之后,就苦于不能提高。因为在这些技术壁垒不断树立的过程中,我们不但要面对很多的业务问题,还要面对很多技术的升级。就拿.NET来讲,从.NET出来到现在已经经历了1.0版、1.1版、2.0版、3.0版、3.5版。每个版本都会有大量的新技术出现,导致每个版本出来都会让程序员忙着买书、忙着学习。

虽然技术的不断升级是好事,也是发展的必然路径。可是由于关键技术点的不断改进更新,导致很多程序员并不是真正在做事,而是整天在研究新技术。前面说了要不断的学习,这样学习没什么不好啊?当然!可是让我们回头想想,我们真正用某个版本做过什么?很多人都是刚学了一个版本,还没怎么用,就升级了。然后再去学习新的,累了吧?用不了几年就疲劳不堪了。

我经历过以上的所有版本,我发现了一个问题,那就是从1.03.5,每个版本都能够完成我们想要完成的需求。只是可能某个版本实现起来稍微好看一些而已,可是真正提高了多少开发效率呢?如果不抛出学习的时间,和在实用新技术的时候出现的问题的解决时间,其实没有实质的提高。而且在这种更新过程中,我发现,没有几个普通开发人员能够熬过3个版本以上,多数都会在经历3个版本就开始考虑换工作、换行业了。

这就是微软以及其他的软件商给我们设置的壁垒,让我们疲于研究他们的技术,而疏于研究更主要的东西——业务知识。其实软件行业是一个辅助型的行业,凭借本身是无法为人类带来什么好处的。他要结合某个其他行业的业务知识,才能真正发挥他的作用。而由于我们忙于研究技术,在研究业务上就必然会疏忽。可以看到中国现在有多少业务做的好的软件?可是中国却有很多鼓吹加入了新技术的软件。

所以作为一个程序员,不要盲目的追求新技术,在你追求的时候,应该先想想你当前能掌握的技术能否完成你的需求。新技术是很难解决真正的问题的。就像《人月神话》上讲的,新技术不能解决软件危机问题。在软件开发过程中,大多数出现的问题也都不是新技术能够真正解决的。所以一个程序员应该以业务为第一目标,技术只是辅助性的第二目标。当你的业务实现没有问题的时候,再考虑新技术。因为这时你是在没有开发压力下去研究新技术,这样的研究也会更加客观。

万变不离其宗。其实我们到现在为止,新发明出来的技术并不多,大多都是在使用旧技术的时候提出了些新想法。比如AJAX,也就是几个旧技术的综合体。我们应该做的是掌握这个世界的基本运行原理,充分的认识了这个世界,你就充分的认识了这个世界的技术。

通过上面的讲述,其实可以看到一个程序员的定位确实不容易,要从各个方面去考虑。而且还受制于环境。我这里简短的总结一下上面的内容,给出一个很简单的自我定位方式:

1. 不断的学习各种各样的知识,不要拘泥于单一知识体系。

2. 要有“忍”的精神,任何一个地方都能够挖出水来,只是看你有没有这个毅力。

3. 频繁的换工作只会葬送你的时间,不会给你带来任何好处。

4. 当你所在的企业或者其他地方,不合你的意时候,不要逃避问题。大胆的提出,敢说敢做敢于改变自己周围环境的人才会成功。

5. 不要迷失在技术的海洋中,微软、SUNIBM所承诺的很多事情和发明的很多技术,都是为了让你依赖于他。而并非真正能解决问题。

6. 第一重视业务、第二重视技术,不能只重视其一。

7. 一个真正能够在软件行业有一番作为的人,一定是在某个除软件以外的行业也是专家。

或许我还有很多地方没有说到,但是你能够读到这里,我就感到很欣慰,因为至少说明我所写对你有用。也非常感谢你能读完,希望能得到你的指教和意见。因为我也是在不断的尝试和摸索中长大的程序员。也希望你能够真正定好自己的位置,不要迷失!

原文地址:http://blog.csdn.net/lovenina/article/details/2979398

原文地址:https://www.cnblogs.com/xlhblogs/p/2607444.html