在这个世界上,有数百万人在做软件开发的工作,他们拥有很多名字,如:软件工程师(Software Engineer),程序员(Progra-mmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们也非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一名优秀的程序员,并进而获得一步步的提升,还应该具备以下素质:


1、团队精神和协作能力

团队精神和协作能力是程序员应该具备的最基本、也是最重要的素质。把高水平程序员说成独行侠是不正确的,任何个人的力量都很有限,即便像乔布斯这样的天才,也需要通过组成强大的团队来创造奇迹。独行侠可以做一些赚钱的小软件,发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了,在进一步的提升上也会因此受限。

2、文档习惯

即便是高水平的程序员也还需要写文档,良好的文档是正规研发流程中一个非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错、升级以及模块的复用时都会遇到极大的麻烦。

3、规范化、标准化的代码编写习惯

在国外一些知名的软件公司,对于代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,还有助于不同技术人员之间的相互协作。有些codingfans表示高水平程序员写的代码旁人从来看不懂,这种说法只能证明他们自己压根不配自称程序员。代码具有良好的可读性,是程序员素质中最基本的要求。

4、需求理解能力

程序员需要理解一个模块的需求,很多刚入行的程序员只关注一个功能需求,他们把性能指标全部归结到硬件、操作系统和开发环境上,而忽视了代码本身的性能考虑。性能需求指标中,稳定性、并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境、将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能真正地理解。

5、复用性、模块化思维能力

经常会听到一些程序员抱怨,写了几年程序后变成了熟练工,每天都是重复着写一些没有任何新意的代码,其实,一些重复性工作是可以避免的。

复用性设计、模块化思维指程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思维上,而要想想该模块是否可以脱离这个系统而存在,是否可以通过简单地修改参数的方法在其他系统和环境中直接引用,这样就能极大地避免重复性的开发工作,也就会有更多时间和精力投入到新的编码工作中。

6、测试习惯

软件研发作为一项工程而言,一个很重要的特点就是问题发现得越早,解决的代价就越低。程序员在每段代码、每个子模块完成后要进行认真的测试,尽量将一些潜在的问题及早地发现并解决,这样整体系统建设的效率和可靠性便有了最大的保障。

7、项目设计方法和流程处理能力

高级程序员,包括系统分析员,都需要拥有项目设计方法和流程处理能力。程序设计者必须能够掌握不少于两到三个项目的设计方法,并能够根据项目需求和资源搭配来选择合适的设计方法进行项目的整体设计。同时,程序设计者还需要把很多工夫用在流程图的设计和处理上,需要做数据流图以确立数据词典,需要加工逻辑流图以形成整体的系统处理流程。

8、学习和总结的能力

善于学习,对于任何职业而言,都是前进道路上所必须的动力,对于程序员,这种要求就更高了。但是学习也要找对目标,不要追逐一些肤浅的、表面的东西或名词,比如做网络程序不懂通讯传输协议,做应用程序不懂中断向量处理,这样的技术人员,不管掌握了多少所谓的新语言,也永远不会有新的提高。