最近看到、听到不少问题的讨论,深感我国大部分程序员心态之浮躁、基本功之薄弱,很多毕业1、2年的程序员眼睛往往盯着什么OOAD、什么CMM、什么架构,却忽视了一些无法回避的重要问题,写不好基本的代码和文档,不懂得如何评估程序的性能和质量,甚至不会写自己代码的单元测试。在此,我希望表达这样的一种观念:来到Foresee的技术人员,只要是在软件开发的领域工作的,也许由于工作原因,您不得不接触到很多OOAD、CMM之类的事情,但是请牢记,写出高质量的代码才是您最重要的工作,而且这并不简单,可能需要一个智力中上、受过良好教育的人至少2年有效的实践(包括自己的勤奋和高人的指点)才能实现。所以,虽然国内的大气候就是比较浮躁的(原因我就不说了,大家都清楚),但是,在我能力所及的范围内,我希望稍微不要那么浮躁,沉下心来学习,严格要求实践。
Dennis Ritchie得了图灵奖之后回去还是干程序员的活,也正是靠着这样的一批中流砥柱,美国的软件行业才能如此的强大。可能有人会担心,要是一直作程序员,有什么价值,是不是会比掌握了其他技能的人轻易的超越?我的个人经历以及我看到的人和事,我可以负责任的说,只有能够写出高质量代码的人才有可能成为称职的SA或者PM(当然,如果很有管理或者市场方面的天赋,向部门主管和市场系列发展的不在此列)。以后,我们还要进一步拉开高水平的程序员和平庸的程序员的差距,建立和巩固技术团队厚实的中坚层。
好,口号喊完了,下面来点实际的。首先,怎么判断您目前的水平到底算不算“能够写出高质量的代码”呢?这个有很多办法,不过我提几个参考性的问题:
1、你是否没用过,或者没写过Ant的创建脚本,也不了解其中的语法细节?
2、你是否需要花费额外的时间润色代码以便通过公司目前要求的代码风格检查?
3、你的代码中是否经常出现大段copy-paste的段落?
4、你经常觉得其他人的代码十分难懂,你只愿意重写它而不是修改?反过来,你的代码也经常得到类似的评价?
5、你是否经常为代码注释感到困惑,不知道该写还是不该写,或者写出的是这样的注释?
6、你是否很少关心你的代码的运行效率,或者想不清楚该怎么考虑这个问题?
7、你是不是很少回头审视自己的代码,即使想这样做也很难继续下去?
8、你是不是不关心自己的代码提交以后将会被如何测试、如何使用?
9、你是不是很少对某个确定的任务设计一组不同的数据结构和算法,再用一些分析和试验来找出最佳的算法?
10、你不知道D. Ritchie是谁??
还有很多,不过上面的10个问题,如果有任何一个的回答是肯定的,那么我想你还有很多提高的余地。
那么,怎么提高呢?读书是一个很好的途径,尤其是看好书,而且这样的好书并不多。很久以前,我推荐过一组我认为必读的软件开发书籍,您现在仍然可以在这里找到我推荐的这些书(甚至还有《指环王》,可以业余读读[mop 232]),尤其是其中的两本:Martin Fowler的Refactoring – Improving the Design of Existing Code和Brian Kernighan的程序设计实践(北大裘宗雁翻译的,是我见过的翻译的最好的计算机书,其他任何一本中译本我都不推荐)。
另一个途径就是交流和讨论,一般公司内都会有一些人的代码质量是很高的,也可以多多关注一些技术论坛的相关讨论。
当然了,最重要的是自己,自己的思考和对完美代码的执着追求。
Yeah, go ahead for mastering programming…