软件开发团队中的两种人:发烧友和实用主义
本文讨论了程序员中两种不同类型的职业规划
- 一种是以软件开发为兴趣的人生;
- 一种是以只要代码能运行的实用主义人生。
兴趣主义和实用主义在一个团队开发中都是需要的,各方都有长短,应该通过合作取长补短,不应该厚此薄彼。
在一天结束时,你已经完成了工作,然后回家 - 这时你再也无需花费任何自己的空闲时间再编程(不用加班)。这很好,因为你的生活中还有其他的事情发生。但是你的同事每周多花20小时以上时间加班编码,所有这些意味着他们最终可能会比你变成水平更高更好的程序员,他们会得到更多的报酬。这是不是很让人沮丧?到底加不加班呢?
其实这种因果推论不一定是真的。
因为上面结论是基于错误的假设,误解了成为优秀程序员所需的技能。 热爱编码并将编程作为爱好的人是有其独特价值的,但是即使加班付出了更多额外的编码时间产生更好的技能 - 通常是一个非常可疑的假设 - 如果他们采取的编程方法本身不行,花费更多时间也不一定有效果。(如同学习方法不对,学习时间再长也不一定有效果)
但是,除了很小的编程项目以外,大部分项目都是团队合作,需要各种技能,知识和思维方式。将编程视为工作的程序员(我们称之为实用主义者)的思维方式与兴趣驱动的发烧级程序员其实都是一样有用。
要理解为什么会得出这个结论,让我们通过研究发烧级程序员的生命周期,看看他们的技能如何发展,并将其与实用主义者的方法进行比较。如你所见,发烧级程序员,也就是视编程为爱好的程序员和实用主义有各自不同的优势,软件团队可以从两者中受益。
发烧级编程爱好者的路径
爱好者的出发点是由于对编程的热爱:他们喜欢编写代码。他们喜欢编写软件,并了解他们使用的技术的复杂性。
随着时间的推移,他们变得更加熟练和经验丰富,他们不断扩大了视野和观点。他们不想只是编写代码,而是想写出优质的代码和高质量的代码:他们希望为自己的工作感到自豪。所以现在他们不仅关注编码的乐趣,还关注测试等不太有趣但重要的学科。
如果他们的技能和经验不断增长,他们最终会达到他们将代码视为工具的地步:代码是达到目的的一种手段。是的,软件依然很有趣,但还是需要编写来实现特定的目标。在这一点上,代码质量变成不是那么明显的客观标准了:每种情况都不同,在一种情况下有效的方法在另一种情况下不起作用。
优势和劣势:爱好者通常对他们使用的工具和技术掌握很强。另一方面,他们有时容易出现神圣的斗争和狂热(他们认为选择最好的工具很重要),直到他们终于认识到软件是一种手段而不是目的,如果他们向着目标不是关于写软件方向前进时就会很难。
实用主义者的道路
发烧爱好者的弱点正是实用主义者的强项。实用主义者开始就将软件视为一种手段直至结束:他们会告诉你“我喜欢编写软件,但大多数情况下我更关心软件能让我做什么”。那么,爱好者可以花多少时间来学习 - 专注于目标呢?而这些对于实用主义者是那么地自然。
当然,如果实用主义者不主动专注于学习,他们有时会因对工具和技术的缺乏理解或理解不够而受到影响。这可以通过在工作中学习来减轻,并确保提高对可用技术的认识。
软件不是竞争对手
随着时间和实践的发展,爱好者和实用主义者的力量可以相互融合。即便如此,不同的人通常会以不同的技能,不同的方法和不同的软件构建方式合作。
这是应该的。软件项目太大,无法由一个人构建,太复杂,不能被一个观点所左右。
当你将自己与同龄人比较时,你不应该忽视自己的弱点,但你也应该重视自己的优势。你可以也应该向你的同事学习,但有可能你可以教他们。
写在最后
最后,欢迎做Java的工程师朋友们加入Java高级架构进阶Qqun:963944895
群内有技术大咖指点难题,还提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)
比你优秀的对手在学习,你的仇人在磨刀,你的闺蜜在减肥,隔壁老王在练腰, 我们必须不断学习,否则我们将被学习者超越!
趁年轻,使劲拼,给未来的自己一个交代!