软件开发团队中的两种人:发烧友和实用主义

本文讨论了程序员中两种不同类型的职业规划,一种是以软件开发为兴趣的人生;一种是以只要代码能运行的实用主义人生。兴趣主义和实用主义在一个团队开发中都是需要的,各方都有长短,应该通过合作取长补短,不应该厚此薄彼。

在一天结束时,你已经完成了工作,然后回家 - 这时你再也无需花费任何自己的空闲时间再编程(不用加班)。这很好,因为你的生活中还有其他的事情发生。但是你的同事每周多花20小时以上时间加班编码,所有这些意味着他们最终可能会比你变成水平更高更好的程序员,他们会得到更多的报酬。这是不是很让人沮丧?到底加不加班呢?

其实这种因果推论不一定是真的。

因为上面结论是基于错误的假设,误解了成为优秀程序员所需的技能。 热爱编码并将编程作为爱好的人是有其独特价值的,但是即使加班付出了更多额外的编码时间产生更好的技能 - 通常是一个非常可疑的假设 - 如果他们采取的编程方法本身不行,花费更多时间也不一定有效果。(如同学习方法不对,学习时间再长也不一定有效果)

但是,除了很小的编程项目以外,大部分项目都是团队合作,需要各种技能,知识和思维方式。将编程视为工作的程序员(我们称之为实用主义者)的思维方式与兴趣驱动的发烧级程序员其实都是一样有用。

要理解为什么会得出这个结论,让我们通过研究发烧级程序员的生命周期,看看他们的技能如何发展,并将其与实用主义者的方法进行比较。如你所见,发烧级程序员,也就是视编程为爱好的程序员和实用主义有各自不同的优势,软件团队可以从两者中受益。

发烧级编程爱好者的路径
爱好者的出发点是由于对编程的热爱:他们喜欢编写代码。他们喜欢编写软件,并了解他们使用的技术的复杂性。

随着时间的推移,他们变得更加熟练和经验丰富,他们不断扩大了视野和观点。他们不想只是编写代码,而是想写出优质的代码和高质量的代码:他们希望为自己的工作感到自豪。所以现在他们不仅关注编码的乐趣,还关注测试等不太有趣但重要的学科。

如果他们的技能和经验不断增长,他们最终会达到他们将代码视为工具的地步:代码是达到目的的一种手段。是的,软件依然很有趣,但还是需要编写来实现特定的目标。在这一点上,代码质量变成不是那么明显的客观标准了:每种情况都不同,在一种情况下有效的方法在另一种情况下不起作用。

优势和劣势:爱好者通常对他们使用的工具和技术掌握很强。另一方面,他们有时容易出现神圣的斗争和狂热(他们认为选择最好的工具很重要),直到他们终于认识到软件是一种手段而不是目的,如果他们向着目标不是关于写软件方向前进时就会很难。

实用主义者的道路
发烧爱好者的弱点正是实用主义者的强项。实用主义者开始就将软件视为一种手段直至结束:他们会告诉你“我喜欢编写软件,但大多数情况下我更关心软件能让我做什么”。那么,爱好者可以花多少时间来学习 - 专注于目标呢?而这些对于实用主义者是那么地自然。

当然,如果实用主义者不主动专注于学习,他们有时会因对工具和技术的缺乏理解或理解不够而受到影响。这可以通过在工作中学习来减轻,并确保提高对可用技术的认识。

软件不是竞争对手
随着时间和实践的发展,爱好者和实用主义者的力量可以相互融合。即便如此,不同的人通常会以不同的技能,不同的方法和不同的软件构建方式合作。

这是应该的。软件项目太大,无法由一个人构建,太复杂,不能被一个观点所左右。

当你将自己与同龄人比较时,你不应该忽视自己的弱点,但你也应该重视自己的优势。你可以也应该向你的同事学习,但有可能你可以教他们。

Only code at work? That doesn’t make you a worse p