3 Virtues From a Good Software Engineer

软件工程师可以具备的三种优良美德

前言

我在观察并厘清什么样的“品格”是一位工程师可以具备的,以及普遍工作环境和社群带给我的感受,总结出几点可以解决问题的模式,在日常也作为我自己参考与努力的依据。

工程师可以具备的优良品格有以下几点:

  • 有耐心
  • 能沟通
  • 跳脱框架

有耐心

软件开发不变的就是一直改变,现实总是脱离理想,会需要有极大的耐心才能应对这一切。

身为解决问题的人却总是被问题困住?一直都在最新技术背后追赶?严重的冒名顶替症?耐心是你应对这一切最好的方式。

我们常常看到「 x 小时学会 y 」、「 y 个月成为 z 」的教学和事迹,但却不会看到背后的故事;解决真实世界问题的故事比较像是:「花了整周时间,翻遍了每一则文件只为了解决一个老天才知道的诡异问题」、「每个月都跑出新技术等着你学习吸收、几年过后又变得毫无用处」、「维护鬼才知道怎么运作,因为历史因素层层叠加的混沌意大利面代码」。

有耐心意味着接受尝试和错误是常态,许多不完美的尝试才有时会产生好的结果,虽然有时候看起来毫无意义,不过解决问题的过程就是这样。

大多时候只有你自己清楚在做什么,给自己多一些耐心去尝试去失败,任何人都可以在短暂的学习后成为一个领域的专家,但保有耐心是真正珍贵需要磨练才能得来的美德;大多成就背后都有无数的失误和尝试,这并不代表我们不应该寻找好的方式来解决问题,意味着当卡住时任何行动都比没有行动好。

  • 对失败习以为常并养成耐心
  • 尝试并失败也是产出的一部分
  • 不完美的尝试比什么都不做好

能沟通

沟通并不限于人与人的交流,也可以是通过文件或代码的方式来传递意图。

为了解决问题能否灵活地运用不同的方式解读沟通?能不能良好地解读他人的意图?能不能清楚地表达自己的意图?我们不会是万能的人,所以需要和同事合作,和地球另一端的人合作,和未来与过去的自己合作,这些都需要良好的沟通。

理解产品需求、翻找文件寻找解决问题的方法、撰写可维护的代码……背后都算是广义上的沟通技巧。

  • 学习阅读文件解决问题
  • 学习讨论和解释自己的想法
  • 尊重他人的时间、就事论事

跳脱框架

随着职位升级,需要解决的问题不再是技术本身,而是如何让团队更有效率地解决问题。

入门工程师通常会从被指派的事项开始,随着职位升级项目的范围扩展到开发功能、项目、公司与产业,随着对技术和产品的理解逐渐扩大,重心不再是“解决问题”而是“发掘机会与问题”,所以跳脱框架的能力变得更加重要。

  • 不吝啬跨领域合作,用更广阔的角度看待问题
  • 带领团队达成目标(鉴别、量化、执行)

延伸阅读