程序员,是知识工作者,还是体力工作者?

Posted by ZY on March 25, 2018

看了标题,你们或许以为我要吐槽程序员了。
其实,这只是我在看《卓有成效的管理者》时,萌发的一个想法。

我并不想一上来就填上自己挖的坑,而是先简单谈谈,彼得·德鲁克在书中提出的三个概念,这三个概念分别是:

  • 知识工作者
  • 有效工作
  • 管理者

弄懂这三个概念,或许你们对程序员,对你们现在正在做的职业,到底是知识工作者,还是体力工作者,已经有了自己的看法。

什么是知识工作者

所谓知识工作者,是相对于体力工作者的一个概念。
我们经常说,这事就是件体力活,意思就是只要花时间花精力去做,就迟早会做完。
对于体力工作,我们常常只在乎把事情做对,而不在乎在做的事情是不是对的。
比如鞋厂的工人,我们只在乎他一天生产多少双鞋子、质量如何,而不会过问生产鞋子这件事到底是不是对的 。

相反的,对于知识工作者而言,他们要考虑的,不仅仅是如何把事情做对,还要考虑要不要做这件事情,他们要考虑工作的有效性
比如公司的CEO,绞尽脑汁地思考公司的战略,因为他知道,方向错了,底下的员工越是努力,就错的越多。

什么是有效工作

上面提到,知识工作者需要考虑工作的有效性。
那么,什么才是有效的工作呢?
这本来应该是一个很简单的问题,只要你理解工作的意义。

啥?工作的意义?
直爽的人,会说,工作就是为了赚钱啊!
稍微含蓄点的,会说,工作,是为了实现自我的人生价值!
而只有看透本质的人,才能一针见血的回答,工作,就是为了给公司创造价值
想想看,为什么会有这份工作?因为公司需要人替他们做事,去给他们公司带来盈利。
而只有你的工作,给公司创造价值,让公司赚钱了,你做的事情才有算有效。

所以,什么是有效工作?
能给公司创造价值的工作,才是有效工作。

什么是管理者

《卓有成效的管理者》中,德鲁克给管理者下的定义是:

如果一位知识工作者,能够凭借其职位和知识,对组织作出贡献,从而影响该组织的经营能力和成果,那么他就是一位管理者。

简单说,只要你是一位能够影响公司业绩的知识工作者,你就是管理者

同时,德鲁克又说了这么一句话:

一位知识工作者,是不是一位管理者,不能单凭他有没有下属而定。

因为就算你一个下属也没有,你也有一个人要管理,那就是你自己

程序员,知识工作者or体力工作者?

那么问题来了,程序员,到底是知识工作者,还是体力工作者呢?
It depends.

有些程序员,觉得写代码就是体力活,“每天写来写去都是那些代码,CRUD,写写接口”,Tom经常对他的同事抱怨说。
一天,Bob找到Tom,对他说,“Tom,这个是需求设计说明书,你看看”
“好的”,Tom一张生无可恋脸。
然后第二天,Tom就按照需求设计说明书里的方案,一板一眼地,去用代码实现了。
这个过程,就像工人们,按照说明书组装机器一样。
Tom写完代码,开始转测试,测试通过,交付商用。
这个过程,就像工人们,把组装好的机器,送去检查,然后投放到市场。
这种程序员,和体力工作者无异。

而一个追求有效性的程序员,又会是怎么样的呢?
“Peter,这个是需求设计说明书,你看看”
Peter看了看,原来是要给公司的官网做一个帮助页面。
“Bob,为什么要加这个帮助页面呢?以前没有,用户不也可以正常使用么?”,Peter试图确认为什么要做这个需求。
“是这样的,最近我们新增了一个购票功能,这个功能很多用户反馈不会用,所以我们决定加一个帮助页面,以后用户不知道怎么操作了,就可以进到这里查看操作指导了”
原来是想给用户购票时提供指导,“那我们是不是也要在购票页面加上一个链接,指引用户跳转到帮助页面呢?”,Peter对方案提出了自己的意见。
“啊,是啊,这个当时UCD没有考虑到,挺好的,Peter”

这就是追求有效性的程序员,他们接到需求时,不会马上埋头编码,而是先弄清楚,为什么要做这个需求?
接着,他们会想,为了实现这个目的,就一定要做这个需求吗?
是不是可以换一种方式实现呢?
需求定下来之后,针对实现的方案,他们又会考虑:有没有更好的实现方案?能够用相同的人力,创造更大的价值?或者用更少的人力,创造相同的价值?
到了编码阶段,当他发现某段代码经常重复使用时,他又会考虑抽取出来,用设计模式、AOP等编程范式进行优化,抽取出来,让代码不再冗余,等等。
这种程序员,做的每个需求,都有一种焕然一新的感觉,当然就是知识工作者了。

所以,一个人,是知识工作者,还是体力工作者,这和他做什么职业,是没有关系的。这完全取决于个人的主观能动性。
这里的主观能动性,其实也是另一本管理学著作,《高效能人士的七个习惯》里头,提到的第一个习惯——积极主动。在书中,作者强调,“人类拥有最终的选择自由”,“伤害我们的并非悲催遭遇本身,而是我们对于悲惨的回应”。

一名鞋厂工人,人们都认为他就是体力工作者,但是当他开始思考如何改进生产的流程时,他就是一名知识工作者

而一个程序员,虽然人们都认为他靠智商吃饭,是知识工作者,但是当他只会按照既有的方案写代码,按照别人的指令做事时,他也就沦为一名体力工作者

怎样做到卓有成效

只有当你成为一名知识工作者了,才需要考虑如何提高工作有效性。
《卓有成效的管理者》中,第二章到第七章,谈的都是卓有成效的技巧,读者可以前往阅读,这里就不展开讨论。
全书最核心的章节,毋庸置疑,是第一章,只有当你认为自己是知识工作者,并且表现的像个追求有效工作的知识工作者了,学习卓有成效的技巧才有价值。

总结

如果你觉得这篇文章是一份心灵鸡汤,那我希望这份鸡汤带给你的是正能量。
最后,再给这份“鸡汤”加点料:

  • 你是一名知识工作者,还是体力工作者,只取决于你工作的方式,和你的职业无关
  • 你可以是一名管理者,就算你一个下属都没有
  • 工作的目的就是为了给公司带来盈利
  • 所以,下次,别急着干活,先问问自己,做这个需求,对公司有用吗?
  • 有没有更好的方案?用相同的人力,创造更大的价值?或者用更少的人力,创造相同的价值?

参考

  • 《卓有成效的管理者》