事关“工程师思维”(2)
2011年前我写过《事关“工程师思维”》,在那篇文章里所谈的“工程师思维”,指的是“一种可以把想法实现出来,一步步的变成现实的思维和实践训练”。两年过去了,工作和生活中的许多经历让我认识到,“工程师思维”不仅仅是一种思维和实践的训练,更是从多个方面体现出来的习惯,以下简单说说我的两点理解。
工程师思维的体现之一,是对于工具的执着。工程师不是赤膊上阵的莽夫,要完成自己的任务,必然离不开工具的支持,所以,优秀的工程师,必然从思想上重视工具。
我刚刚接触Linux下的开发时,是在一家当时国内有名的互联网公司。当时自己学了点vi,开始编写php程序。有天,一位同事从旁边走过,他忽然说:你的vim怎么没有颜色呢?然后不由分说,抢过我的键盘噼啪一顿敲,瞬间编辑器就有了格式和颜色(其实就是加上了syntax语法文件)。当时我只是觉得新奇好玩,过了几天,随着程序不断变复杂,才发现开发效率相比之前已经大大提高;后来让我惊奇的是,原来那天帮我弄出颜色来的同事,正是公司的首席科学家;更让我惊奇的是,他负责的项目,基本是不用加班的,而且交付质量都相当出色。
这件事情我印象一直很深,一方面是因为身为首席科学家,愿意“屈尊”为新入门的同事配置工具(后来我才意识到,他所负责的项目之所以都能高质量的准时交付,离不开一个又一个的细节,对工具的执着就是其中之一);另一方面,我也发现很多“工程师”并不那么在乎工具,更愿意坚守一些原始粗糙的工具(“粗糙”与“简单”不同,精心配置的vim当然不算粗糙的工具),你建议他们去换用新工具时,他们往往说“没事,我习惯了,再说也查不了多少”为理由拒绝(我认为这更多是思维上的懒惰)。更不幸的是,我见过的有这样习惯的人,基本都算不上优秀的工程师。两厢对比,我越发深刻地认为,“工程师思维”的一个重要方面就是对工具的执着,甚至既要对自己的工具精益求精,更容不下团队里其他人使用粗糙的工具。
工程师思维的体现之二,是对于流程的执着。工程不同于艺术,不需要天马行空的自如,工程的完成离不开严谨周密的步骤,只有执著于流程的工程师,才能够各种工程中贯彻严谨周密的步骤,从而减少变数,保证工程顺利完成。
许多开发人员都遇到过这样的情况:经常需要解决各种重复或者类似的问题,但是每次都需要花不少力气翻找之前的资料。我也曾遇到过这样的问题,直到有一天,发现某位同事有一个巨大的“脚本库”:无论我问他什么问题,他都可以迅速找出一个脚本,我只需要修改几个参数,就一定可以解决这个问题。
回头去想,这些脚本描述的就是解决某类问题的流程,它标明了具体的操作和步骤,保证任何人都可以照章解决某类问题,这种看似“与人无关、缺乏灵气”的方案,其实正是“工程思维”的体现,最大限度地减少了工程中的不可控因素。于是,我也逐渐积累自己的流程文档,更重要的是,在解决一个个问题的“个案”中,尝试从“流程”的角度观察和思考:这个问题是怎么解决的?前后分为几步?哪些步骤是和其它问题相通的?时间久了,既积累丰富了自己的流程文档,又强化了自己的思考能力。如果因为某些任务看似简单,就不去思考背后的流程,想凭“巧劲”手动解决,遇到真正复杂的问题,就没有化繁为简、系统解决的能力,如果问题重复出现,每次仍然需要手动处理,速度只能停在某个很低的水平。这样的表现,当然和“工程师”不挨边了。
如今流行的某种说法认为,中国人的理工科培训,造就了许多人的“工程师思维”。听起来,“工程师思维”似乎是某种不好的习惯,只知做事,不会思考;但在我看来,事实全然不是这样:“工程”是一门讲究实践、思考、经验总结的学问,而我国现行体制里教育出来的人,往往只擅长照章执行,根本谈不上“工程师”;无论是谁,想要具备真正的工程师思维,都离不开持续、专门的学习、思考和训练。
From Life Sailor, post 事关“工程师思维”(2)
虽然并不重要,似乎vi是不能配置的
vim才是可以配置的
好,多谢提醒,已经改过来了。
不过花费在 Vim 配置上的时间未免也太多了,哈哈哈。
那是因为大环境不好,如果大环境好,应该有一个配置工程师,应该有一个累积的知识库,不论是文档还是视频都应该有一些,很多就搞定了。
和大环境没有必然的联系,只要你有这种意识或者思维,多小的环境里也会去做这些事情;如果没有,面前有再多的资源,都难得利用上。