程序员应具备的素质
程序员是一种技术工作,在 IT 的发展中有相当重要的地位,从底层硬件通讯协议的建立,
到数据传输层的处理,到操作系统的建设,到数据库平台的建设,一直到应用层上各种数据营
销平台的搭建,程序员在里面都扮演着举足轻重的角色并为 IT 事业的发展做出了巨大的贡献。
中国有很多精于编码的人,但是中国软件行业,尤其是网络应用开发方面误区很大,很难形成
有规模的软件开发力量和产品能力,不但比美国差距甚远,和印度相比也是颇有不如。这些问
题不是在于中国程序员的智商和工作努力状况,也不是在于国家和民间对开发的投入程度,而
是很大程度上,有一些对技术,对程序开发,对项目设计方面的思想误区,这些误区,导致了
软件行业的产品化能力不足,缺乏规模化和大型复用系统研发能力,可以说,改变认识误区,
是解决软件行业小作坊模式和个体英雄模式所带来的局限性的重要工作。
中国有很多小朋友,他们 18,9 岁或 21,2 岁,通过自学也写了不少代码,他们有的代码写的很
漂亮,一些技术细节相当出众,也很有钻研精神,但是他们被一些错误的认识和观点左右,缺
乏对系统,对程序的整体理解能力,这些人,一个网上的朋友说得很好,他们实际上只是一些
Coding fans,压根没有资格称为程序员,但是据我所知,不少小网络公司的 CTO 就是这样的
coding fans,拿着吓人的工资,做着吓人的项目,项目的结局通常也很吓人。
程序员基本素质:
作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具
有的素质。
1:团队精神和协作能力
把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最
重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有
限的,即便如 linus 这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的
为 linux 写核心的高手们,没有协作精神是不可想象的。独行侠可以作一些赚钱的小软件发
点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这
种素质的人就完全不合格了。
2:文档习惯
说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中
非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级
程序员和系统分析员,这个比例还要高很多。
缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇
到极大的麻烦。
3:规范化,标准化的代码编写习惯
作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩
进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和
纠错,也有助于不同技术人员之间的协作。
有些 coding fans 叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己
压根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。
再看看整个 linux 的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想
象的。