如何进阶为职业程序员---三年程序员生涯的感悟

转自:http://blog.csdn.net/j00105840/article/details/5829843php

如何从编程爱好者进阶为职业程序员:

1、简单才是美
好的代码必定是最简单的,这应该是每一个职业程序员心中万世不变的箴言。一个简单的“hello world”,能够有十几种实现,可是职业程序员绝对不会标新立异,他们会选择最简单最经常使用的那种。
为何要写简单的程序?1、简单的程序易于扩展;2、简单的程序易于维护;3、简单的程序易于发现问题…… 写简单程序的理由实在太多了。能用10行实现的,就不要写100行;能用数组实现的,就不要用avl …..
总之,在能实现功能的状况下,程序越简单越好。

2、严格遵照编程规范
程序员入职时,都会获得一本公司的编程规范。虽然每一个公司的编程规范不尽相同,可是基本都讲的是排版格式、注释、命名规范、可测试性、语法规范等方面的内容。编程规范是前人总结出来的经验教训,每一个职业程序员都应该严格遵照。在项目层面上来讲,编程规范是项目成员应该遵照的约定,这样项目代码才会风格统一,尽力约束我的风格,避免出现10我的的项目出现11种风格的状况。
严格遵照编程规范,还能够避免出现一些低级错误。如:编程规范中有一条,条件判断式使用双等号”==”时,应该将常量放在双等号左侧,变量放在右侧。遵照该条规范能够避免出现所谓的“差一错误”,即将双等号写成等号。这种状况下,编译器会报错。
职业程序员写出来的代码应该是风格一致的,这样的代码便于维护,便于其余程序员的阅读,也能够规避一些低级错误,因此,严格遵照编程规范是程序员职业化的重要体现。

3、代码的质量属性
代码的质量属性主要有三个方面:功能、可扩展性、性能。功能:是对一段程序最基本的要求。程序首先要正确实现预期的功能,才能谈其余的质量属性。可扩展性:对于一个大型地,须要长期维护的软件来讲,程序会不停地加入一些新的特性。若是程序的可扩展性差,就会致使系统的频繁重构,浪费大量的人力物力。可扩展性应该是在程序的设计阶段就考虑到。固然,没有谁能在设计之初就考虑到全部的扩展性,可是咱们必须尽可能考虑周全,这就涉及到设计的方法和理论了,这里不讨论。性能:好的程序应该考虑性能。可是,这因应用场景而论。好比:一个简单的计算器程序,咱们不必花太多地精力去提升它的性能。可是,对于一个大型的平台系统(电信软件、操做系统、数据库系统等),咱们就得花精力去考虑性能问题了。
三个质量属性的优先级应该是:功能正确>扩展性好>性能高。
一般,某些质量属性之间自己是矛盾的。有时候,咱们顾得了性能,程序的可扩展性就会变差。反之,可扩展性好了,可是就会影响性能。通常状况下,咱们会按照上面的优先级别来取得质量属性的平衡。

4、常常review你的代码
程序员都是心高气傲的,他们每每对本身写的代码充满了自信,以致于写好之后不再愿意去多看一眼。可是,既是是大牛,也不能保证代码零缺陷。一个职业的程序员,应该按期review本身的代码,不断发现本身代码的bug

5、职业程序员必定是优秀的测试人员
我在公司几年以来,亲眼看见公司开发和测试人员之间关系的几回变革。刚入公司时,发现问题的数量是考核测试人员绩效的惟一标准,某些部门甚至出现给测试人员下达日发现问题数量的指标,不达标直接影响年终奖。测试人员和开发人员水火不容,常常出现为了一个问题是否该提单争得面红耳赤。一年之后,状况有所改变,测试人员再也不惟问题单是从。到了如今,公司已经大力提倡开发测试融合了。开发和测试人员联合绩效考核,考核的标准是版本的稳定性以及遗留缺陷密度。开发和测试人员办公区已经彻底融合在一块儿,测试人员常常给开发人员培训测试方法,开发人员也主动投入到测试发现问题。
我说自身的经历,只是想说明一个事实,开发和测试之间并无不可逾越的差异。
不少开发人员对测试不屑,以为那是没有技术含量的活。其实否则,测试人员是站在客户的角度考虑问题,他们每每能考虑到不少研发人员考虑不到的场景。测试有一套很是完善的理论。若是研发人员可以了解一些测试方法和理论,对于软件的设计会有很大帮助。
职业程序员必定是优秀的测试人员。

6、站在设计的高度编码
站在设计的高度编码,这话说得有点抽象了,可是这确实是我多年来感觉最深的一点。软件开发一般分为三个阶段:设计、编码、测试。不少人认为设计是设计师架构师的事情、测试是测试人员的事情,程序员的工做便是编码。因此,不少致力于成为职业程序员的同窗都将所有的精力放在了编程语言的学习上。编程语言只是一个工具,学得好,只能说明你学会使用了一门工具而已。举个不是很恰当的例子,对于一个画家来讲,光学会使用画笔是不够的,还得要有艺术灵感。学会了编码只能说明你会使用画笔了,可是离画家还远着呢。
有篇很著名的论文叫作《源码既是设计》(http://www.feifanbbs.com/frame.php?frameon=yes&referer=http%3A//www.feifanbbs.com/),我很是认同。架构师在设计阶段会输出设计文档,可是对于软件来讲源码才是最直接的工程文档,一份好的源码赛过千百篇工程文档----这也是敏捷开发的思想。好的源码必定是通过设计的,架构师站在架构的角度设计,可是他很难考虑到代码级别的事情,代码的实现最终要靠编程人员。大到一个流程,小至一个函数,这些是要靠实际编程人员来设计的。编程人员也应该学会设计,懂得一些设计模式和理论。
作一个设计者,而不是代码工人。程序员

相关文章
相关标签/搜索