解决方法

找出一组常用的工具并关注它们。最好这些工具都是你不再需要阅读文档的——要么你心里知道所有最佳的使用方法、难点问题和FAQ,要么你已经把它们写在了博客、wiki或者你选择的任何“记录所学”的地方。有了这些知识,你就能对工作中的特定部分提供可靠的时间估算,从而将风险限制在新的、未探索过的领域上。

仅因为这些工具是你常用的并不意味着你应该常向别人推荐它们。有时,可用于完成工作的最佳工具并不是你最熟悉的工具。此时,你必须决定自己的生产率重要还是团队的生产率重要。你对Struts熟悉得不能再熟悉了,但这并不说明它一定好用。

然而,还是会有些工具,你一直带着它们从一个项目转到另一个项目。你之所以比接下来将要面试的这个人更有成效,这些工具就是一部分原因。如果遇到问题,你已经知道到哪里寻找答案。你明白这些工具所能解决的问题、所能引起的问题。因此,你也清楚什么时候不要使用它们,这跟知晓什么时候最适合运用它们同样重要。

久而久之,这一小撮工具会让你越来越觉得舒服。好的一面是带来了更高的生产率,但也有风险。如果不小心,你会开始把自己的常用工具视为“金锤子”,认为它们能解决所有问题。还有一种风险是,你会成为这些工具方面的专家,以至于即使出现了更好的工具,你也无法放下它们。

当你需要扔掉工具箱中的大部分工具时,真正的挑战才算到来。有时你的工具会变得过时;也有时你发现已经有了更好的工具。在较少的情况下,由于对“技术发展水平”了然于胸,你会发明一些超越已知工具的东西,使之不再必需。

在一个不断发生剧烈变化的时代,坚持学习的人才是未来的继承者。博学的人们常常发现自己有能力生活在不复存在的世界中。

——Eric Hoffer,《Reflections on the Human Condition》(人类状况反思)

Ade很早就采用了名叫Subversion的集中式源码控制系统。随着Subversion更加流行,会有客户请Ade为他们的项目提供帮助,因为他是这方面的专家。尽管如此,Ade却从一开始就在关注分布式源码控制系统这一新品种的出现。[1]当Subversion变得过时,它在Ade工具箱中的位置将早已被Git[2]或Mercurial[3]所取代。放弃熟悉而又好用的工具是一种让人痛苦的过程,但也是一种需要学会的技能。

我们可以保证:你在学徒期使用的工具到你变成熟练工时肯定会变得过时。最终,你所钟爱的所有工具都将变成垃圾。为了职业生涯的成功,你必须学会从容地获取或放弃一些熟练工具。如何安排支持这一目标的学习过程,是所有学徒在转变成熟练工的过程中所面对的挑战之一。

[1]Ade关于Subversion潜在替代品的研究:http://delicious.com/ade/source-control-renaissance?setcount=100。

[2]最初由Linux之父Linus Torvalds设计并实现,用于管理Linux内核开发的免费分布式版本控制系统,见http://git-scm.com/。

[3]Matt Mackall创建并主导开发的免费分布式源码控制管理工具,主要用Python语言实现,见http://mercurial.selenic.com/。