原文 发表于2013年5月10日星期五
这应该是一个能吸引注意力的好标题。我最近一直在思考这个问题。在 HMB 参与招聘过程的一部分是思考人们是谁,他们在我们为他们考虑的角色中表现如何,以及他们是否会对此感到快乐。
什么是一个好的程序员?兴奋 。这基本上就是无论你是在谈论一个初级开发人员还是高级架构师/技术负责人。区别在于:对什么感到兴奋。
优秀的初级开发人员
一个优秀的初级开发人员因为对创造事物的兴奋而在他的同龄人中脱颖而出。无论是网站、桌面应用、手机上的东西还是其他什么,好的初级开发人员会说:
"OMG OMG 我刚刚把这个东西变成蓝色了。嘿,大家看看这... HOLY CRAP JQUERY!!!"
大多数真正优秀的初级开发人员刚刚发现制造可以与之交互的东西是多么令人兴奋。他们对战术问题解决和设计更具战略性的解决方案感到兴奋,但这肯定是次要的:
当你是一个新开发人员时,一切都是通过构建东西来学习新思想。你不知道你不知道什么,而且你不知道很多!每一个新概念都应该让人兴奋,并感觉像是改变人生的。
我相信有例外情况,但对于刚刚毕业的人说他们对中间件感兴趣,我有点怀疑。有一些非常优秀的初级开发人员是硬核代码极客,他们想要构建语言和数据库。这些开发人员未来可能会变得很棒,但在大多数环境中,他们的前几年会很艰难。要对建设东西充满热情!
初级开发人员对于需要活力的团队来说是很好的,但他们需要更有经验的人来担当锚。
优秀的中级开发人员
中级开发人员应该有更广泛的让他们感到兴奋的事情。这部分是因为开发人员接触到了更多的东西,并且擅长新的类型任务。另一部分是简单的厌烦;如果你已经构建了9次小部件,第10次构建它就不那么令人兴奋了。一个好的中级开发人员会说:
"我们去年解决的那个库,今年用它来建造一个巨大的杀手机器人。我相信我们已经解决了所有的bug。" 1
中级开发人员开始思考业务问题,不再把所有问题都看作代码问题。他们意识到,解决问题是我们所做的,而不是编写代码。然而,代码仍然是他们关注的焦点:
中级开发人员应该仍然对构建事物充满激情,但他们应该开始看到大局。他们仍然会低估需要的时间,并且会陷入第一个看到的兔子洞。
这些开发人员对有一个高级人员可以让他们集中注意力和参与度的团队来说是非常有价值的。没有这种聚焦,他们往往会过度。一名初级开发人员不知道TDD是什么。一名中级开发人员希望一直TDD所有东西!
优秀的高级开发人员
软件开发的老牌大胡子(或非胡子的情况)是一个极其重要的群体;许多组织低估了他们的价值,甚至如果他们足够老还会对他们进行歧视。不过那是另一篇博文的话题。
胡子里满是知识
一个好的高级开发人员可以构建东西并仍然喜欢这么做,但对一个团队来说非常重要,因为他或她提供了方向、稳定性以及偶尔的直觉感到有什么不对劲。有时候,唯一能看到问题巴士的方法就是过去被它撞过。
"我很确定巨大的杀手机器人不是个好主意。我们20年前在用COBOL做这个的时候几乎丢了加拿大。让我们改建一个Web应用吧。"
一个真正优秀的高级开发人员在编写代码时可以跟上年轻人,但真正的价值在于找到解决方案。他们生活的目的就是了解系统并弄清楚如何对齐关键部分:
一个好的高级开发人员或两个在团队中帮助教初级开发人员如何做新事情,并防止中级人员过于使用他们的技术锤子。他们知道什么时候使用工具,什么时候不用。他们意识到代码不是解决方案,找到其他方法解决问题。
结论
优秀的高级开发人员和初级开发人员之间的最大区别在于全局和战略性的东西。无论哪种情况,一个好的开发人员都对构建东西和解决问题充满激情。随着经验的增长,他们感兴趣的事物的宽度应该增加。
你同意还是不同意?请在评论中告诉我我哪里错了:)
来源:What Makes A Good Developer?
1. 你应该始终有100%的目标识别代码覆盖率。你真的不想通过艰难的方式得知这一点。