解决方法

找那些走在你前头的人,努力向他们学习。

理想的情况下你将找到一位师傅级的技师,而她愿意收你做学徒。在整个学徒期你将处在她的监管之下,基于师傅的名望来构建自己的未来。然而,在今天的世界上,这种理想情况格外罕见。

我们的领域非常年轻,因此公认的师傅很少。此外,作为学徒,你很难判断到底谁是真正的师傅。因此,更有可能的情况是:你的学徒期被连续的多位指导者监管,其技能的精通度各不相同。

真正的学徒必须融入师傅的生活中,摸爬滚打,重视每一次被关注的机会,特别是跟师傅面对面学习的机会,最好是肩并肩地合作。话虽如此,但有可能你根本接触不到最有影响力并且对你最有帮助的指导者。他们可能生活在一个不同的国家,甚至在很久之前就去世了,比如像Edgar Dijkstra这样的人。但这并不影响他们做你的灯塔,为你照亮前进的路。

如果你最终发现找到的老师不适合自己,那首先应该想想自身的问题。可能你的期望值过高,没有哪个老师能达到。

——George Leonard,《Mastery》(精通),第71页

在尝试“找人指导”时,学徒必须记住:我们都走在“漫漫长路”上,没人知道全部。你很容易觉得自己的指导者肯定是位师傅,因为她知道的东西比你多太多了。你必须抵制这种想法,否则可能因为指导者不可避免的弱点和盲区而幻灭了自己的希望,觉得自己不可能从她身上学到什么了,虽然实际上她还能教你很多。

Dave指到了指导者

到2002年夏天,我已经有了近两年的编程经历,并开始感觉到初学者和经验极其丰富的从业者之间的巨大差别。那年夏天我阅读了Pete McBreen写的《Software Craftsmanship》,这促使我去寻找指导者。这本书让我明白了:如果想成为优秀的开发者,我将不得不去接触更有经验的开发者,并调整自己的学徒期。我已经进入了“提高带宽”的状态,而且刚刚参加了ChAD,即芝加哥敏捷开发者(Chicago Agile Developers)用户组。就是在那里我(不同凡响地)把自己介绍给了用户组的组织者Wyatt Sutherland。读完Pete的书之后,我马上给Wyatt发了封邮件,让他知道我很想有人指导一下。这是一封让人感到不自在的邮件,但却获得了巨大的回报。Wyatt回信建议我们定期在吃早餐时碰个头,讨论一下我们正在做的事情。到第二年,Wyatt成了我非常重要的指导者。虽然我们从未“密切交往”,但跟一个像Wyatt(一个很受尊敬的软件顾问和世界级的大提琴演奏家)这样的人建立关系,对我这个未经训练的程序员新手来说,这是一次巨大的信心提升。Wyatt的指导对我在敏捷软件开发方面的进步起到了关键作用,并且鼓励了我,让我相信自己有能力加入像ThoughtWorks这样的软件开发组织。

找人指导自己,从概念上很容易理解,对学徒期也格外重要,但它还是会很困难。诚然,找到一位作者、技术会议发言者、流行开源项目的代码提交者或者成功网站的开发者并不难。但困难来自两方面。首先,这些人可能没兴趣指导别人;然后,跑出去做一件请求别人“指导学徒”这么奇怪的事情会让自己有说不出的胆怯。这很像那些与“深水区域”有关的风险。要记住,被一位潜在的指导者拒绝或者认为你奇怪的概率并不高,而潜在的回报却是巨大的。即使那人没兴趣收你为全职学徒,邀请她出来共进午餐也会是很有价值的时间和金钱投资。如果你对于精通技艺是严肃的,那就勇往直前地找人指导吧。技术拔尖的开发者都是这么过来的,很少会有记不起指导者曾对他产生过的巨大影响的。

学徒期的训练不会孤立地发生,有人会走在你前面,同样也会有技能水平尚不如你的学徒。寻找指导者是一方面,另一方面你也必须向那些需要你指导的人提供帮助。将自己从指导者那里学到的东西传递下去,要完成到熟练工的状态转变,这是你可以依赖的方法之一。