程序员与软件工程师有何区别?
IT 界知名的段子手曾说:对于那些月薪两万以下,自称 IT 工程师的码农们,其实我们从来没有把他们归为我们 IT 工程师的队伍。他们虽然总是以 IT 工程师自居,但只是他们一厢情愿罢了。
此话一出,不知激起了多少小猴子的愤怒,但却也只能默默地捏着工资条躲在小黑屋里伤心。然而,笔者认为,薪资的多少并不能成为分辨码农(普通程序员)和软件工程师(高级程序员,上面所指的 IT 工程师)的分界线。码农和软件工程师如果要强行去区别,最根本的区别不过是技术层次的不同。
码农:顾名思义为编代码的农民,从本质上来说,码农就是你让他写什么他就写什么的“机器人才”。
他们大多都通晓几门编程语言,但是在商业方面却并不熟悉。当然也有不感兴趣的因素在内,毕竟通常来说,码农做的只是写代码。
软件工程师:顾名思义为搞软件的技术工程人员,他们注重的不仅仅是“What & How”,他们更渴望知道“Why”。
资深软件工程师可以深谙获取用户需求的技巧,也懂得市场分析、技术执行分析、价值分析估算项目的风险等。他们能独立完成项目使用文档的能力,甚至都可以独立完成一个项目。
总结来讲,就是能够依靠经验和其逻辑,设计出高效地算法,更好的解决问题。
所有的软件工程师都曾是码农,只是经过岁月的变迁,有些人停滞不前,有些人飞跃进步。造成如此大区别的原因就是以下五点:
01.兴趣导致理解深度不一
实质上来讲,码农大多是“代码机器”,他们通晓几门编程语言,但对于商业上面并不熟稔。他们只是把“编程”当做一种养家糊口的生存手段,只要过得去,就不愿意花时间去深入学习,多方面接触。
而软件工程师则希望能够创建出一些特别出彩的东西——无论是从技术角度还是商业角度去看。在兴趣的驱动下,他们更愿意积极主动的花费时间深入研究技术、或某种工具、语言等。
02.投入精力不一
正如前面一点所说的,软件工程师更注重深度挖掘,这也意味着他非常在意最后的结果。他会比很多码农更心甘情愿地投入大量的时间和精力到公司的项目技术上面。
03.质疑精神
老板经常会头脑一热就随便做出一个决策,提出一个需求。而这时,码农往往就会拿着老板的需求直接开始执行敲代码。
而软件工程师并不会盲从,至少会问问“Why”——搞清楚做新需求的意义与老板本质的需求。最后他们可能会提出另一种更简单,但不同的解决方案,既节省了自己的时间,又降低了公司的成本。
04.不拘一格
一个软件工程师的职业生涯非常重要的一步就是不再想着“我擅长什么语言”,而是开始考虑“什么工具(编程语言等)最适合解决这个特定的项目和客户?”。
这在商业决策上同样如此——开发人员能发散思维,从大局着手,如果可以用开源的方案取得相同的结果,他就不会非要你去购买一些非常昂贵的软件。
05.管理者
软件工程师这个职位需要的是一名可以走向架构师,可以成为一个CTO,一个胸有成竹心胸宽广之人。
甚至,不夸张的说,他应该是一个连接商业世界和代码世界的桥梁。而不仅仅一个闷头搞代码的搬运工。
笔者认为,无论是码农还是软件工程师,其实更多地应该是勉励自己不断学习,不断进步, 除了学习更多编程领域的知识,还要提升自己的思维能力,形成不可替代的核心价值,才能在IT行业走的更远。