伟大的黑客!

2020-12-21 16:38:32

我非常喜欢阅读Paul Graham的最新文章Great Hackers。他的讲道写得很好,我认为当他向OSCON的合唱团宣讲时,他的讲道非常出色。

格雷厄姆(Graham)描述了一个“伟大的黑客”的概念,他似乎将其粗略地定义为一个生产力比普通程序员高出几倍的程序员。 (请注意,有些人使用" hacker"一词来描述从事非法活动的程序员。此含义在此处或在Graham的论文中均不适用。)然后他提出以下问题:

您如何识别[骇客]?您如何让他们来为您工作?"

请仔细注意:格雷厄姆的假设是我们实际上确实想雇用这些伟大的黑客,但他从未解释原因。

我承认这个假设是直觉的。毕竟,不是每个公司都想要他们可以雇用的生产力最高的员工吗?

Graham通过解释他们对编写代码的内在动力和热情开始了对伟大黑客的描述:

他们的定义素质可能是他们真正喜欢编程的。普通程序员编写代码来支付账单。伟大的黑客认为这是他们为娱乐而做的事情,并且他们很高兴发现人们会为此付出代价。

在这一点上,我们同意。最好的开发人员只是喜欢创建软件。他们得到报酬,他们的报酬很重要,但这并不是他们编写代码的主要原因。他们在获得报酬之前就编写了代码。他们即使中了彩票,也会继续写代码。当我雇用开发人员时,我正在寻找这种品质。

但是,格雷厄姆(Graham)的论文的其余部分很好地解释了为什么许多小型ISV可能不希望雇用“伟大的黑客”。简而言之,伟大的黑客通常是非常挑剔的人。

Graham解释了一个众所周知的事实,即伟大的黑客对他们使用的工具,平台和技术非常挑剔:

好的黑客发现使用不好的工具实在难以忍受。他们只会拒绝使用错误的基础结构进行项目。

工具不好?基础设施错误?格雷厄姆听起来像他是对的。没有人会反对伟大的黑客深深地关心这些选择的想法,对吗?

不幸的是,格雷厄姆继续解释了伟大的黑客对“不良工具”的含义。和“错误的基础架构”。他用很宽的画笔绘画,发现伟大的黑客不使用Windows和Java之类的技术。他们更喜欢Python和Perl之类的语言。他们宁愿尽可能使用开源技术。

我并不是说我是一个伟大的黑客,但我确实对这种挑剔感到同情。我对技术也有类似的宗教偏爱。我真的很喜欢Python。我的个人服务器运行Debian。重新安装Windows机器时,我首先安装的是emacs和cygwin。

但是,我在ISV工作。我喜欢构建软件,但是SourceGear并不是我的爱好,而是我的职业。我们向用户出售产品。我们已经学会了根据自己的偏好来重视用户的需求。

Graham似乎建议,如果我们选择基于伟大的黑客偏爱的技术来构建我们的产品,那么我们很有可能能够雇用他们。这种观点可能是正确的,但它忽略了技术选择对市场产生影响的事实。我已经多次写过关于这个话题的文章:

法律#21:"这些看起来似乎不是营销决策,但确实如此。技术选择对营销有重大影响。选择平台时,您可以定义市场的最大规模。"

Geek Gauntlets:"我们需要谈论客户想要什么,但是我们自己的喜好会成为障碍。我们经常在讨论中带来技术偏见和偏见,而往往没有意识到它们可能引起的问题。"

小心构建位置:"作为小型ISV中的开发人员,我们的生产力固然重要,但它必须排在用户的舒适度和偏好之上。"

伟大的黑客的更高生产率是一个巨大的优势,但可能不足以克服我们出售用户不想要的东西的企图。

如果格雷厄姆是对的,那么一个伟大的黑客就是一个相信自己的偏好比做对用户最有利的事情更重要的人。小型ISV不需要这样的人。

Graham继续解释了伟大的黑客从事有趣的项目有多重要:

除了好的工具,黑客还希望有有趣的项目。很容易说出什么类型的问题并不有趣:在那些问题上,除了解决一些大的,明显的问题之外,您还必须解决很多讨厌的小问题。最糟糕的项目之一是编写与一个充满错误的软件的接口。

再次,我很同情。我也喜欢有趣的东西。我的待办事项清单告诉我,我应该对我们的在线商店网站进行一些改进。坦白说,这个编程任务对我不太感兴趣。我承认我在拖延该特定任务。

但是,我在ISV工作。我喜欢构建软件,但是SourceGear并不是我的爱好,而是我的职业。我们向用户出售产品。现实是,很多高利润的软件开发任务并不是很有趣。

格雷厄姆说“"最糟糕的项目之一是编写与一个充满错误的软件的接口。我们的SourceOffSite产品提供了一个基于Internet的界面,可连接到包含许多错误的软件(SourceSafe)。该同一个产品通过一个充满错误的软件(MSSCCI API)来支持与IDE的集成。如果我们曾经是伟大的黑客,并且因为没有意思而拒绝从事这项工作,那我们将错失数百万美元的收入。

如果格雷厄姆是对的,那么一个伟大的黑客就是一个不愿意做任何需要做的有趣事情的人。小型ISV不需要这样的人。

较大的公司通过对公司进行分区来解决问题。通过建立独立的研发部门,员工不必直接为客户服务,他们就可以使聪明的人为他们工作。讨厌的小问题。

您可能不必走极端。自下而上的编程建议了另一种划分公司的方法:让聪明的人作为工具制造者来工作。 ...这样一来,您也许可以使聪明的人编写99%的代码,但仍然保持与传统研究部门相同的对用户的保护。

在小型ISV中,这种态度是一个大问题。我承认在处理编码问题时被打扰令人沮丧。我承认用户有时会提出愚蠢的问题。我承认,编写大量代码比弄清楚有人如何弄乱他们的Web.config文件更有趣。

但是,我在ISV工作。我喜欢构建软件,但是SourceGear并不是我的爱好,而是我的职业。我们向用户出售产品。这里没有什么比我们的用户更重要。没有。

去年,我写了一篇文章,声称小型ISV应该只雇用" developers&#34 ;,我将其定义为也是以非编码方式做出贡献的程序员。本文的论文陈述说:

"就本文而言,是"程序员"是只编码新功能并[如果您幸运的话]修复错误的人。他们不写规范。他们不编写自动化测试用例。他们无助于使自动构建系统保持最新状态。它们不会帮助客户解决棘手的问题。他们不会帮助编写文档。他们对测试没有帮助。他们甚至不阅读代码。他们所做的就是编写新代码。在小型ISV中,您不需要公司中的任何这些人。

如果格雷厄姆是对的,那么一个伟大的黑客就是一个不愿意帮助使用他创建的软件的人的人。小型ISV不需要这样的人。

就像我说的那样,我非常喜欢Graham的论文。他通过列举所有最糟糕的素质来描述伟大的黑客,但是,这篇文章仍然使我们想要佩服这些超级高产的人。很好的写作。

但是这篇文章引起了人们的关注。 我担心很多小型ISV都会阅读他的文章,并认为他们需要雇用优秀的黑客。 当伟大的黑客像格雷厄姆所说的那样挑剔时,他们就不值得为此烦恼。 我们想要超高的生产力,我们想要与生俱来的对软件开发的热爱,但是我们不想要所有多余的包g。 代替: 雇用想以多种不同方式为产品成功做出贡献的人。 可以敬畏这些伟大的黑客。 但实际上,小型ISV最好聘用专业人员。