http://www.cnblogs.com/pains/archive/2011/03/11/1981679.html
在工作的几年里,我发现作为开发人员普遍存在自我认识不清的情况,出现这种情况的原因主要是不了解做为一个开发人员所应该具有的各种能力。在抛开计算机语言、数据结构及算法和操作系统网络数据库等层面的情况下(因为这些在具备兴趣这个要素时自然会主动的去学好),那么我认为做为开发人员所需要的要素:
- 兴趣;
- 理解能力;
- 学习能力。
以上是一些基本的要素,是能够把程序写好、解决问题的要素,但要想成为更高级的开发者,还需要:
- 成为一个有思想、会思考的人;
- 智商;
- 分析能力。
如果你研究过PetShop,你可能可以模仿它并用到你们自己的项目里,可能做出来的东西也不错,但不代表你就是一个有思想、会思考的人,仅仅只能说是你的学习能力不错。
一个有思想、会思考的人往往是一个严格要求自己的人,还常常是一个懒惰的人,因为他不想去做重复的劳动,他总是想尽办法去让一切变的触手可及,确切说是一个有自己的思想、用自己方式思考的人,但现实中很多开发人员只会模仿。
因为这点这个世界才有了那么多了不起的企业,那么多了不起的语言、平台、框架,还有那么多了不起的软件以及了不起的人,等等。有了自己的思想后,智商和分析能力会让你能够实现你的思想。
如果还要加点什么要素的话,我想就是毅力、敢于表达和善于表达自己的思想。
- 自我认识不清的开发者
可以这么说,很多做开发的根本不适合做开发,不少有两年以上开发经验的人,按理他应该比刚毕业没有开发经验的学生要有更多的能力,但事实是这两年他不仅把上学时学的数据结构等知识丢掉以外,他还没能把他现在工作中用的主打语言弄透,稍微复杂点的功能就实现不了,只知道使用现成的东西,更加糟糕的是这些年他没能在脑子里留下任何东西,对面向对象设计都没能掌握,却在纠结于设计上(包括架构)是用工厂模式好还是策略模式好。
开发软件是一个很辛苦的工作,客户愿意使用软件,当然是这个软件能够解决他们工作中的问题,而不是把他们的工作变的更繁琐,如何让软件操作起来更简单,这是一门学问,而不像我们平时遇到的增删改查这么简单。很多开发人员“一山望着一山高”,他发现别的公司的待遇比他现在获得的高,他就觉得他也应该获得更高的待遇,或者想跳槽,他不去想想同样做为开发者,个体的差异有多大,可能以他的能力目前仅仅只能做做增删改查的工作,而他却希望获得其他人做复杂工作所得到的待遇。
不过这也不是指所有人,有些刚毕业的学生有很强的能力和潜力,他完全达到了上面说的基本要素,而且他工作很积极,代码产生错误的可能性更小,甚至比有几年工作经验的同事更有能力并且做的更多的工作,而他获得的待遇相比之下很少,这个时候我很支持他为自己去争取更多或者跳槽。另外如果具有上面说的高级开发人员的能力,同时在目前的情况下无法获得更多,那么跳槽是最好的选择。
我很支持跳槽,跳槽是优化我们这个行业资源分配、让每个人在合适的企业和合适的岗位贡献他的能力的最好方式。
说完对开发人员的看法,以后要说下作为软件开发的企业和头头应该要具有的能力。