程序员应知——循序渐进

作为程序员,我想每个人都对于提高和进步非常渴望,也期望自己有朝一日能够从菜鸟变成大师级的人物,能够做出很棒的系统,能够得到他人的尊敬和赞赏,当然还可以得到不菲的收入。

然而,想要达到那个层次,不可能一蹴而就,必须要踏踏实实,一步一个脚印,逐步提高。这在每个行业或者说每个人的成长过程中都是一样的,所以我们必须要把握每一个提高的机会,从一点一滴做起。古语云:不积跬步,无以至千里,道理也是一样的。

前几天一位医学专业的朋友谈到了医学上的微创新,他说,如果看医学上一两年的发展,似乎没有什么特别大的进步和创新,但是,这并不意味着医学上没有进步,当我们回头看十年前,再与当前的情况作比较的话,就会发现已经有了很大的创新,而这些创新并非是一下子就出来的,而是经过十年来一点一点的微小的创新积累出来的,其实也就是一个量变引起质变的过程。

再说一个程序员会非常熟悉的例子,大家一定都玩过游戏,比方说《暗黑破坏神》《魔兽世界》等等需要打怪升级的游戏,里面的设定并不会让玩家一下子从菜鸟成为超级高手,那样游戏的趣味性就大大下降了,玩家必须通过不断的积累,累计经验值,然后在一定的时候升级,在到达一定的级别的时候才能够学会某种技能。其实在这里面,每一次小的升级都可以对应行业中的一次微创新,而学到指定级别下的技能,则可以对应一次变革性的创新。

类似的例子举不胜举,只要稍微注意,就能够发现。

然而,作为程序员,想要成为高级程序员,想要获得架构师、系统分析师、DBA等等诱人的称号,有时候却会比较急躁,在自己的能力还没有达到的时候,就匆匆上马,接受自己的能力范围之外的工作,就为了那个“名”,结果却往往会得不偿失,一方面有拔苗助长的嫌疑,另一方面对于项目也是一种损害,做出了不好的架构,系统分析不到位而导致客户不满意,诸如此类的情况,在我们身边相信大家都见过吧。

所以,想要真正做好项目,做好程序员,我们还是需要循序渐进,然而到底应该怎么做呢?我的建议,仅供参考。

对于刚刚踏入软件行业的同学来说,当然就是多多编写代码,在参与的各个项目中学习并且积累经验。在这个阶段我们会感觉进步非常快,很快就感觉可以做很多具体的工作了,个人也会非常有成就感。但是,此时千万不可被胜利冲昏了头脑,不能觉得自己已经再也无法从项目中、从团队的成员那里学到东西了,觉得项目离开自己就做不下去了。相反,这个时候应该继续保持低调,以空杯子的心态努力学习更多的知识。

做了三年左右的程序员之后,我想大家都会有一个飞跃,积累出来的经验得到总结,也有了自己的思想,这个时候,很可能项目中所能够学到的东西已经无法满足需要了,所以就要找寻其他积累经验的方式。当然跳槽、换项目是一种方式,而另一种方式就是多多从各种渠道——包括网站、书籍等——学习知识,了解行业的动态,另外还要多多与其他人交流,那样会产生很多想法,从而更好地引起个人的思考。

到了七八年或者十年左右,可能会迎来另一次飞跃,做过的项目很多,积累的经验很多,思考的成果也很多,真正形成了自己的风格和思想,这个时候仍然不能放弃学习和交流,而另一方面,思考会变得更加重要,并且也是要确定自己发展方向的时候了。到底是做项目经理,还是架构师,还是系统分析师,或者DBA等等,在对自己有了比较清醒的认识之后,就可以确定自己的目标了,然后就要为之做各个方面的积累,准备迎接下一次质变。

上面的内容仅仅是我的建议,时间的长短和具体的做法会因人而异,在以后的我也无法给出建议,毕竟我也还在等待下一次升级。我想大家所要了解到的就是不能放弃学习和提高,而要不断进步,那样经过一段时间之后,一定会有变化的。

其实我们在工作的过程中,循序渐进不仅仅体现在个人的成长上,对于代码的修改也一样,特别是对于遗留代码,想要完善的时候,也需要使用循序渐进的方式。

之前曾经看过对于系统是要重构还是重写的讨论,更多人倾向于重构,毕竟那是一种循序渐进的方式,不断地对代码进行修改,质量一步一步提高,形成一定的积累之后,就会发现代码的质量会发生很大的改变。而重构本身,也提倡小步前进,道理是相同的。

如果进行的是重写,则进行的是一种革命式的修改,然而,一切重头开始,不可避免会因为没有积累,而导致所要耗费的人力物力财力都非常大。

总之,作为程序员,应该了解到这个很重要的原则——循序渐进,也希望能够听到大家的想法。