针对工程师,个人认为应当具有以下几种能力:
1. 针特定的业务应用场景出现的问题,抽象概括能力
在不同的业务应用场景,会出现各种各样的问题,遇到问题时,不要慌乱,认真列出来出现的各种问题,针对不同的问题,如何抽象概括出来,是工程师首先要解决的。问题抽象概括不好,可能会导致你设计的解决方案,最终不能很好的解决问题,或者说不能很好的解决问题。
2. 对技术的深入理解能力
这是基础能力,就是对技术深入的理解能力。不管遇到怎样的问题,如何运用技术解决,首要的前提是你对这项技术有足够的理解,能够熟练的运用。当然每一个人都是从菜鸟走过来的,对于技术的理解,都是需要时间的沉淀的和足够的勤奋。
3. 用技术方案解决问题的能力
在你应用场景出现的问题有了清楚的认识,又有深厚的技术能力,那么接下来就是,如何设计相应的技术解决方案,来解决应用场景的问题,或许很多人会说,这不是很简单的问题吗?个人认为,这不是一个简单的问题,一个好的技术解决方案,是工程师各个方面的综合能力的体现,也许你有好的技术能力,但却没办法将这种能力体现在解决问题上。
4. 将技术方案实现的工程能力
有了一个好的解决问题的技术方案,那么就要通过coding,来实现你的设想,建立相应的工程,这就是将技术方案进行实现的工程能力。当然这也很重要,coding的风格,工程扩展性、健壮性等,一些列的保证,都要靠工程能力来实现。
5. 针对实现出的工程方案,针对各种应用场景的测试能力
当你通过工程能力实现你的技术方案后,就需要有相应的测试能力,来检验你概括的问题、你的设计方案、你的代码工程能否满足相应的应用场景,谁都不敢保证,自己的代码没有bug,哪怕经过多方的测试,只能说尽可能的减少bug,解决问题。
综上所述,工程师所要具备的能力,其实也就是工程师解决问题的一个流程:即针对应用场景出现的问题–>抽象概括问题 + 技术的深入理解 –>解决问题的技术方案–>代码工程实现技术方案–>检验工程设计能否解决问题。