软件工程师的特质

Xiao Ma
Open Sourced Thoughts
1 min readAug 5, 2014

--

前段时间,Ev让我思考一个问题:一个好的工程师有哪些特质?

一些显而易见的回答包括,聪明,迅速,对软件框架有好的判断力,打破常规想问题,优秀的技术知识储备,很强的解决问题的能力,等等​​...

这样的回答也许准确,但并不让人完全满意。是不是应该有一些更深层的答案呢?

这个问题困扰着我,让我花了很多时间考虑。我和其他我所尊重的工程师讨论了这个问题,最终总结出来四个“特质中的特质”。它们捕捉了成为一个顶级工程师的精髓。别的特质都可以由它们延伸而来。

好奇(Curiosity)

强烈的好奇心,不断地想学习新的东西。

好奇心极其重要,它体现在一个好的工程师成长的每个阶段。好奇心驱使我们去学习新的编程语言,尝试新的系统,并找出新的方式来解决问题。好奇心让我们质疑种种假设,并设法更深入地理解别人所提出的架构选择。很多优秀工程师特质的根源都是要具有很强的好奇心。

意识(Awareness)

对情况的理解和洞察力。

如果你能够觉察自己和周围的环境,你会问更多的问题,并把更多的信息联系起来。当你做技术决定的时候,你就会更多考虑背后的原因,并在被问起时能够很好的表达它们。意识可以让你发现为什么有些代码很难用,或者有些模式不断重复出现,而可以把它们标准化。

但是,光有意识本身是不够的,同时还需要付诸于行动。

坚定(Resoluteness)

明确应该做什么,坚定地执行并不动摇,同时让别人信服。

最好的软件工程师对一件事应该怎么做有很强的直觉,但同时他们也很灵活,以开放的心态对待不同的意见,并且知道何时去获取更多的信息。

坚定还表现为面临不确定性仍能做出好的技术决定,努力调试非常复杂的错误,以及有力推动一个项目进展直到完成。

同感(Empathy)

了解和分享他人的感受的能力。

任何工程师都不可能在完全隔离的环境中工作。理解人的感受和观点是在一个团队工作的重要组成部分。

但同感可以上升到另外的层面:它可以帮助你写出更好的代码。如果你能理解别人会怎么使用你的代码,并且假想如果是你第一次使用这个代码,你的感受是什么,那么你就会设计出更好的接口,写出更简单,更有逻辑的代码。

这就是软件工程师的四个根本特质:C.A.R.E.

*闪*

--

--

Xiao Ma
Open Sourced Thoughts

Chief Architect @Medium. Serving Engineers. Teaching Machines. The ultimate goal of tech is to help us live better. Built @PatternInsight PhD @IllinoisCS UCSD