Friday, January 29, 2010

Practicing Programming

英文还是中文,倒确实是个问题。写多了英文,有时候就觉得,英文没学好,中文也成了半瓶醋。所以这一篇拿汉字写吧,按照ESR的说法,用母语写作也是个很重要的能力 :)

这篇文章主要是推荐几篇跟编程相关的文章。我本人还没法回答“如何提高编程能力“这样的问题。

为了解决我周期性的迷茫(如何提高编程水平),今天读了一些文章,包括看过几次的 How To Become A HackerTeach Yourself Programming in Ten Years。然后找到 Steve Yegge 写的这篇 Practicing Programming,我觉得很值得(硬着头皮)从头读到尾 :)

编程是独特的,因为多数程序员不训练自己的技艺,至少不像其他专业领域的人一样特意、专门地训练,比如音乐家们都有严格、有效、多年传承下来的练习方法,运动员每天都刻苦训练;我开始健身这两个月,也看到了练健美的人都很熟悉自己的每一块肌肉,有清清楚楚的训练计划,能够一天一天的稳步增长。但(多数)程序员不太一样,至少这个论断适用于我自己,也就是觉得自己了不起,自己用的技术了不起,别人和他们的技术是那么的丑陋、那么的落后啊 :D

再者,编程不像健身,肌肉的锻炼方法都很清楚,不像音乐,整个体系都很完善。对于程序员,从来没有人能发明一个合理的评估方法,而且也没有什么训练体系。多方面的原因导致,没有多少程序员会像一个吉他手或者一个健美先生一样坚持训练自己。

以上多数都是另一篇 Being the Averagest 的观点,也很值得一读。

我倒是明白训练很重要,不过我一直以来的困惑就是该如何提高自己,读了那么多书本,那么多文章,到现在还是很困惑。计算机技术有那么多,从哪入手?读代码?有那么多的代码,内核、驱动、桌面,真正看起来不过是一堆的变量和函数嘛。写代码?说起来很丢人,可是不知道写什么东西。

Practicing Programming 讲的就是_如何_训练,提出了一些很启发人的观点(虽然,我还是困惑...)。作者将其总结成了几条 Practice Drill。

比如,经常更新自己的简历,列出自己所有的技术,看看哪些技术在100年后还是被需要的,据此给自己打打分。当然,我觉得100年有点长,整个计算机行业还没多少年呢,但可以想想30年的时间跨度,也就是上世纪八几年跟今天的对比。也就是 Sun 公司从成立到被收购的时间...

另一条,列一列你敬仰的程序员们,写写他们有哪些地方做得让你敬仰,也就是你希望自己能做得一样好的地方。

学音乐的人都会了解几百年来的音乐大师,练健美的人也都熟悉施瓦辛格... 所有专业领域的人都会学习本专业的历史,所以,看看维基百科上的这个列表,List of pioneers in computer science,随便挑一个,读读他的事迹。我个人觉得这一条相当棒,最值得实践。

别的就不抄了,比如读别人的代码等等。

这篇文章感觉很有帮助,首先程序员需要知道编程也是要训练的(Being the Averagest),然后要知道有什么训练办法,而且我们能够借鉴其他专业,他们都发展了那么多年,积累了那么多的经验。文中就跟音乐类比了很多,提出了不少类似的地方。
blog comments powered by Disqus