VC天下 » C/C++

工程师最重要的能力

手机响了,是一个实施工程师打过来的,说现场的数据采集不上来,问怎么解决。我问软件的版本,仪器的型号,操作系统的信息,具体的问题描述。我告诉他可能是什么原因,给了一个解决办法,让他尝试一下。他试了一下后,说还是不行,又问怎么办,于是我又给他一个办法,他又去尝试了,反馈回来说还是不行,又问我怎么办。我然后我又给他提供方案,继续解决……终于解决了。

这种场景不是一次两次了,也不是一个人两个人用这样的方式解决问题了。实际上,问题并不复杂,有些甚至很简单,简单到只需要把重启一下软件就可解决的地步。但是,很多人依然不知道怎样解决问题。类似的情况还包括开发人员在编程遇到bug的时候,无法独立搞定,也一直问同事该怎么解决。

我们部门有个架构师,他一直从事的是c++语言的开发工作,几乎c++任何方面的疑难问题他都能很快解决。项目上需要使用移动应用、大数据技术、java、js、python等不同开发语言开发时,他也能从头很快学起,为大家指明方向,搭建框架,遇到新问题,总能找到解决办法将问题解决,保证了项目的进度和质量。

我时常想为什么出现这种现象?工程师最重要的能力是什么?我认为是解决问题的能力。能够独立、快速、有效的解决问题,是起码是一个优秀工程师必须具备的能力之一。具备解决问题的能力的人自然拥有了一项自己的核心竞争力。他人解决不了的问题,你能解决;他人摆不平的事情,你能摆平;他人搞不定的麻烦,你能搞定。遇到加薪升职的事情,哪个老板不得想着你?想起一句话,越想越有道理:“搞定就是稳定,摆平就是水平”。

如何培养解决问题的能力呢?这个话题可能有些大,我想到以下几点:

1、首先要有责任心,把心态摆正,把这个问题当成自己要独立处理的问题,不要总觉得有靠山、有退路。我清楚得记得有个实施工程师,在现场给同事打电话,说设备的数据采集不上来。后来同事问了一下,原因是采集数据的软件没有安装。这真是让人哭笑不得。就像一个人买了辆汽车,给销售打电话说汽车怎么踩油门也不动,原因是汽车没有插入钥匙发动起来一样。稍微有一点知识,用脑筋想一想,就不用出现这种低级的笑话。如果总觉得这个事情即使你不做,也会有人做,来帮你做,那么,就容易出现懒惰现象,往床上一躺,打个电话,让他人解决,自己在那里睡觉。这种状态是不可能有任何解决问题的能力培养出来的。只有把事情当成自己的事情,自己要面对和解决的问题,才能踏下心来想怎么解决这个问题,才有可能自己独立解决这个问题,才有可能通过解决这个问题,积累类似的解决问题的经验和教训。否则,永远处于0的状态,不会有任何进步。

2、需要储备一定的知识和技能。这是前提。老板也不会安排一个厨师去给客人理发。所有安排给你的任务,大概率是在你从事的相关技能领域内,至少能沾点边。一个工程师总得有一点是自己擅长的,熟悉的。这个技能或者特长,需要一定时间的积累,例如上大学所学的专业或者参加某个知识培训班而掌握的。学到了知识,掌握了技能,就具备了解决这个领域内的问题的基本前提。有了这个前提,一个工程师才有能力解决某个具体问题。如果你还不具备这个前提,可以现在就开始学习了。

3、深耕你的技能。具备了一定的技能,是能够解决一些常见的问题了,但是想要解决更多更复杂的问题,则需要更高深的专业技能。这就是高手和牛人的要求了,想成为高手,必不可少的要花费更多的时间和精力去提升技能。”一万小时理论”阐述了一个人要想成为某方面的专家,就需要一万个小时的积累。这或许没有什么捷径可以走,但要掌握好解决问题的技能,总会有一些好的方法,能够加速掌握技能的时间。就像学生时代有的同学掌握了适合自己的学习方法,就达到了事半功倍的效果。好的方法是需要自己多思考多揣摩多实践,慢慢总结出来的一个套路,这就需要平时多学多练。总之,你得先付出,并且在付出努力的过程中,不断总结提炼,才能把你的技能练得炉火纯青。

4、形成解决问题的思维和方法。具备了深厚的技术技能,由于一个人的精力有限,也往往是某一方面的。当问题的发生超出了一个人所熟知的技术领域时,就需要具备一定的解决问题的思维和方法,才能进一步解决问题。例如一个实施工程师如果只是对所实施的软件了如指掌,而对现场的计算机网络、数据库等一无所知的话,他还是解决不了最终的问题。所以,他需要一个全局性的视野,与问题相关的方方面面,他都要有所了解,才能综合分析出问题的根源所在,进而找到解决问题的方法。解决问题的思维包括解决问题的步骤,第一步做什么,第二步做什么,问题之间的关联,如果第一步怎么样了,那么第二步应该做什么。具备了解决问题的思维和方法,即使缺少相应的某一方面的技能,也能通过学习使其具备一定的临时性的技能,从而推进解决问题的进度。在解决问题时,注意最好多想一步,敢于突破自己的极限,要相信自己的潜力。

5、善于总结,形成知识库。解决完一个问题后,要注意进行总结,最好记录下来。拿编程来说,经常遇到这样的情况,遇到一个bug,花了一定的时间和精力解决了,很高兴。过了十天半个月,可能又遇到了同样的bug,这时只是记得解决过这个bug,但具体怎么解决的,忘记了,还需要重新查找资料,又花费了不少时间来解决它。虽然最终还是解决了,但还是浪费了不少时间。如果在解决问题过后,及时记录下解决的方法和步骤,再次遇到同样的问题时,就能很快将其解决掉,这么一来,省下的时间都是自己的。这有点像学生时代的“错题本”,有时一道题做错了,下次遇到的时候,还可能犯错。因为这正是一个学生掌握不好的地方,知识薄弱的地方。有了“错题本”,针对错误的题目加深印象,学习时多关注一些,再遇到类似的题目时,就变成了熟悉的知识了,也就不容易错了。随着解决的问题越来越多,自己形成的知识库越来越庞大,工程师的能力自然越来越强。

如何增强解决问题的能力,还有很多途径和方法,条条大路通罗马,只要认真对待问题,相信那句话:世上无难事,只怕有心人。

发表评论