发布于 2026-01-06 0 阅读
0

如何衡量自己的开发能力? 追逐不断变化的目标 过度自信 vs. 自信不足 其他资源列表

你如何衡量自己作为开发者的能力?

跟踪移动目标

过度自信与自信不足

列表

更多资源

作为职业发展者,我们自然希望衡量自己的进步。我们希望看到自己已经走了多远,并展望未来想要达到的目标。我们想知道自己现在的水平如何,并了解未来还能提升多少。

跟踪移动目标

软件开发是一个新兴、多元化且不断发展的领域。因此,我们所需的具体知识和技能可能日新月异,年年更是如此。在这样的环境下,不仅要不断提升自身能力,更要擅长自我评估。就像飞行中的飞机一样,我们需要定期检查方向,确保自己正朝着正确的方向前进,并根据需要进行细微或重大的调整。

制定这些衡量标准本身似乎就是一项艰巨的任务。软件领域年轻、多元且瞬息万变,涉及多种不同的能力,衡量自身能力的方法也多种多样。这似乎意味着没有一个明确的方向,而是有很多方向可供选择。

没有唯一的真理来源,没有先知或导师可以告诉我们做得好还是不好,我们有哪些不足之处,我们有哪些优势,以及如何从我们现在的位置到达我们想去的地方。

面对如此众多的选择,我能想到的唯一办法就是缩小范围,聚焦于少数几个我天生就感兴趣且能投入其中的领域,或者为了做好工作我必须了解的领域,又或者在这些领域能带来巨大的职业发展和薪资增长。然后,集中精力学习这几个领域的所有相关知识。

过度自信与自信不足

缺乏自信会让我们意志消沉,但反过来,过度自信也会带来风险。如果我们对自己过于苛刻,可能会产生负面情绪,并在薪资谈判中低估自己的能力。另一方面,如果我们对自己过于宽容,则可能高估自己的能力,导致客户失望、项目失败、职业发展受阻,甚至因为期望过高而无法协商到合理的薪资。

我们或许真正想要的,是对自身进行客观的评估。我们希望在应该担忧的地方感到担忧,以此激励自己不断进步。但我们也希望在应该感到自豪的地方感到自豪,这样才能庆祝自身的进步,并思考下一步该如何走。

列表

在这个行业工作了 10 多年后,我认为自己对“优秀开发人员”的含义仅仅触及了皮毛。

然而,由于最近我一直在思考自我评估的问题,所以我决定列出我正在使用的自我评估方法。这份清单肯定并不全面,我很想了解你们的自我评估方法。请在评论区分享。

0. 直觉

通过反思自身,你可以初步了解自己在个人发展中所处的位置。这些直觉或许模糊不清,尚不清晰或连贯,但它们可以作为自我评估的起点。

例如,我有时会直觉地觉得我写的一些代码可能无法在所有情况下正常运行。最终,我将这种模糊的感觉细化为一个更具体的问题——即如何满足代码中所谓的“边界情况”或“边界条件”。由此,我开始专注于学习单元测试、断言以及如何推理边界情况。这种直觉的价值在于,尽管起初并不清晰,但它促使我明确需要学习和改进的具体领域,并采取相应的行动来解决这些问题。例如,阅读相关书籍和文章。

如果你直觉上觉得有些事情不对劲,但又说不出哪里不对劲,那可能只是需要你花更长的时间思考,并收集更多相关的数据,直到你有了更清晰的想法。

1. 成就

回顾过去的成就,可以让你更深入地了解自己的能力、擅长之处以及整体效率。由此,你可以找到可以做得更好或更出色的不足之处。

我喜欢记日志,记录我参与过的软件项目中各种大大小小的成就。如果我解决了一个网络问题,我会记下来;如果我按时交付了一个复杂的项目,我也会记下来。把这些成就写下来,可以防止遗忘,还能把它们集中放在一起,方便日后回顾。

回顾这些成就,您可能会注意到一些反复出现的主题或相似的成就组合。您可以找出自己的优势和能力领域。也许您经常为客户带来一些创新。也许您编写的代码非常可靠,几乎不会出错。也许您擅长快速排除故障。

你的成就可以揭示你的不足之处。如果你总是能快速完成工作,或许你在质量方面有所欠缺。如果你总是构建运行速度极快的系统,或许你不太擅长编写易读易维护的代码。无论你的优势是什么,你都可以找到与之对应的薄弱环节。你不必样样精通(没有人能做到!),但你可能会注意到一两个方面值得改进。

2. 付款

薪酬是衡量自我提升方向的重要指标。将你目前的薪资或最近的薪资与你过去的薪资,或者与其它职位的公开(或实际)薪资进行比较,可以让你了解自己的薪资趋势与行业趋势的对比。此外,金钱本身也是一个重要的衡量标准——毕竟,金钱对我们的个人生活有着非常真实和切实的影响——至少对我们这些并非千万富翁的人来说是如此!

薪资受多种因素影响,并非所有因素都在你的掌控之中。然而,通过分析工作和薪资,你通常可以找到与高薪相关的因素。

这些因素可能包括以下一项或多项:

  • 领导团队的能力
  • 能够快速学习和应用一项热门新技能。
  • 学习和运用高难度技能的能力
  • 完全掌握一项技能的能力
  • ETC。

技能短缺往往会导致薪资上涨,至少部分原因是技能短缺。如果某项技能稀缺,通常是有原因的,而且往往是因为这项技能具有挑战性且难以掌握。如果你专注于学习一项此类高难度但需求量大的技能,那么你就可以直接且积极地影响你的薪资水平。

薪资信息来源包括:

  • 招聘网站
  • 讨论区
  • 与业内人士的非正式对话
  • 招聘代理

3. 工作描述

一个现成的自我评估来源是职位描述,你可以将你当前的技能与职位描述中列出的所需技能进行比较。

浏览大量职位描述,你会发现一些共同的主题和要求。优先考虑薪资最高、工作内容最有趣、工作环境最佳或其他吸引人的职位,你就能大致了解自己与理想工作之间的差距,并以此为基础,确定自己需要提升哪些技能。

职位描述中可能会列出一些你目前尚不具备的特定知识或技能。这时,你可以先通过网络搜索、与同事讨论、阅读书籍或文章片段等方式,对该领域进行初步了解。这种初步了解并非旨在面面俱到,而只是为了让你大致了解该领域的复杂程度和难度,以及进入该领域需要付出多少努力。你还可以观察自己的主观感受——比如,你对从事该领域的工作感到多么感兴趣或多么乏味——以此来评估自己投入所需精力的积极性。

有了这项研究,再加上一些自我反思,你就能缩小范围,找到几个甚至一个具有挑战性的领域,集中精力投入其中。经过几个月或几年的专注钻研,你或许能在该领域达到一定的熟练程度,从而有效地推销自己,找到相关领域的工作。几年后,如果这个领域足够大,你甚至可以以此为基础发展出一番事业。在我曾经工作过的某些领域,情况正是如此。

4. 技术测试

任何好的技术测试都应该对你有所挑战,即使挑战程度不大。通过观察你觉得测试难点在哪里,你可以找出自己的不足之处,并加以改进。

技术测试尤其有效,因为它与你是否能获得工作机会直接相关。因此,它与现实情况的联系比自学更为紧密。在技术测试中,你可以接受一位真实面试官的评判,而不是仅仅依赖职位描述、书籍、文章等静态信息。当然,与任何信息来源一样,你必须进行批判性思考,不要把任何一位面试官对你的评价奉为圭臬,也不要认为它适用于所有情况。

技术测试的另一个优点是,它通常具有其他学习方式所不具备的压力。测试必须在特定的截止日期前完成,并且/或者达到一定的质量标准。有时,测试中的说明比较模糊,因此,问题的一部分在于弄清楚具体的需求(包括功能性和非功能性需求),然后交付成果。这种从模糊的场景中构建清晰问题的过程本身就是一种可以培养和提升的能力。

我喜欢详细记录每次技术面试的情况,包括哪些方面做得好,哪些方面做得不好,以及最终结果如何。如果面试失败,我会记下面试官的反馈,以及如果再给我一次机会我会如何改进的想法。

5. 工程能力模型

学术界和工业界都已开发出用于衡量工程能力的模型。您可以将这些模型中列出的能力与自身的能力进行比较,以发现差距或差异。

用于对工程能力进行分类和描述的正式模型由来已久。例如,美国工程学会协会就发布了《工程能力模型》。虽然这些模型可能显得过于学术化,脱离实际就业市场,但我们仍然可以从中获得非常有用的见解。

例如,上面提到的模型包含以下内容:“预见或识别问题的存在”。这一点我很少会想到。我常常过于专注于解决手头的问题,以至于忽略了退后一步思考是否存在其他潜在的问题,而这些问题我可能根本没有考虑到!

在《数据库可靠性工程》 (Laine Campbell 和 Charity Majors 合著)一书的开头,作者给出了一个非常具体的例子:“你可能会说,我只需要报告 API 成功处理的请求百分比。好吧……由谁来报告?API 本身报告吗?这显然是个问题,因为如果你的负载均衡器宕机了怎么办?” 这就是一个需要你主动寻找的问题,而不是被动地被它击中的例子!

最近,一些软件公司发布了自己的能力模型。例如,CircleCI 的工程能力矩阵以及 Clara 的 Kevin Lochner 的演讲“工程能力”

以下是 CircleCI 矩阵中的两个示例:

  • “在采取行动时,权衡成本和价值,以便采取最经济的行动。”
  • “了解组织的监控理念,并能据此调整和改进团队的监控工作。”

我给自己打了个绿勾——过去我曾多次主动这样做,甚至在阅读 CircleCI 的矩阵中的相关内容之前就这样做了。

然而,第二个问题让我犯了难。什么是监控理念?当前的监控最佳实践是什么?哎呀!我肯定需要提升这方面的技能。幸运的是,我找到了一些不错的资源,比如《构建微服务》(Sam Newman著)一书的第八章——监控。

6. 将自己与他人比较

与许多流行的说法相反,我认为将自己与他人比较(甚至模仿)是有益的,尤其是在你能找出哪些习惯和行为使那个人达到了与你想要达到的类似地位时。

与他人比较的一个好处是,你无需冒险尝试新事物,也无需担心成功与否。相反,你可以观察他人的成功,反向推导其原因,然后思考如何才能取得类似的成果。如果你和对方关系足够好,甚至可以直接询问他们如何才能达到他们的成就——他们或许会分享一两个秘诀!

我职业生涯早期就遇到过这样一个例子:一位同事积极乐观的态度令人印象深刻。他并没有纠结于当时诸多不利因素,而是积极地提出各种积极的想法和优势。这种积极的态度,加上恰当的沟通方式和场合,使他更容易获得同事和上级的青睐,因为他给人的印象是既有能力又有意愿去创造佳绩。

我还能想起许多类似的例子,观察人们在特定情况下如何表现,以及这种行为如何为他们带来积极的结果。此后,我效仿了这种行为,并取得了类似的成功。

7. 来自他人的反馈

寻求反馈是了解自身改进方向的绝佳途径。如果你主动提出反馈请求,并允许对方对你提出批评意见,那么你就能充分利用他们的评论。

需要注意的是,批评本身可能有效,也可能无效。但几乎可以肯定的是,批评会揭示一些真实且有用的信息。即使是最不准确的批评,如果你能从中提炼出一丝真理,并考虑到所有相关因素、对方的动机等等,那么你就可以利用这些真理来指导自己的自我提升。幸运的是,绝大多数批评都是出于好意,接受批评更有可能让你进步而不是阻碍你。

8. 知识差距

最后,我们还有各种更传统的知识和学习来源——书籍、文章、课程、论文等等。这里有价值的不仅是知识本身,还有这些知识所揭示的关于你以及你的优势和劣势方面的信息。

如果你打开一本从未读过的技术书籍,读了几页就感觉非常熟悉,甚至能猜到整本书的内容,那么恭喜你——你可能已经掌握了这门学科!如果不是,那么在继续阅读之后,你或许就能开始发现自身知识与作者知识之间的差距。这些差距正是你应该重点关注的地方,以便提升自己的知识水平。

你可能在很多方面都存在需要改进的地方。就我个人而言,数学就是一个需要大幅提升的领域。我可以通过阅读新的数学资料,观察自己理解了多少、不理解多少,来大致衡量自己的进步。几个月前,几乎所有类型的数学,99% 对我来说都难以理解。现在感觉能理解的程度接近 91%。这是一个虽小但确实存在的进步。看到自己能够更好地阅读和理解数学资料,这激励着我继续努力提高数学水平。


以上就是我用来衡量自己在软件开发学习和进步过程中所采用的方法概览。

希望这篇文章对您有所帮助,并能引起您的共鸣。

请在评论区留下您的想法。我相信我不是唯一一个在衡量和提升自身能力方面苦苦挣扎的人,看到其他志同道合的人也在朝着更高的水平迈进,总是令人欣慰的。这无疑是一条漫长的旅程,但沿途的风景也十分宜人!


更多资源

以下是一些关于类似主题的文章和书籍:

文章来源:https://dev.to/conw_y/how-do-you-measure-yourself-as-a-developer-24m1