虽然表面上看这根本不是个问题,但深究起来却说法多多。而且更重要的是,我们该如何衡量一位开发人员是否已经由新手成长为资深?
菜鸟和高手有何区别?这真是个问题吗?
有时候,这还确实就是个问题。我无意中听到组内的开发者就此进行讨论,而对话双方恰好是一位资深人士外加一位初级开发人员。
这位高手是我个人合作过的最聪慧也最出色的程序员之一,他用了三十分钟表达自己的观点并陈述二者之间的差异。
随着对话的推进,最初提出这一问题的新手开发者则引出了另外两个非常有趣且值得深入思考的子议题:
1. 作为一名新手,我要如何客观地判断自己何时才有资格被称为“资深开发者”?
2. 作为一名资深开发者,您是如何量化新手的进步程度并认定其已经成为高手的?
问题一
我觉得这个问题很有意思。在讨论过程中,我也开始回忆自己的整个成长过程。
诚然,从业时间对于每位开发者来说都是顺利晋级的必要指标。从招聘信息中就可以看出,众多企业也对此深信不疑——当然,有些人认为5到7年即为资深开发者,而也有些人将从业时长限定在10到15年。但归根结底,必须承认目前并没有真正的“标准”来衡量一位开发者是否已经达到资深水平。
而从开发者自身出发,有些人在经过几年从业后即自信地宣称其已经达到资深水平,而也有些人将目标设定在从业7到10年。很明显,这些论调与实际的、可供参考的知识储备没有任何关系。虽然搞技术的人有点自负情绪也可以理解,但这种极为夸张的认知冲突与失衡可能令各方在此问题上完全无法达成统一意见。
那么所掌握的技术或者语言数量能否说明问题?有一派认为资深开发者只需要掌握一到两种语言,因为只有着眼于一个方向不断推进才能真正达到技术顶峰。然而另一种观点则认为广泛涉猎才是正道,身负多种技术及能力方可解决更为广泛的实际问题。
不过着眼于问题的核心,是否资深仍然取决于我们能否处理好工作内容。而且无论我们被最终评判为新手还是高手,脚下的技术道路还是得一步步自己走下去。
因此经过认真思考,我认为***个问题的答案其实因人而异。如果非要给出一条比较明确的回应,那我认为当一位初级开发者拥有充足的技术能力与信心,可堪肩负企业提出的新任务时,那么其已经可以被视为资深团队中的一员了。
问题二
我们可以利用无数指标进行衡量。坦率地讲,判断资深开发者的工作并不存在万试万灵的方法——至少我是没见过。
当然,测试与考核都能够起到一定作用,我们也应当重视这些评估手段。
但更有趣的是,人们往往并不会立足于对特定技术或者语言的熟悉程度来判定某位开发者是否“资深”。例如,小型企业当中技术管理者往往在交付Java企业应用领域经验丰富。然而,他的日常工作却是考核iOS开发者——而他对这类内容其实所知甚少。
好吧,可能有点跑题了。真正的问题在于,我们应当认真考量考核对象的成长情况。
首先,我们恐怕很难直接为青年人才正确传达成长方面的量化指标。另外,如果非要选择一种指标,那么我仍然坚持问题一中的结论:有能力完成单一或者一系列任务,有信心在规划时间内结束且几乎不需要依赖于他人的协助。
换言之,如果大家仍然在犯刚入行时常见的各种低级错误,那么肯定是跟“资深”二字无缘了。
结论
必须承认,我无法就这个问题给出确切的答案,而只是提供了一项可能适用的讨论指标。
大家对此有何见解?您会使用哪些指标来判断开发者的实际水平?请在评论中分享您的观点~
原文标题:Junior vs Senior Developers: What's the Difference, Anyway?
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】
核子可乐译