雷军:想给程序员几点建议!不喜欢的不要勉强自己( 二 )


6 编程是技术,更是艺术有人认为编程是一种熟练工种,也有人把编程说成是艺术创作 。我们换个工种来看,石匠应该是熟练工种,属于工人,更和艺术似乎沾不上边 。但正是这些石匠,给我们留下多少文物古迹,如乐山大佛、莫高窟等等 。应该说这些石匠给我们留下了无穷的文化财产 。现代软件工业已具相当规模,很多软件的完成需要的是大兵团作战 。一名普通程序员接受编写某一模块的任务后,往往只是写代码,发挥的余地很小 。在大项目中,很多程序员只能了解到和自己所编模块相关的很局部的细节,另外还受到开发环境的限制,真的很难体会到自己在从事"艺术"创造,更多的时候是感到自己在从事重体力劳动 。有的时候还担心自己苦苦参与的这个项目究竟有没有意义,是不是在同类产品中有竞争力,会不会开发出来以后就因为硬件的发展,操作系统的换代而过时……编程应该说两种属性都有 。编程不仅仅是技术,也还是艺术 。编程是技术活,才有可能大规模进行,才会有软件工程和软件工厂 。也正是编程是艺术,才会有如此多的好产品,让大家如痴如醉 。
7 必须像工匠一样写够十万行代码,又须像写诗一样来写代码程序员像木工一样,熟能生巧 。程序员必须写足够代码量的程序,才会有感觉,这是一个苦力活,没有任何捷径可走 。计算机是一门实践性的科学,没有动手能力做支撑,很难做出好的科研成果 。我的一个学长是美国卡内基梅隆大学的博士,卡内基梅隆大学计算机系在全世界都非常出名,他说每个博士生必须写十万行代码才能毕业,卡内基梅隆大学博士生进任何一个大企业基本不用面试 。而国内培养的大部分研究生、博士生,动手能力都偏弱 。没有写过足够代码量的程序员,想成为高手是不可能的,只能纸上谈兵!
8 那么,怎样像写诗一样写代码呢?很简单,买几本经典的编程书,把书上所有例程全部重新写一遍,逐个比较和书上范例的差距,一步一步改善自己编程的风格和技巧 。时间长了,自然就能写出像书上例程一样的代码,甚至可以比书上写得好 。基础扎实后,多看看Linux等系统级的源代码,看看高手是如何写的,就有感觉了 。通读一下MSDN中所有的资料,这样就“读书破万卷,下笔如有神” 。还有,一定要牢记软件工程的铁律:可能出错的地方一定会出错 。每个变量都做初始化,引用每个参数都要做有效性检查,在可能出错的每个地方都要做边界条件检查,这样开发出来的程序一定会稳固很多,就是出错也很容易修改 。野路子出来的高手,一般开发速度很快,但做完后Bug会很多,经常需要很长时间修改 。而真正的高手,追求的境界是Bugfree code(零缺陷代码) 。