分享我的 20 年编程指导原则
原文链接:My guiding principles after 20 years of programming,作者:Alex Ewerlöf,发布于 Jan 23, 2020
我从 1999 年开始编程,今年我已经编程 20 多年了。我从 Basic 开始,但很快就跳到 Pascal 和 C,然后用 Delphi 和 C++ 学习了 面向对象编程(OOP)。2006 年我开始使用 Java,2011 年我开始使用 JavaScript。我有一个宽领域的职业生涯,曾在使用机器人技术、金融技术、医疗技术到媒体和电信的企业工作过。我有很多角色,包括研究员、CTO、TPM(技术产品经理)、培训师、系统架构师或 TL(技术领导),虽然我有不同的帽子,但我一直在编码。我开发了一些为数百万人服务的产品,也有一些在发布之前就失败了。我曾担任顾问,甚至拥有自己的创业公司。我在开源项目、闭源项目和内部开源项目(由公司内部社区开发的专有代码)上花费了大量时间。我不仅在 MCU(微控制器)上编程,还涉及移动和桌面应用程序,以及云服务器和最近非常流行的无服务器(serverless)。
在我的 20 年编程周年纪念日,我试图列出多年来积累的顶级原则 —— 它们是我职业生涯的指导原则。
- 不要与工具作斗争:库、语言、平台等。尽量使用本地开发,不要钻技术的牛角尖,也不要钻问题的牛角尖。学会为工作选择正确的工具,否则你就要为使用你熟悉的工具而找工作。
- 你不是为机器编写代码,而是为你的同事和未来的自己编写代码(除非它是一个废弃的项目或者你正在编写汇编代码)。或者只是写出来供初学者参考。
- 任何重要且有价值的软件都是协作的结果。学会有效沟通并公开协作,信任他人并赢得他们的信任,尊重人胜过代码。以身作则,将你的追随者转变为领导者。
- 学会分而治之。针对特定功能编写低耦合的独立软件模块,做好单元测试和整体测试,确保代码功能正确,避免放大问题。
- 把代码和自己分离。不要让自己成为代码的首选人(唯一的负责人),你要优化代码,让其他人找到方法来修复错误和添加功能。这样你才能解放自己,继续去做下一个项目。记住不要拥有代码,否则你将永远无法脱身。
- 安全性是分层的:每一层都需要单独评估,但也与整体相关。风险是一项业务决策,与脆弱性和概率直接相关。每个产品/组织都有不同的风险偏好(他们愿意为更大的胜利承担的风险)。通常这三个问题相互冲突:用户体验、安全性、性能。
- 你要意识到每块代码都有它的生命周期并且会死掉。有时它在看到进入生产环节之前就夭折了,放手就好。你需要了解 4 类功能之间的区别,以及将时间和精力放在哪里:
- **核心:**就像汽车中的发动机。没有它,产品毫无意义。
- **必要:**就像汽车的备胎。你很少关注它,但在需要时,它的功能决定了系统的成功与否。
- **附加价值:**就像汽车的杯架。 拥有它很好,但没有它,该产品完全可用。
- **独特的卖点:**人们应该购买你的产品而不是你的竞争对手的主要原因。例如,你的汽车是最好的越野车。
- 不要将你的身份附加到你的代码中。不要将任何人的身份附加到他们的代码中,应该意识到人与他们生产的人工制品是分开的。就事论事,不要带偏见地批评别人的代码。
- 技术债务就像快餐。有时它是可以接受的,但如果你习惯了它,它会比你想象的更快地杀死产品(并且以一种痛苦的方式)。
- 在对解决方案做出决定时,一切都是平等的,请优先考虑:安全性 > 可靠性 > 可用性(可访问性和用户体验) > 可维护性 > 简单性(开发人员体验/DX) > 简洁性(代码长度) > 成本 >