致年轻开发人员的一封信
摘要:Avdi Grimm将把自己认为重要的作为提升编程能力的几点和大家一起分享,希望对大家有所启发。
我收到了很多年轻开发人员写给我的邮件,希望可以提升自己的编程能力。我肯定不是第一个讨论这个话题的人,所以我不确定还可以说出什么新意。然而,这里我认为还是非常值得列出我认为很重要的几点吧。
- 要跟其他开发者一起工作。我们正处在科技史上的黄金时期,这是第一次,身处何地,雇主是谁变得不那么重要。只要你的网络带宽足够,你就可以与身处地球任何位置的另一位开发者搭档共同编写代码。越来越多我认识的资深开发者都在贡献自己的时间分享这样的知识。我朋友Evan Light有开放办公时间,而且还在开发一个网站帮助 Rubyists 搭档。我也这样做了好一阵了。想要研究FLOSS代码?发邮件给我,我们会把事情安排好。
编注:Rubyist 是指那些对Ruby的关心程度超过常人的人。
编注:开放办公室时间是美国大学的传统,作法是学校每周开放办公室数小时,学生不需事先预约就能和老师面谈。
编注:Free/Libre/Open Source Software 免费/自由/开源软件。
- 阅读经典的书籍。如《代码大全》、《程序员修炼之道》、《程序设计实践》、《设计模式》等。
- 要读 WikiWiki (有时又叫做 WardsWiki)。这一点非常重要。有时我觉得,在我的学习遇到瓶颈时,我就是通过浏览WikiWiki 而得以学到所有我真正需要的东西的。
- 要读一读别人编的代码。为GitHub 喝彩!如果你想以编撰得更好的作品为开始而你又对 Ruby、有所了解,那么就试一试解决Ruby Quiz上的问题。(关于这个话题,Alan Skorkin 写过一篇很全面的文章:《阅读优秀代码是提高开发人员修为的一种捷径》。)
- 加入本地用户组。如果没有这样的群,那就创建一个,然后开始交流。我不在意你是一个多么差劲的菜鸟。要想使你全面了解一个问题,再没有比这更好的方法了。
- 开一个博客。不要担心自己会成为异类。一些最有用的博客其实主要记录了一个程序员的经验和错误以及他们是如何克服困难。反思是学习的最重要的一部分,而写作则会帮助你反思。并且,在你思考之前,你又会从其他程序员那得到反馈。
- 我相信你已经听说过这一点了:为一个开源项目提交补丁。
- 用掷硬币的方式来作决定。正面朝上就选择 Vim,背面朝上就选Emacs。开始学习容易上手的编辑器。这两种中的任何一种都会在你剩余的编程生涯中一直与你同在。强大、灵活的工具能使优秀程序员更加优秀。(编注:看来国外很多程序员都在用Vim或Emacs,Akash Manohar 在《写给即将入行的程序员的一封信》这篇文章中,也是推荐这些工具。)
- 学习多种编程语言。但首先你得学好一种编程语言。你需要一种可以使你得到灵感并且快速掌握的在一天内迅速地写出第一个版本的编程语言,从而不用花费大量的时间去学习你会很容易忘记的语言细节。然而,一旦你已经掌握了这门语言,你就要去学习新的语言,来挑战所有你从之前所学习的语言中学到的假设。要选择风格完全不同的编程语言。我所看过的一本书《七周掌握七门语言》 中就对编程思维模型进行了全面、广泛的概括。
- 为你所使用的编程语言和平台建立邮件列表。人们有时会忘记在博客、Hacker News和推特以外还有很多讨论是非常有益的。跟其它场合比起来邮件列表通常是文明而有用的工具。
- StackOverflow 是你的良师益友。
- 不要花费太多的时间去为某物找寻最好的工具。我过去常常会花费好几天或几个星期,去试着为我即将开始的项目寻找最好的框架,以致我的工作进度停滞不前。不要掉进这个陷阱里。当你已经是个相对有经验的开发人员时,选择那些有很多人在用的语言和框架。在你遇到困难时,知道如何继续下去比选择完美的工具要重要。
- 寻找练习的机会。
- 当然,还有一点就是:练习、练习、练习。上班时写代码。在家写代码。练习 code katas 。编程与其它技能一样:说到底,它的本质还是练习。