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