软件工程师的特质
前段时间,Ev让我思考一个问题:一个好的工程师有哪些特质?
一些显而易见的回答包括,聪明,迅速,对软件框架有好的判断力,打破常规想问题,优秀的技术知识储备,很强的解决问题的能力,等等...
这样的回答也许准确,但并不让人完全满意。是不是应该有一些更深层的答案呢?
这个问题困扰着我,让我花了很多时间考虑。我和其他我所尊重的工程师讨论了这个问题,最终总结出来四个“特质中的特质”。它们捕捉了成为一个顶级工程师的精髓。别的特质都可以由它们延伸而来。
好奇(Curiosity)
强烈的好奇心,不断地想学习新的东西。
好奇心极其重要,它体现在一个好的工程师成长的每个阶段。好奇心驱使我们去学习新的编程语言,尝试新的系统,并找出新的方式来解决问题。好奇心让我们质疑种种假设,并设法更深入地理解别人所提出的架构选择。很多优秀工程师特质的根源都是要具有很强的好奇心。
意识(Awareness)
对情况的理解和洞察力。
如果你能够觉察自己和周围的环境,你会问更多的问题,并把更多的信息联系起来。当你做技术决定的时候,你就会更多考虑背后的原因,并在被问起时能够很好的表达它们。意识可以让你发现为什么有些代码很难用,或者有些模式不断重复出现,而可以把它们标准化。
但是,光有意识本身是不够的,同时还需要付诸于行动。
坚定(Resoluteness)
明确应该做什么,坚定地执行并不动摇,同时让别人信服。
最好的软件工程师对一件事应该怎么做有很强的直觉,但同时他们也很灵活,以开放的心态对待不同的意见,并且知道何时去获取更多的信息。
坚定还表现为面临不确定性仍能做出好的技术决定,努力调试非常复杂的错误,以及有力推动一个项目进展直到完成。
同感(Empathy)
了解和分享他人的感受的能力。
任何工程师都不可能在完全隔离的环境中工作。理解人的感受和观点是在一个团队工作的重要组成部分。
但同感可以上升到另外的层面:它可以帮助你写出更好的代码。如果你能理解别人会怎么使用你的代码,并且假想如果是你第一次使用这个代码,你的感受是什么,那么你就会设计出更好的接口,写出更简单,更有逻辑的代码。
这就是软件工程师的四个根本特质:C.A.R.E.™
*闪*