在经历过几个大型的、失败的项目之后,我终于认识到了:没有什么比高素质的程序员更能决定项目的成功。无论采用什么开发过程,什么编程语言和开发工具,离开了高素质的程序员,都是白费力气。毫无疑问,人是软件开发中最重要的因素。但并非每个人都重要,也不是什么样的人都重要,在软件开发中,只有那些高素质的程序员和那些对项目有突出贡献的人才是重要的。
不过高素质的程序员并不多见,所以从我开始带人起,就一直在思考团队成员培养的问题。我做过很多尝试,从小组内学习到整个部门一起上大课,最后又回到对个人做单独的辅导;从通过Code Review(代码评审)做现场教育到制定一个宏伟的培训计划,最后又回到一个朴素的培训过程。其中遇到了很多问题,开始是培训不够系统,效果不甚理想,后来又因为计划过于“宏伟”而无法实施,等到最后形成一个朴素的、切实可行的培训方案,已经经过了好几年时间,直到去年,整个计划才趋于完善。我把这个培训计划称为系统程序员成长计划,而这正是我在本书中所要介绍的。
培训内容不是来源于某本书,毕业八年来,我坚持不懈地阅读有关书籍,所读过的300多本不同类型的著作装满了家中的7个大储物箱,而这些著作囊括了大部分经典的IT图书。当然培训的内容也不是全部源于书本,这几年我在开发开源软件的过程中所收获的感悟和积累的经验也融入其中。我的培训计划并不是要阐述什么高深的道理,相反,我这本书主要是针对应届毕业生和业余爱好者写的,目的就是为了让初学者进阶为一个专业的程序员。
为什么把这个培训计划叫做“系统程序员成长计划”,而不是“程序员成长计划”呢?程序员的范围太广了,虽然软件开发有很多相似之处,但是隔行如隔山,比如对于目前炙手可热的Web开发,我完全是外行。为了不造成“想什么都讲一点,结果是什么都没有讲清楚”的尴尬,我得把培训计划限定在我熟悉的范围之内。而所谓系统程序员,是指从事操作系统内核、DBMS、GuI系统、基础函数库、应用程序框架、编译器和虚拟机等基础软件开发的程序员。
书摘:
第1章 从双向链表学习设计
1.1 走近专业程序员
需求简述
用C语言编写一个双向链表。如果你有一定的C语言编程经验,这自然是小菜一碟。有的读者可能连一个小程序都没有写过,那也不用担心,可以参考任何一本有关数据结构和C语言的书籍。先弄清楚基本概念,把书上的代码看明白,再把代码原封不动地输入到电脑里,保证编译通过,然后调试程序直到它能正常运行。重复这个过程,直到你能独立完成它为止。写第一行代码通常是很痛苦的,我培训过好几个同事,他们不是科班出身,刚开始时他们就算在电脑前坐一整天,也是连一行代码都敲不出来。其实我最早写程序时的情况也好不了多少,不过没有关系,迈出这第一步,以后的路也就好走很多了。
请先花1~3天时间完成这个任务,然后再继续往下阅读。记得多写多练,不要偷懒。
当你读到这里的时候,相信你已经独立写出了一个双向链表。恭喜你!迈出这一步可是值得庆祝的,现在你已经走在成为程序员的光明大道上了。不过你还是个业余程序员,那当然了,你才写出第一个程序呢!什么时候才能成为一个专业程序员呢?三年还是五年工作经验?其实不用的,你马上就可以了,我没有骗你,因为专业程序员与业余程序员的区别主要在于一种态度,如果缺乏这种态度,拥有十年工作经验也还是业余的。
什么态度?专业态度!也就是星爷常说的专业精神。专业态度有多种表现形式,以后我们会一一介绍的。这里先介绍一下有关形象的态度,专业的程序员是很注重自己的形象的,当然程序员的形象不是表现在衣着和言谈上,而是表现在代码风格上,代码就是程序员的社交工具,代码风格可是攸关形象的大事。
有人说过,傻瓜都可以写出机器能读懂的代码,但只有专业程序员才能写出人能读懂的代码。作为专业程序员,每当写下一行代码时,要记得程序首先是给人读的,其次才是给机器读的。你要从一个业余程序员转向专业程序员,就要先从代码风格开始,并从此养成一种严谨的工作态度,生活上的不拘小节可不能带到编程中来。
代码风格有很多种,Windows和Linux都有自己主流的代码风格,每个团队、每个公司也可能有自己的代码风格,争论哪种风格好哪种风格坏根本没有什么意义。有助于其他程序员理解的代码风格都是可以接受的,因为遵循特定代码风格的目的就是为了便于交流。
这里介绍一下我喜欢的代码风格,这种代码风格也在我所在的团队中使用。这里的命名风格与GTK+代码相近,排版风格与LinuxN核代码相近。
(责任编辑:laiquliu)
|