工程师和程序员的区别

开一个杂谈的类目,探讨平时工作中遇到的趣事,可能偶尔也会转载一些其他地方看到的有意思的行业趣事,纯属一乐。

开端

今天下班后,公司里一个工作多年的小朋友找我闲聊,然后聊着聊着不知为啥聊到了行业上:

1
2
3
4
5
6
7
8
小朋友:串串,你为什么不愿意带团队?
串 串:不感兴趣!
小朋友:你打算敲代码到35岁吗😅
串 串:40
小朋友:就算技术上再牛逼,程序员在中国,到了四十也到头了吧
串 串:工程师和程序员是两码事
小朋友:本质区别在哪呢?你指有架构的能力吗?
串 串:。。。。。。

我想说

其实聊到这里,我突然发现很多做开发的同学对程序员和工程师这两个职业的认知好像并不是那么的分明,其实上面的对话还没有结束,我把工程师和程序员对等为进程和线程,做开发的同学应该都知道进程和线程的区别(说不了解的回去把操作系统再细学一遍),为什么这么比喻呢(其实这个比喻也不恰当,就是想把两者的区别扩大化一下,各位不要挑这个比喻啦,挑了我也不改),因为进程是由很多线程组成的,每一个线程都只处理进程中很小很小的一个模块,可能仅仅就是去把磁盘上的数据读到内存中而已,进程就像是一片森林,线程只是一棵树,我想表达的意思就是工程师所要掌握的知识技能,要比程序员多的多的多,也就是需要有大局观、知识广度、知识深度、行军线路等,而程序员是什么?你可以认为会写代码的都叫程序员,但只会写代码的程序员不能叫做工程师!!!

我还想说

我们来看一下BOSS直聘上招聘程序员和工程师岗位JD的区别,这里可能要有图:

Java高级程序员 20721576856562_.pic_hd

看到没,同样是高级岗位,但是岗位JD差别却很大,我们来分析一下区别:

1
2
3
4
Java高级程序员:                            Java高级研发工程师:
无学历要求,会写代码就行 最低科班出身
能用技术框架写代码,其他低要求 业务、产品、研发均要擅长,自我驱动,技术攻坚,架构设计
强调技术要求,罗列一堆技术框架 无技术框架要求,对软技能提到多次(代码洁癖、计算机原理、算法、行业经验、职责、质量、业务/产品/设计/研发)

我们从分析结果可以看出,一样的职级,一样的岗位,一样的技术,对程序员的要求是你会写代码就行,对工程师的要求是你不仅要会写代码,还要懂业务、产品、设计、产品和研发质量、数据结构和算法、计算机原理、软件工程学,现在是不是很清晰的知道了程序员和工程师的区别?

我再说一下

很多人会问:为什么国外的程序员到60岁还可以写代码,而中国的程序员35岁就要被淘汰?

其实行业淘汰的是程序员而不是工程师,一个有思想有眼界有能力的工程师是每一个公司都想聘用的,这一类人只会越老越吃香。

那么程序员为什么到35岁就会被淘汰呢?因为35岁还只是会写代码的人,身体已经被加班摧残的"风烛残年"了,每一年都会有一大批毕业生/培训生走入社会,他们身体健康、强壮、任劳任怨、爱加班,身为35岁的"老年人",除了年龄大、发际线高、体重超标、脑子迟钝,还有哪一点比得过那么一群小鲜肉?哦~还有上有老下有小的山一般大的压力!!!

那么工程师为什么越老越吃香呢?因为工程师靠的不是写代码,靠的是自我沉淀和行业经验。

总结下

大家一开始都是从程序员做起的,为什么有的人可以成为工程师,有的人还是程序员呢?这就在于个人平时的积累了。

最近一年面试了二十多个7、8年工作经验的人,很多人连最基本的技术知识和数据结构都不知道,记忆最深的就是有一个跟着7年的人跟我说:我会写代码,我能实现业务需求,不就行了么,我要知道那些原理干啥?

是不是又很多人也这么想的?这么想就对啦,等着30岁就被淘汰吧,35都不用等啦!

知道的越多,不知道的就越多