近日,HackNews上的一则帖子引起了众多网友的热议和共鸣。人们讨论的焦点,BTI360公司的软件工程师JoelGoldberg在去年12月即将退休时,与团队成员分享了他45年软件编写生涯中的各种收获和教训。具体来说,他分享了自己在知识学习、编码、团队关系原则、职业规划等诸多方面的心得,相信能给软件行业的从业者带来一些启发。以下是JoelGoldberg分享的内容:回顾我在软件行业的40多年,变化之大令人震惊。我的职业生涯始于穿孔卡片,现在我在云计算时代退休了。尽管发生了所有这些变化,但在我的整个职业生涯中帮助过我的许多原则仍然保持不变并且仍然具有意义。在我即将退休之际,我想与您分享我作为软件工程师学到的一些见解。当心知识的“诅咒”。当你知道某些事情时,你很难想象如果你不知道它们会是什么样子。这是知识的“诅咒”,是无穷无尽的错误和低效的根源。能适应复杂情况的聪明人更容易陷入这种“魔咒”。如果不防范知识的“诅咒”,就有可能在各种形式的交流中采取错误的立场,包括写代码。您所做的工作越专业,就越有可能以外行无法理解的方式进行交流。因此,与知识分子的“诅咒”作斗争。尝试了解您的听众,并尝试想象第一次了解您正在交流的内容会是什么样子。六项基本原则技术一直在变化,但软件开发的一些基本方法保持不变。以下是我认为在未来很长一段时间内将保持不变的六个基本原则:团队合作:优秀的团队构建优秀的软件,但不要将团队合作视为理所当然,每个人都应该参与;信任:团队合作信任可以促进发展,努力成为值得自己和他人信任的人;沟通:真诚主动地沟通,避免陷入知识的“魔咒”;寻求共识:花时间带领整个团队在同一条“跑道”上,有不同意见就足以讨论找到最佳解决方案;自动化测试:经过良好测试的代码让团队有信心快速进入下一步;干净、可理解和可导航的代码和设计:将接管您代码的继任工程师视为您的客户,确保他们在阅读、维护和更新代码时没有任何问题。简单法则与复杂作斗争是永无止境的事情,所以解决方案应该尽可能简单。我们可以“坏”地假设维护自己代码的继任者不如你聪明。设计师意识到,当没有什么可以删除的时候,他就已经达到了完美,而不是当没有什么可以添加的时候。——安托万·德·圣埃克苏佩里先寻求理解美国著名管理大师史蒂芬·柯维的7个习惯之一是:先寻求理解,再被理解。这条准则比任何其他建议都更能帮助我成为一个好的倾听者和工作伙伴。如果你想影响人们并与他们有效地合作,你首先需要了解他们。在试图让自己被理解之前,积极倾听并理解他们的感受、想法和观点。谨防陷入困境总有下一代生产力产品可以彻底改变软件构建方式,例如计算机辅助软件工程(CASE)工具、COTS、Peoplesoft和SAP等企业资源规划产品,甚至Ruby。如果接受他们的整体开发理念,这些产品都声称可以大大降低成本和时间。然而,现实并不总是像人们想象的那样一帆风顺,前期成本可能很大,而你的能力仍然有限。“卡壳”过去是在供应商层面,但现在也发生在框架层面。在任何层面,高沉没成本都意味着改变的压力很大,新事物并不总是更好。当你不合适时承认并改变在你职业生涯的某个时刻,你可能会发现你不适合某些角色。这种格格不入不是性格缺陷,而是你不应该忽视的缺陷。解决这个困境的方法不止一种:你可以继续提升自己或改变角色。关键是要有自知之明,认清自己的处境,把自己从这个不利的角色中解脱出来。工作不开心对任何人都没有好处。当我在通用汽车工作时,文化是这样的:如果你不考虑管理更多的人或承担更大更复杂的项目,那么你就是一个失败者。对于大多数人来说,这是一条悲惨的职业道路。在EDS,企业文化不是这样的,管理职位是流动的。从战略规划师等特权角色转移到项目管理或项目开发人员等特权角色并不丢脸。我利用这种人员流动性,从技术金字塔顶端的角色回归到一个普通的项目开发人员。我从不后悔。
