background image

足轻重的角色并为

IT

 

 

事业的发展做出了巨大 的贡献。

中国有很多精于编码的人,但是中国软件行业,尤其是网络应用开发方面误区很大,很难形成有规模的软件开发

 

力量和产品能力,不但比美国差距甚远,和印度相比也是颇有不 如。这些问题不是在于中国程序员的智商和工作

 

努力状况,也不是在于国家和民间对开发 的投入程度,而是很大程度上,有一些对技术,对程序开发,对项目设

 

 

计方面的思想误 区,这些误区,导致了软件行业的产品化能力不足,缺乏规模化和大型复用系统研发能 力,可以

 

 

说,改变认识误区,是解决软件行业小作坊模式和个体英雄模式所带来的局限性 的重要工作。

中国有很多小朋友,他们

18,9 岁或 21,2 岁,通过自学也写了不少代码,他们有的代码写的很漂亮,一些技术细

节相当出众,也很有钻研精神,但是他们被一些错误的认识和观点左右,缺乏对系统,对程序的整体理解能力,

 

这些人,一个网上的朋友说得很好,他们实际 上只是一些

Coding fans,压根没有资格称为程序员,但是据我

 

所知,不少小网络公司的

CTO 就是这样的 coding fans,拿着吓人的工资,做着吓人的项目,项目的结局通常也

 

很吓人。

 

一、程序员基本素质

 

作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。
1

 

:团队精神和协作能力

 

把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最 重要的安身立命之本。

 

把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有 限的,即便如

linus 这样的天才,也需要通过

 

组成强大的团队来创造奇迹,那些遍布全球 的为

linux 写核心的高手们,没有协作精神是不可想象的。独行侠可

 

 

以作一些赚钱的小软 件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺 乏

 

这种素质的人就完全不合格了。
2

 

:文档习惯

 

说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中 非常重要的环节,作为
代码程序员,

30

 

 

%的工作时间写技术文档是很正常的,而作为高级 程序员和系统分析员,这个比例还要高很多。

 

 

缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇 到极大的麻烦。

3

 

:规范化,标准化的代码编写习惯

 

作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩 进的长度和函数间的空

 

 

行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和 纠错,也有助于不同技术人员之间的协作。
有些

coding fans

 

叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自 己压根不配自称程序

 

员。代码具有良好的可读性,是程序员基本的素质需求。
再看看整个

linux

 

 

的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可 想象的。

4

 

:需求理解能力

 

程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性 能指标全部归结到硬件,

 

操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾 经放言说写一个广告交换程序很简单,这种人从

 

来不知道在百万甚至千万数量级的访问情 况下的性能指标是如何实现的,对于这样的程序员,你给他深蓝那套系

 

 

统,他也做不出太 极链的并访能力。性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程 序员

 

需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险 和恶意攻击的可能性。就这
一点,一个成熟的程序员至少需要

2 到 3

 

 

年的项目研发和跟踪经 验才有可能有心得。

5

 

:复用性,模块化思维能力

 

经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写 一些没有任何新意的代

 

码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成 了熟练程序员的主要工作,而这些,其实是完

 

全可以避免的。

 

复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一 些,不要局限在完成当

 

前任务的简单思路上,想想看该模块是否可以脱离这个系统存在, 是否可以通过简单的修改参数的方式在其他系

 

统和应用环境下直接引用,这样就能极大避 免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次

 

 

研发过程中都考虑到 这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投 入

 

到创新的代码工作中去。

一些好的程序模块代码,即便是

70

 

年代写成的,拿到现在放到一些系统里面作为功能模块 都能适合的很好,而

 

现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重 写,大部分重复性工作无谓的浪费了时间和精

 

力。
6

 

:测试习惯

 

作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专 职的测试工程师程序员

 

就可以不进行自测;软件研发作为一项工程而言,一个很重要的特 点就是问题发现的越早,解决的代价就越低,