程序员的武器大家谈之雷军专访
记者:闫辉 欧阳璟
优秀的程序员,其实并不在于技能的熟练掌握,而是需要有良好的素质,有追求完美的精神。
《程序员》:您认为什么样的程序员才算是优秀的程序员或是程序高手?
雷军:优秀的程序员,其实并不在于技能的熟练掌握,而是需要有良好的素质,有追求完美的精神。真正的好程序员不是为了完成任务,也不是为了交付产品而工作。他们想要要发挥自己的极限,尽自己的最大努力把程序做得更好。
很多人把写程序看成是一种生活技能,而不是真心喜欢。这种后果会导致很难坚持。一些开发人员在面临选择的时候常常会选择眼前利益以及轻松的工作。但总体上来看,做一个程序员能吃苦是必要条件之一。
今天程序员要像大长今那样,用纯洁、认真的心去做好每一件事情。其实长远来看,程序员写好代码,其他收获也会纷至沓来。一些人很在意眼前的利益,但对于做开发这件需要长期积累的事情来说,看重眼前利益很容易影响其开发功力的修为。这里用大长今来对比,其故事讲的是:一个古代的科研工作者,为了研究膳食和医道的极致而不断追求。这种精神应该是我们当代技术人员应该具备的特点。
如今,金山有七八百人的研发队伍,在我们当中的佼佼者,基本上都具备上述基本素质,这也是我为什么会谈到这些条件的原因。
《程序员》:哪些技能是一个程序员必备的基本技能?
雷军:从技术人员的角度来看,我觉得最重要的是数据结构,它最能体现开发人员的基本素质。
首先是标识名的命名习惯。标识名命名习惯决定程序后期的可维护性。现在我们看到很多参加奥林匹克竞赛的程序员,常常能非常快速的写程序,但是做出来的软件很难维护,这就无法应用到实践的工程和项目当中。
第二是数据结构的定义和常量的定义,这两者对于开发人员来说是良好的编程习惯。数据结构的定义很大程度上决定了程序的可维护性和可扩展性。
接下来第三点是算法的说明、描述及测试子程序。
第四点,我们在强调BugFree,也就是调试能力以及编写无错代码的能力,一定要常常不忘做边界条件判断。
高级一点的开发人员,要注重第五点,程序框架设计的合理性。
第六点是程序的运行效率,这对于一个开发人员来说,已经到达一定高度了。更高的境界则是在开发程序的时候,还需要具备产品规划的能力,换句话说,良好的编程习惯能帮助你走向成功。
《程序员》:清您简单回顾一下您的程序员生涯。
雷军:我1987年进入武汉大学计算机系学习,在大一和大二期间,我一直在老师的实验室中做项目。大三、大四的时候在学校外面为一些公司开发相关的软件产品。1992年1月加入金山,写程序一直写到1997年。1997年以后我逐渐由一个程序员向一个管理者的角色过渡。
《程序员》:请给我们的读者几点具备实践意义的指导。
雷军:对于还在学校的计算机专业学生,首先他应当问问自己是否喜欢这个行业。因为写程序是一件非常辛苦的事情,如果没有发自内心的热情,是很难坚持下去的。
其次是多实践,多到老师的实验室去做项目。你编写的程序越多,对提高你自身能力的帮助越大。
对于那些已经进入到软件开发行业的人,则需要永不间断地学习新的技术。这是软件开发行业的特点,快速的发展,也需要你快速学习。
《程序员》:开发桌面软件与开发互联网软件有何区别?
雷军:开发互联网软件相对于开发桌面软件而言,技术复杂度有所增加。其实并不是技术的类别增加了,而是需要关注的点越来越多。另外,开发互联网软件的反应速度加快,一旦发现问题时,修正问题速度也相应加快,这时要对各种版本的软件加强管理,快速响应变化。
当然,写Web程序并非难事,但是要成为Web技术的高手,却并不容易。