解决方法
你一直像使用吸管喝水那样慢慢地汲取知识。但在学徒时期,有时候你必须快速地吸收那些就像从消防水管喷涌而出的、大多数软件发者都能获取到的知识。
对学徒来说,提高获取新知识的能力是关键一步,尽管有时知识会多得让人崩溃。你必须开发一些必要的方法和技巧来高效地获取、理解、维持并应用新知识。该模式不只是要求你读一本书来了解软件开发中你所不熟悉的某个方面。它包含从多个维度去寻求新的知识和经验。比如:
·注册成为博客聚合器的用户并开始订阅软件开发方面的博客(blog)。使用现代的机器翻译技术,你甚至没必要把自己限制在英文博客上。你可以遵循Tim O'Reilly[1]的建议,跨多种不同的技术领域去跟踪他称之为“阿尔法奇客”(alpha geek)的人。[2]这些人不一定是最好的程序员,但总体上讲,他们往往能比我们提前多年感知到新的技术趋势。可以考虑撰写自己的博客来审视你挑选的博客所涉及的主题。
·从Twitter上跟(follow)一些软件大师,留意他们正在做什么。
·订阅流量较高的在线邮件列表,重现别人遇到的问题并尝试回答他们的提问。
·加入一个新成立的对某种新技术比较兴奋的本地用户组。参加时不要老是保持沉默——向小组介绍自己,并向别人提供帮助。
·说服老板送你去参加技术大会。即使他们不愿意付钱让你参加,你也可以从网站上阅读幻灯片,并下载演讲的音频或视频。
·在读完一本书之后,写封简短的邮件与作者联系一下,表达一下谢意,问一点问题。作者、演讲者和大师们看起来会让人生畏,或者看起来很忙,但其实他们常常很乐意跟读者通信交流。
·不要忘了网上有成百上千的在线教程、播客(podcast)和视频(如Tech Talks的广泛系列),可以从iTunes和YouTube免费下载。
随着学徒期优先级的转移,你最终需要关闭这个消防水管,从而能专注于项目工作。但在学徒期中,至少应该有那么一段时间你在使用这一模式。这很重要,不仅因为你在这段时间所获得的知识,还因为它本身就是一种需要开发的技能。熟练工和师傅也会寻找可以运用该模式的机会,来推进他们的职业生涯和职业技能,特别当他们想进军新的技术领域时。
Dave和消防水管
2000年年末,当老板给我一次学习Perl语言的机会时,我便立即开始提高自己的带宽。我觉得自己必须补充很多知识才能跟上,于是在读完几本Perl书之后,便开始寻找所有能让我学到更多东西的机会。我决定让自己尽可能快地达到下一个水准:成为一名Perl开发者,而且我知道每次只读一本书无法让我足够快(我很强,不可以么?)。因此,我加入了http://perlmonks.org,在comp.lang.perl.misc上面提问并回答问题,参加了几次Perl Mongers[3]会议,并开始玩Perl Golf[4](是的,我很强)。这样过了大约一年,我不得不放慢自己摄入知识的速度,以便使自己神志清楚,并准备结婚。但我的确取得了进步,而且有了更多可以支配的资源来应付遇到难题的时候。
之后,在2002年春天,我看了Kent Beck写的《Extreme Programming Explained》(解析极限编程-拥抱变化),并从中看到了一次让自己的成长超越Perl,进入测试驱动开发、极限编程、面向对象设计和设计模式世界的机会。再一次我提高了自己的带宽,读了一大堆优秀书籍,开始参加本地的一个敏捷软件开发用户组,自付路费去参加一次“极限编程/敏捷开发宇宙”(XP/Agile Universe)大会(很幸运,那一年的会议地点离我家很近),加入了极限编程邮件列表,开始阅读相关的博客,之后又开始自己撰写博客。这一段提高带宽过程的产出为我赢得了一份在ThoughtWorks的工作,它是一家跨国的敏捷开发咨询公司。ThoughtWorks带给我的学习机会永远地改变了我们职业生涯和学徒期。
快到2005年年底,那正是我从一名学徒开始转向熟练工的时候,我又看到了一次机会:Ruby on Rails正在登上软件开发的舞台。这次机会使我加入了Obtiva,一家更适合我生活方式的本地咨询公司,在那里我创立了Obtiva的软件工作室,并启动了Obtiva的学徒训练项目。
当你懂得了怎样为自己“提高带宽”,下一步就要理解何时“提高带宽”。在收集并使用新知识的过程中你可能会变得迷茫,特别在这个行业里,获取那些作品丰富的思想家们的最新思想变得越来越容易。一些人会迷失在有趣信息的海洋中,永远没有回到实际的软件制作上来。虽然“提高带宽”充满了乐趣,而且本身就是一项有趣的技能,但对学徒来说,它是到达终点的手段。要审慎地使用这一模式,因为它虽然能加速你的学习,也会降低你的开发速度,因此如果连续使用几个月以上,收益会越来越小。
[1]Tim O'Reilly,O'Reilly Media的创始人,开源运动的支持者。
[2]Tim O'Reilly,"Watching the'Alpha Geeks':OS X and the Next Big Thing"(关注“阿尔法”奇客:OS X和下一个大事件),参见:http://www.linuxdevcenter.com/pub/a/mac/2002/05/14/oreilly_wwdc_keynote.html。
[3]Perl Mongers是国际Perl用户组织的一个较为松散的协会。
[4]Perl Golf是一种竞赛,比赛内容是找出能解决给定问题的最短Perl代码。