0%

读书:《高效能程序员的修炼》

周五看了一本书《高效能程序员的修炼》,感觉有些建议还是很不错的,难得可贵的是,有些观点和我一直以来的想法一样,心有戚戚焉。

这本书的作者是stack overflow的创始人,书还是很值得一看的。

培养写作习惯

在第一章,作者就提出了一个观点:成为一名杰出的程序员其实跟写代码没有太大的关系。做程序员确实需要一些技能,当然,还要有坚韧不拔的精神。除此之外,更重要的还是要有良好的沟通技巧。杰出程序员和普通程序员的区别:能否将想法表达清楚。沟通这个话题一直很大,去Amazon上搜索一下相关的书籍多达几千条。

日常生活中最简单的两种沟通方式就是口头沟通和书面沟通。不得不承认,在沟通这个问题上大部分人都没有刻意的练习过。这两种沟通方式中书面沟通又更为重要,毕竟对时间地点的要求都要小一点,像工作中使用邮件。当然这里并不会介绍如何去写邮件,这个也是我需要学习的。

可悲的是,大部分人的书面表达能力都很有限,特别是程序员。所以程序员更需要去写博客。但是写博客的好处并不止于此。在写作的时候经常要做的一件事是要站在听众/浏览者的角度来看文章。这就要考虑很多问题。比如一篇科普文章一定要有自洽性。每一个专业词汇出现的第一次,可能都需要交代背景。这也是科普文章难写的原因之一。还有一个好处是,在我们写技术博客的时候,相当于又学了一遍,幸运的话会发现很多之前没有发现的知识盲点。提问题也是同一个道理。比如你要提一个技术问题,那么环境、error log等都是要交代的。可能就在你提问题的过程中,自己就想到了答案。一个好的提问和一个好的答案一样重要。这也是stack overflow网站作为一个高质量问答网站的伟大之处。

最后我想说的是,写作的目的是表达清楚,不管是一件事还是一个观点。不是说写作手法不重要,而是过于追求写作手法或者文章的趣味性的话,可能有点舍本逐末的味道。还有一点,实在不建议大家写作的时候掺杂过多网络用语。网络用语不管好坏,都是大众选择的结果,可能迎合大众很多情况下也没有错。但是网络用语的一个问题是生存周期太短,生存周期一过,后期的读者对于文章的一些表达可能就会很费解。

不断练习

如果想要在某方面有所提高,最好的方法就是勤加练习。但是,如果你只骨折埋头写代码,练讨论、反思或者学习的时间都没有,将得不到真正的进步。必须在磨炼工艺与思考如何提高工艺之间找到一个适当的平衡点。

这个话题Steve Yegge也提到过,在其文章《Practicing Programming》中。下面摘抄一些。

与你所相信的恰恰相反,单纯地每天埋头于工作并不能算是真正意义上的锻炼——参加会议并不能锻炼你的人际交往能力;回复邮件并不能提高你的打字水平。你必须定期留出时间,集中锻炼,这样才能把事情做得更好。我认识很多杰出的程序员——这是在亚马逊工作最好的额外“福利”之一。如果仔细观察他们,你会发现他们时时都在锻炼。他们已经很优秀了,但他们仍然不忘锻炼。据我了解,这些杰出程序员之所以如此成功,就是因为他们一直在锻炼。完美的身材要靠定期的锻炼才能获得,而且必须坚持锻炼才能保持,否则身材就会走形。对于编程和软件工程来说,道理是一样的。

那么如何锻炼呢?在Scientific American的一篇文章《The Expert Mind》中有如下表述。

爱立信提出,重要的并不是经验本身,而是“努力的学习”,也就是要不断地挑战自身能力之外的东西。一些狂热的爱好者花费了大量的时间去下棋、打高尔夫球或者玩乐器,但他们可能始终停留在业余水平上,而一个训练有素的学生却可以在相对较短的时间里超越他们,原因就在这里。值得注意的是,在提高水平方面,花费在下棋上的大量时间(即使参加各种比赛)似乎还是比不过专门的训练来得更为有效。训练的主要价值在于发现弱点,并有针对性地进行提高。

所谓“努力的学习”,倒不如说是“略微吃力的学习”。我们需要不断挑战我们能力之外的东西,但是如果太难的话,往往会受挫。如果我们将自己的知识技能简单划分为“舒适区”(游刃有余)和“不适区”(寸步难行),那么我们需要练习的就是位于“舒适区”和“不适区”的地方,不断挑战自己的极限,不断扩大“舒适区”。但是最难的其实不是练习,而是远离“舒适区”。

依稀记得这么一个问答。

“你觉得什么样的人生很酷?”“Stay away from your comfortable zone.”

本来想写的书中的“高效编程的原则”,前面不小心写的有点多了。那么只能下次再说了。