程序员 VS 工程师

老实说,我其实不是一个标准的“程序员”,但对于不是这个行业的人很难解释其中的区别,而且我也对于这篇博客中谈论的问题印象深刻,还是想写一下。

我在公司的title是Sr. DevOos Engineer,也就是资深(高级)DevOps工程师,写代码只占我工作量的40%左右。

前几年,网上以程序猿来戏称我们这个行业的人,下面这张图也一度很流行。
程序猿

甚至很多同行也以程序员(猿) 自称,以前我是很反感这个称呼的,所以向别人介绍自己的工作的时候,从来不说“程序员”这三个字,因为总觉得有贬义。

但是这两年越来越觉得,我们这个群体里确实有不少人真的只是“程序员”,而称不上“工程师”。

一般来说,做一个项目的大致过程如下:

  1. 发现问题
  2. 分析问题
  3. 寻找、研究解决方案
  4. 设计功能
  5. 写代码实现功能
  6. 收集用户反馈并根据反馈持续迭代

理想情况下,一个工程师应该参与以上所有过程,但是一个大公司里面往往是精细分工的,一个人很难有机会全部参与,但是一个合格的工程师,至少要做到第6点。

程序员往往只做第5点,对于其他部分不关心,甚至拒绝参与那些环节。
而且他们第5点(写代码实现功能)也是经常做不好的,因为他们不关心自己的代码,只想应付任务,不关心用户实际需求和使用体验。

我不是说只写代码不好,相反,大佬们很多都是只写代码不做其他事情的。
但是大佬们都是带着自己的想法去写代码的,而“程序员”却只是一把握在产品经理/项目经理手里的“枪”,没有自己的思想。

跟程序员合作是很痛苦的,因为要把问题描述的非常仔细,找到解决办法,并且要把任务拆分的非常小,还要时常盯着他们,才有可能把事情做好。
但是跟工程师合作就很愉悦,往往只要说清楚问题或者最终想要的结果,大家就能很好的开展合作。

在以ChatGPT为首的LLM流行的今天,“程序员”很可能是最早被程序替代的人。