前言
我在观察并厘清什么样的“品格”是一位工程师可以具备的,以及普遍工作环境和社群带给我的感受,总结出几点可以解决问题的模式,在日常也作为我自己参考与努力的依据。
工程师可以具备的优良品格有以下几点:
- 有耐心
- 能沟通
- 跳脱框架
有耐心
软件开发不变的就是一直改变,现实总是脱离理想,会需要有极大的耐心才能应对这一切。
身为解决问题的人却总是被问题困住?一直都在最新技术背后追赶?严重的冒名顶替症?耐心是你应对这一切最好的方式。
我们常常看到「 x 小时学会 y 」、「 y 个月成为 z 」的教学和事迹,但却不会看到背后的故事;解决真实世界问题的故事比较像是:「花了整周时间,翻遍了每一则文件只为了解决一个老天才知道的诡异问题」、「每个月都跑出新技术等着你学习吸收、几年过后又变得毫无用处」、「维护鬼才知道怎么运作,因为历史因素层层叠加的混沌意大利面代码」。
有耐心意味着接受尝试和错误是常态,许多不完美的尝试才有时会产生好的结果,虽然有时候看起来毫无意义,不过解决问题的过程就是这样。
大多时候只有你自己清楚在做什么,给自己多一些耐心去尝试去失败,任何人都可以在短暂的学习后成为一个领域的专家,但保有耐心是真正珍贵需要磨练才能得来的美德;大多成就背后都有无数的失误和尝试,这并不代表我们不应该寻找好的方式来解决问题,意味着当卡住时任何行动都比没有行动好。
- 对失败习以为常并养成耐心
- 尝试并失败也是产出的一部分
- 不完美的尝试比什么都不做好
能沟通
沟通并不限于人与人的交流,也可以是通过文件或代码的方式来传递意图。
为了解决问题能否灵活地运用不同的方式解读沟通?能不能良好地解读他人的意图?能不能清楚地表达自己的意图?我们不会是万能的人,所以需要和同事合作,和地球另一端的人合作,和未来与过去的自己合作,这些都需要良好的沟通。
理解产品需求、翻找文件寻找解决问题的方法、撰写可维护的代码……背后都算是广义上的沟通技巧。
- 学习阅读文件解决问题
- 学习讨论和解释自己的想法
- 尊重他人的时间、就事论事
跳脱框架
随着职位升级,需要解决的问题不再是技术本身,而是如何让团队更有效率地解决问题。
入门工程师通常会从被指派的事项开始,随着职位升级项目的范围扩展到开发功能、项目、公司与产业,随着对技术和产品的理解逐渐扩大,重心不再是“解决问题”而是“发掘机会与问题”,所以跳脱框架的能力变得更加重要。
- 不吝啬跨领域合作,用更广阔的角度看待问题
- 带领团队达成目标(鉴别、量化、执行)
延伸阅读
- Stop postponing things by embracing the mess
- How To Out Code The Competition - bigboxSWE
- 7 Levels Of Engineers Describe Software’s Most Important Skill