开发人员的三个阶段:快速原型设计、过度工程、实用主义、结论、参考文献

2025-05-27

开发人员的三个阶段

快速成型

过度设计

实用主义

结论

参考

这是对我关于测试的文章的一个回复

所以我想,嗯...🤔

三个阶段

图片来源:
https://blog.gardeviance.org/2008/04/three-stages-of-expertise.html

实际上,我已经思考这个问题和我的个人发展好几年了。

首先,我意识到我正在改变很多事情,关于我如何编码以及我如何看待技术和问题。

我从五年级就开始编程了。中学毕业后,我决定放弃计算机科学(转而学习电子工程),因为我觉得编程已经没什么可学的了。我觉得自己就是世界上最好的程序员。

你现在可能已经猜到了,我完全错了。🤦🏻‍♂️

我必须了解软件工程的意义:架构、测试、性能、可维护性等等,我并没有真正考虑过这些是重要的部分,事实上,它们是程序员和软件开发人员之间的区别。

因此,我阅读了大量的文章和书籍,并尝试将所有旋钮调到 11,从而构建出非常复杂的软件,以涵盖可能发生的所有情况。

类似文章有很多。事实上,有很多关于可能阶段的建议,你可以有 4 个、5 个甚至更多(参见参考文献)。所有这些建议都针对程序员工作中略有不同的方面。

从我的角度来看,我将我的个人发展分为三个阶段及其转变:

快速成型

  • 写代码快快快,代码越多越好!
  • 没有或很少自动化测试(参见上面的推文)
  • 没有干净的代码
    • 没有合理的源代码结构
    • 大文件和方法
    • 没有适当的命名(“字母表中有很多字母!”)
    • 到处都是硬编码的值和文件名
  • 没有底层设计原则或架构
  • 其他人无法阅读或理解代码
    • “我可以编写一个正则表达式来解析 XML”
    • “看,那个源文件终于有1000多行代码了!只有专业的程序员才能写这么多代码!”
  • 成为一名程序员而不是软件工程师

过度设计

在几个项目失败后,我阅读了关于我可以做什么的文章和书籍,并尝试应用所有这些,最终

  • 实现未来功能,无需满足要求
    • 使一切可配置、可插入
    • 可扩展性和性能设计
  • 复杂的设计和架构(“我已经应用了所有 GoF 模式!”)
    • 抽象程度高但领域知识水平低
    • 使用最复杂、最深奥的语言特性
  • 100% 单元测试代码覆盖率
  • 从干净的代码开始
  • 学习新技术并尝试立即使用它们
  • 最大程度干燥
    • “让我们把这段代码放进库里吧!”
  • 其他人无法理解代码(但至少他们可以读懂

实用主义

在之前的方法失败后,我尝试了:

  • 只构建必要的内容(YAGNI)
  • 找到一个好的测试平衡点(测试金字塔)
  • 干净的代码
  • 领域特定代码——CarWheel而不是AbstractVehicleRotatingDataItemFactory——不要考虑如何实现某些东西,而要考虑为什么
  • 接受低冗余(DRY)会导致高耦合,并平衡两者
  • 仅在实际需要时(无论是通过专门的要求还是当应用程序运行明显糟糕时)才优化性能或可扩展性
  • 学习新技术,但要了解炒作背后的内容(可测试性、文档、贡献、安全性等),并可能要等到经过实战检验
  • 识别代码异味

结论

这三个阶段并没有得到科学证实。事实上,这只是我通过反思自身得出的结论。甚至可能还有其他我尚未经历过的阶段。另一方面,这似乎也适用于过去15年里我遇到的很多开发者。

您不一定需要将多年的经验分配给这些阶段,有些人可能会跳过某个阶段,或者根据个性、学习或指导的方式将其缩短为较短的时期。

最重要的是:学习永无止境。确保总有人比你更聪明。

我每天都会学到新的东西,我非常感谢我的同事和朋友。

你发现自己有什么相似之处吗?

参考

文章来源:https://dev.to/stealthmusic/the- Three-stages-of-a-developer-hp4
PREV
高效开发人员的 7 个习惯介绍时间管理写作能力终身学习者关注理解代码如何交付价值自律编写易于阅读或测试的简洁代码结论参考
NEXT
你不需要 React 来构建网站