程序员,一直都是高薪,高智商,神秘的存在,网上对于程序员的段子数不胜数,大家也对这个使用键盘创造了互联网世界的人群感到有着十足的兴趣和敬仰。程序员们关于自己的自嘲段子也各式各样,其中最多的是,自称自己为[码农]。
然后。
既然你们诚心诚意地要求了,国家也就真心诚意地满足你们,于是乎,
官方就给你正式定位,码农直接做实了。恩,大家都是新生代的农民工兄弟了。
玩笑归玩笑,码农有时候,真不是自嘲,还真妥妥的码农,和软件工程师,大神有着无比巨大的鸿沟。
从事互联网工作接近十年了,由软件工程师(前后端通杀)转为产品/项目经理,自己写过代码,带过团队做过产品,从0到1,从1到100的项目都做过不少。关于程序员的用人和成长,吐过隔夜血,也吐过82年的老血,常和兄弟朋友们感叹,这届码农不行;甚至怀疑人生,这是,要求期许太高了么。
不,码农和程序员区别,还真真的大。
也许有对比才有伤害,在2010年代的程序员同事们,无不手打服务端,脚踢客户端,前端顺手做一下,服务器手工配置太麻烦,直接脚本跑。喝杯茶的功夫怒怼产品经理,看图的时候教设计师平台设计规范。新语言直接上,跑完小项目上大项目,破解反编译也就那样。
后来的后来,项目多了,大了,开始扩招了。然后,也开始喷血了,82年的老血都喷出来的那种,以下场景来自于真实场景:
Q: 你知道这个项目是做什么的么?
A: 大概知道(等于不知道)。实际上产品经理讲了N次。
Q: 那你怎么写的代码的?
A: 不是就实现这么功能么,产品经理说的。
Q: 那你知道这整个大模块的逻辑么?
A: 其他的不是我负责的
Q: 那你合并了最新分支跑起来了么?
A: 合并了呀,有冲突,我还在看
Q: 大哥,这都一周了,就这个小模块。
A: 其他的不是我负责的,我再看看
Q: 订单怎么还未支付就可以进入发货状态啊
A: 我看看
A:产品说,只是说30分钟内未支付的就取消订单,取消订单模块不是我做的,我只是处理下单。
Q: 。。。。
Q: 怎么这个前端样式乱了
A:我看看,哦,刚才设计师说这里客户要求这个界面这里改一下颜色和字体
Q:你跑起来看过没
A:看过了,没问题
Q: 你知道这是一个共用组件么
A: 知道啊,我写的
Q: 那你看了其他页面没
A: 没,不是这改这里么
Q: 。。。其他界面全乱了
Q: 怎么客户upload的图片都乱了,串了
A: 我看看。哦,图片重名了,被覆盖了
Q: 你是怎么处理图片upload的
A:拿到图片然后直接uplaod到阿里云的图床
Q: 你全部放在一个space里面了?
A:是
Q: 。。。。。那有分文件夹和前缀么?
A:没有,设计的时候又不说
Q:那现在客户那边出现了好多这种情况 ,还有救么?能修正么
A:没有。
Q: 。。。。。。
Q:这个分销把归属显示一下
A:这个需要点时间
Q: 等等,这个不是一个很简单事情么
A:你那个时候只是说显示分销员名字,我就直接显示出来了
Q: 等等,你说什么,你是直接把名字写在字段里面了?
A:是啊。
Q:你知道名字是可以编辑会变的么?
A:好像是有说过,但是你没说要查询其他信息啊
Q:。。。。那现在要关联查询,你说怎么办
A: 哦,你把需求写一下,我看看怎么重构
题外话(强力挽尊):我们还是认真执行review和代码审查的,所以一般问题都是扼杀在摇篮里。
所以这里的衍生的问题就是,码农还是程序员/工程师差别真真的就是一条鸿沟那么大。
以下是定于,一言难尽的定义,爆肝解决BUG之后的定义
码农:本质上就是个写代码的‘机器’,你让他写什么就写什么,对整个系统的整理观,商业应用并不熟稔,说什么做什么,你交代了一二,绝不会给你考虑三四,自测有时候都是奢求;对产品一知半解,打工人打工魂,打完一套搞定收工提交bug搞定收工下班。问一二略知,问三四没说,五六压根没想过,七八我听不懂。本质上就是个工具人,仅仅是what,有时候连how都不care,单一语言使用者。
程序员/工程师:注重的不仅仅是 what和how,更加渴望知道 why。无论是从技术的角度,还是从商业的角度,或者从产品的角度去解读,去实现。会通过自己的思考去质疑这个功能,这个决定是否有益。最重要的是思考,哪怕只是一个模块,也会把关联模块的逻辑完美处理好,留下可能拓展的纵深空间。这个时候已经不再关注"PHP是不是最好的语言",只有合适的才是最好的。
这里面的断档由此产生。为什么区别会这么大。其实很简单,就一个词 "思考"。这也是码农和程序员的区别所在。
当然,肯定有人说,也不能这么说,这个和经验,能力有关系的。
是的,没错。也许。但是,在一个团队中,这种供你晋级的环境是天然存在的。回到主题,工作之余,怎么提升自己。
最好的学习就是从实践中来。同样一个项目,给不同人带来的提升的程度是不同的。复盘,思考,理解,学习,才是快速提升自己的方式,而不是,我做完了,然后就没有然后了。把自己放在一个CTO或者CEO的角色上去看项目,去复盘为什么这个这个项目要这么做,为什么,项目架构为什么这么处理,这个模块为什么这么写。
我一直觉得,看懂别人的代码才是牛逼的程序员。因为在看别人的代码的时候,你要转换思维的同时还需要保持清醒地去分析校验,带着思考的能力去看待一个项目。等你把项目理解透了,你就会发现,什么好,什么不好,还有哪些有改进空间,哪些是坑。
无论什么岗位,都需要去了解一个大局,就是现在干的事情是什么,为什么,目的是什么。而不是只是关注自己做的模块,这往往是写BUG的开始,因为你
知其然而不知其所以然
所以,团队用人,还是希望需要程序员,而不是码农。这其实也很好解释了,为什么企业说招不到人,毕业生说找工作难的问题。码农的晋升空间是有限的,因为本质上码农是个工具人,能起到作用是有限的;而好的程序员/工程师,是带着思考和思维的,在不断学习和实践中打开新的大门,点亮新的技能树,为自己的价值加分的。