张飞软硬开源基于STM32 BLDC直流无刷电机驱动器开发视频套件,👉戳此立抢👈

程序员和工程师的不同

工程师人生 2019-07-19 17:38 次阅读

我刚刚工作的时候,面试官曾经跟我说:好好干两年,可以迅速从程序员成长为工程师。当时我觉得太诧异了,从很多招聘启事来看,“程序员”不就等于 “工程师”吗,只是“工程师”更好听一些而已。等我工作久了,才知道“程序员”和“工程师”真的是不一样的——程序员只写程序,工程师写能在现实世界中创 造价值的程序。

程序员和工程师的不同

可惜,很多软件开发人员未必清楚两者的差别,甚至做了很久也只算程序员而不算严格意义上的工程师。所以我就自己的观察和经验,谈谈程序员和工程师的差别。

第一、工程师不写黑箱程序

“程 序=数据结构+算法”,这个著名的公式大家都知道,不幸的是,它不适合描述工程领域或者现实世界的程序。有很多程序,数据结构和算法都写得很棒,功能足够 强大,系统足够复杂,但是——它很难调试,一跑起来就无法停止,而且谁也不知道程序现在到底在干什么,里面发生了什么。

别觉得好笑,我遇到过很多工作三四年甚至五六年的开发人员,仍然不停地生产黑箱程序:出现问题的第一反应是直接杀掉进程重启(天哪你们的程序不能安全关闭吗)。当然还有更生猛的,直接用开发机连上生产数据库(防火墙上开个洞)去调试。

你说他们技术不好吗?明明各种技术问题也能搞定。你说他们没有系统意识?做过的程序也不简单。但是,他们做的充其量只能叫“程序”,而不是工程上成熟的“系统”。

怎样的程序不是黑箱?你需要考虑它的层次划分,你需要考虑哪些(功能之外的)运行信息必须暴露和记录,以什么方式暴露记录,你甚至还需要考虑这些暴露和记录对性能的影响,以及程序需要对外提供什么操纵接口……当你把这一切都考虑清楚,写出能够让运行细节“尽在掌握中”的程序的时候,你的一条腿就迈进了“工程”的大门。

这 方面,互联网和软件开发的大厂会更加关注一些,但也不是说个人就毫无追求的空间了。网络爬虫大家都会写,大家也都知道如果要数据抓得准,调试起来很麻烦。 我有个朋友在某大厂写过一套“可视化”的爬虫,可以用逐步操纵语句的执行,迅速定位问题所在。这种水平的工程师,属于可遇而不可求的类型,每次说起来大家 仍然啧啧称赞。

第二、工程师注意实现和接口分离

Java面试的一道经典问题是:请描述抽象类和接口的区别。通常,大家都会知道“接口”和“实现”要分离。不幸的是,很多人理解的“接口”,只是狭义的特定语言提供的Interface,而没有考虑“接口”真正的含义。

接口的真正含义是什么?计算机最擅长处理的是信息,它可以让信息脱离现实的障碍高速流动起来。如果说“实现”是干脏活累活,“接口”就是发出干脏活累活指令的窗口。脏活累活干一遍就足够了,但发指令的窗口却可以有千千万万。

更 具体一点说,完成功能的是程序员,完成功能并且设想它会在什么情况下使用,并且让人方便使用的,是工程师。我见过不少这样的程序:登录会话一开始放在本地 内存里没问题,到了要切换到数据库里方便会话转移就得大兴土木,虽然要做的其实仍然只是存取而已;程序自动加载的数据出了问题,就根本不能手动加载;以前 手动加载的数据,改成自动加载就要推倒重来……

有没有接口意识,能不能真正区分接口和实现,这是区分程序员和工程师的一大标识。

第三、工程师注重功能的逻辑联系

很多系统都在不断的变化和改进过程中,程序员看到的是功能点,工程师看到的是功能点之上的逻辑。

任何系统当然都是由若干功能构成的。但在功能点之上,还需要一张有逻辑意义的大网,才能把功能点组合起来,把复杂度降低,成为大家能理解的对象。最简单的“登录”,就包含数据输入、数据验证、登录信息记录等等功能,“登录”是这些功能的逻辑集合,也是理解这些功能的基础。

随着时间的推移,业务的增长,新功能可能越来越多,比如用户数据的加载,对好友的通知,广告的推送准备等等。这些功能实现起来当然都容易(因为很具体),但功能堆积的后果是复杂度急剧上升,因为功能之间的逻辑联系被切断了。所以,工程师必然需要思考,这些功能应该怎么组合,放到哪些具有逻辑意义的动作——比如“登录”里去?正是经过这样持续不断的思考,系统的复杂度才能够被一直维持在较低的水平,容易让大家理解。

这 个例子看起来很简单,但做起来却没那么容易。我有时看到复杂的系统操作手册,简直让人哭笑不得:1) 点这里;2) 点那里;3) 输这个…… 这些操作对应的逻辑意义那么准确,分明就该是一次性自动完成的啊,把它们割裂开来的后果大大提高了系统的复杂度,既不方便维护,也不方便操作。最后来擦屁 股的,只能是开发人员自己。

我经常反思自己接受的教育,在学校里写程序,和工作了写程序,有 那么一点相同,但又好像完全两回事,到底有什么不同,只有亲自体会、思考了才能明白,所以我想把自己的所见所感写出来。悟性好的有机会接受很好训练的同 学,估计不需要了解这些。但对于没有这样条件的同学,但愿我的这点念叨能给你们一点帮助。

收藏 人收藏
分享:

评论

相关推荐

EETC2017电子工程师技术交流大会硬件篇·深圳站

继由硬件十万个为什么组织的2017电子工程师技术交流大会(EETC)·杭州站的召开,受到广大工程师的热烈欢迎和积极反响。
发表于 05-05 00:00 87次 阅读
EETC2017电子工程师技术交流大会硬件篇·深圳站

优秀程序员有哪些特质

作为一个程序员,我经常会问自己一个问题:
的头像 工程师人生 发表于 08-17 11:11 139次 阅读
优秀程序员有哪些特质

大数据工程师的职业发展前景具体如何

我们都知道,大数据现在是非常火热的,基本上是人尽皆知,很多人也都非常想加入这个行业,成为一名优秀合格....
的头像 工程师人生 发表于 08-16 16:57 200次 阅读
大数据工程师的职业发展前景具体如何

怎样成为一名合格且成功的大数据工程师

大数据工程师用阿里巴巴集团研究员薛贵荣的话来说,就是一群“玩数据”的人,玩出大数据的商业价值,让数据....
的头像 工程师人生 发表于 08-16 16:52 172次 阅读
怎样成为一名合格且成功的大数据工程师

数据分析师与大数据工程师的区别

数据分析师指的是不同行业中,专门从事行业数据搜集、整理、分析,并依据数据做出行业研究、评估和预测的专....
的头像 工程师人生 发表于 08-16 16:46 103次 阅读
数据分析师与大数据工程师的区别

程序员分为这四类

不是每一个写代码的都是程序员。这里,我把程序员定义为以编程为生的人。我认为世界上存在四类程序员:科学....
的头像 工程师人生 发表于 08-15 16:57 91次 阅读
程序员分为这四类

为什么35岁程序员非常危险

程序员行业吃的是青春饭”这个说法,要分情况来看。如果在技术方面积累比较好,其实35岁以上的程序员还是....
的头像 工程师人生 发表于 08-15 16:48 107次 阅读
为什么35岁程序员非常危险

理想中的程序员

我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26岁之前几乎没有任何写代码的经验,研究生毕业却意外选....
的头像 工程师人生 发表于 08-15 16:30 45次 阅读
理想中的程序员

初级程序员与高级程序员之间的区别

程序员是一个没有进步就会被淘汰的行业,现在互联网时代企业项目迭代速度很快,一个不合格的程序员就会在这....
的头像 工程师人生 发表于 08-15 16:19 86次 阅读
初级程序员与高级程序员之间的区别

这类程序员不容易被替代

一个足球评论员可能并不会踢足球,却并不妨碍在解说比赛时对某某球星的技艺评头论足。同样我也绝不敢以高明....
的头像 工程师人生 发表于 08-15 15:59 102次 阅读
这类程序员不容易被替代

Java开发工程师前景到底怎么样

互联网行业是一个高速运转的行业,我们这个时代可以说是一个互联网的时代,不知不觉,你会发现,一切行业和....
的头像 工程师人生 发表于 08-14 16:34 66次 阅读
Java开发工程师前景到底怎么样

一位高级Java工程师的经验分享

初级程序员:做一些静态的界面;
的头像 工程师人生 发表于 08-13 16:38 266次 阅读
一位高级Java工程师的经验分享

Java工程师面试时应该如何自我介绍

很多人的求职面试的过程中遇到的第一个问题:请做个自我介绍。
的头像 工程师人生 发表于 08-13 16:31 111次 阅读
Java工程师面试时应该如何自我介绍

初级程序员该何去何从

相信是很多大学生或者自学java的同学都遇到过的问题,翻看招聘网站,每一个都要求有一定的工作经验、项....
的头像 工程师人生 发表于 08-13 16:25 108次 阅读
初级程序员该何去何从

java工程师五年内必须做的事

针对目前互联网行业的大环境而言,程序员的日子并不是太好过,不管是在找工作的,还是在职场上打拼多年的,....
的头像 工程师人生 发表于 08-13 16:08 242次 阅读
java工程师五年内必须做的事

成为Java工程师必须知道的事情

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性....
的头像 工程师人生 发表于 08-12 16:09 228次 阅读
成为Java工程师必须知道的事情

Java程序员怎样转大数据工程师

随着互联网事业的蓬勃发展,编程语言越来越火爆。Java编程工程师收入高、业内需求量大,备受人们青睐。....
的头像 工程师人生 发表于 08-12 16:03 126次 阅读
Java程序员怎样转大数据工程师

Java软件工程师的就业前景

Java自1995年问世以来,因其卓越的通用性、高效性、平台移植性 和安全性等特性,成为全球范围内应....
的头像 工程师人生 发表于 08-12 15:58 118次 阅读
Java软件工程师的就业前景

大学生想从事java工程师应该如何规划

每年都会有大批的大学生求职,这是市场就业的一种严峻考验,大学生只有做好职业生涯规划,才能有目标地去学....
的头像 工程师人生 发表于 08-12 15:51 104次 阅读
大学生想从事java工程师应该如何规划

面试java工程师时一般会问什么问题

临近毕业,学生都在找工作,而一般单位对于JAVA工程师要求还是比较高的,起码懂编程语言。今天,小编就....
的头像 工程师人生 发表于 08-12 15:46 117次 阅读
面试java工程师时一般会问什么问题

一名成熟程序员的表现

程序员在经历了若干年编程工作之后,很想知道自己水平到底如何?自己是否已经成为成熟的程序员?虽然程序员....
的头像 工程师人生 发表于 08-11 11:15 166次 阅读
一名成熟程序员的表现

学习到什么程度才有资格说自己精通Java?

对于程序员来说,如果哪一天开始他停止了学习,那么他的职业生涯便开始宣告消亡。
的头像 Linux爱好者 发表于 08-11 10:15 136次 阅读
学习到什么程度才有资格说自己精通Java?

如何成为更好的防御性程序员 5个小技巧

在实验室中有效的方法并不总是在现场工作,通常是由于意外的交互和未发现的错误。防御性编程可以帮助提高设....
的头像 PCB线路板打样 发表于 08-09 10:18 94次 阅读
如何成为更好的防御性程序员 5个小技巧

由程序员转向人工智能

在学习任何一门知识之前,首先第一步就是了解这个知识是什么?它能做什么事?它的价值在什么地方?如果不理....
的头像 ADAS 发表于 08-09 09:16 91次 阅读
由程序员转向人工智能

优秀工程师的三大思维

在社会分工的背景下,软件行业的工程师群体被划分成了开发、测试、产品等诸多岗位,以协作的方式共同完成价....
的头像 工程师人生 发表于 08-08 16:08 476次 阅读
优秀工程师的三大思维

监理工程师的前景怎么样

监理这一行业,从1988年正式推行,已成为工程建设不可缺少的责任主体之一,为国家各项工程建设的质量控....
的头像 工程师人生 发表于 08-08 16:04 409次 阅读
监理工程师的前景怎么样

工程师如何继续提升自己

这个浮躁的时代,我们身边被太多各色新闻所包围。比如企业裁员这种消息比比皆是,其中还不乏行业巨头,有人....
的头像 工程师人生 发表于 08-08 15:55 378次 阅读
工程师如何继续提升自己

如何成为大数据工程师

用阿里巴巴集团研究员薛贵荣的话来说,大数据工程师就是一群“玩数据”的人,玩出数据的商业价值,让数据变....
的头像 工程师人生 发表于 08-08 15:51 555次 阅读
如何成为大数据工程师

前端工程师的两种价值

一直以来互联网行业一直都是高薪的代言词,其中程序员又是工资最高的一职业,那么大家一直想很问问,请问前....
的头像 工程师人生 发表于 08-08 15:40 316次 阅读
前端工程师的两种价值

Java工程师需要掌握哪些技术点

本篇文章扣丁学堂Java培训小编和大家分享一下Java工程师需要掌握的技术点问题,我们不论是参加Ja....
的头像 工程师人生 发表于 08-07 15:57 127次 阅读
Java工程师需要掌握哪些技术点

java工程师的前景分析

java语言在2017年就是一个备受争议的编程语言,有人说java语言已经过时了,java工程师已经....
的头像 工程师人生 发表于 08-07 15:49 165次 阅读
java工程师的前景分析

工程师应该如何准备面试

1如何准备一份「工程师范儿」的简历?
的头像 工程师人生 发表于 08-07 15:46 161次 阅读
工程师应该如何准备面试

一名优秀的Java工程师的任职要求

Java编程语言经历了20多年的发展,在C、C++语言占据大半江山的情况下横空出世,杀出了一条血路,....
的头像 工程师人生 发表于 08-07 15:42 177次 阅读
一名优秀的Java工程师的任职要求

程序员如何创业

很多程序员都对创业有着一种无比的期待,每个程序员可能觉得自己很厉害,都想着去创业。创业,利用互联网,....
的头像 工程师人生 发表于 08-07 15:37 169次 阅读
程序员如何创业

嵌入式工程师的发展前途怎么样

嵌入式是软件和硬件的配合,所以知识更新的没有那么的快,目前我国嵌入式人才缺口很大,嵌入式工程师薪资水....
的头像 工程师人生 发表于 08-06 10:18 197次 阅读
嵌入式工程师的发展前途怎么样

嵌入式工程师应该怎样应对中年危机

上策: 不断寻找发展能自己做主的事业,将其变成经济收益
的头像 工程师人生 发表于 08-06 10:09 186次 阅读
嵌入式工程师应该怎样应对中年危机

什么样的工程师才能被称为资深Java工程师

什么样的工程师才能被称为资深,又如何成为资深Java工程师呢?
的头像 工程师人生 发表于 08-05 16:15 211次 阅读
什么样的工程师才能被称为资深Java工程师

工程师经常犯的错误有哪些

电子工程师指从事各类电子设备和信息系统研究、教学、产品设计、科技开发、生产和管理等工作的高级工程技术....
的头像 工程师人生 发表于 08-05 16:03 185次 阅读
工程师经常犯的错误有哪些

如何吧垃圾代码进行垃圾分类详细指南说明

和大家聊了聊程序员的垃圾分类,有的程序员直呼太真实,有的程序员觉得太讽刺,不应该给程序员进行这样的分....
的头像 马哥Linux运维 发表于 08-03 11:25 338次 阅读
如何吧垃圾代码进行垃圾分类详细指南说明

Java工程师的就业前景如何

不得不说,现在是一个互联网的时代,所以互联网领域需要的人才越来越多。在程序员这方面,岗位需求更大,所....
的头像 工程师人生 发表于 08-02 16:28 222次 阅读
Java工程师的就业前景如何

应届毕业生怎样应聘java工程师

有人说,面试有技巧。最初,我不太信,但是接触的多了就不由得我不信了。
的头像 工程师人生 发表于 08-02 16:24 301次 阅读
应届毕业生怎样应聘java工程师

【VIP福利四】资深电源工程师积累的设计资料,毫无保留都给你了!(初、中、高级)

本资料为资深电源工程师整理的电源学习进阶资料,细心划分了入门篇、终极篇和高级篇,是一套价值极高的参考学习资料,方便每个阶...
发表于 08-02 16:23 3913次 阅读
【VIP福利四】资深电源工程师积累的设计资料,毫无保留都给你了!(初、中、高级)

Java工程师的任职要求

企业,特别是中大型企业对Java工程师的需求仿佛从来没有厌倦,大量的Java技术人才缺口也给了IT行....
的头像 工程师人生 发表于 08-02 16:18 189次 阅读
Java工程师的任职要求

Java工程师怎样快速进行面试准备

假如你准备在金三银四跳槽的话,那么作为一个Java工程师,应该如何利用1个月的时间,快速为即将到来的....
的头像 工程师人生 发表于 08-02 16:12 235次 阅读
Java工程师怎样快速进行面试准备

Java工程师价值在各方面的体现

由于IT行业的高薪资,高技术等优势,在这个时代已然成为一个热门行业,而且在这个行业中工作的程序员收入....
的头像 工程师人生 发表于 08-02 16:08 213次 阅读
Java工程师价值在各方面的体现

【微信精选】工程师告诉你做PCB设计(下篇)

本期内容是接上期“工程师告诉你做PCB设计(上篇)”,“工程师告诉你做PCB设计(上篇)” ,如果您错过了前面内容可以点击...
发表于 08-02 10:54 201次 阅读
【微信精选】工程师告诉你做PCB设计(下篇)

成为JAVA工程师有前途吗

80%以上的高端企业级应用都使用JAVA平台(电信、银行等)。JAVA是成熟的产品,已经有20多年的....
的头像 工程师人生 发表于 08-01 16:13 181次 阅读
成为JAVA工程师有前途吗

一位老程序员的职业总结

根据个人的理想来安排自己的生活,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,痛快一些....
的头像 工程师人生 发表于 08-01 16:10 220次 阅读
一位老程序员的职业总结

Java工程师应该如何规划职业生涯

很多人事程序员这个职业的人,在到了30岁以后就会有一大部分想要转行,为什么会出现这种情况呢?程序员无....
的头像 工程师人生 发表于 08-01 16:06 186次 阅读
Java工程师应该如何规划职业生涯

java工程师为什么工资那么高

Java在中国甚至在全球都有很高的热度,原因在于Java的拓展性和实用性,在众多行业中,Java程序....
的头像 工程师人生 发表于 08-01 16:00 243次 阅读
java工程师为什么工资那么高

Java工程师怎样成为自由职业者

Java工程师怎样才能摆脱朝九晚五的坐班,多些与亲朋好友相聚的幸福时光?当然是做一名自由职业者。做自....
的头像 工程师人生 发表于 08-01 15:57 188次 阅读
Java工程师怎样成为自由职业者

编程面试最常见的14种模式

这里我将列出最常见的 14 种模式,它们可被用于解决任何编程面试问题。另外我还会说明如何识别每种模式....
的头像 算法与数据结构 发表于 08-01 11:24 254次 阅读
编程面试最常见的14种模式

程序员怎样去问一个让双方都满意的好问题并最大程度的得到回复

由于一直从事技术和平台产品方面的工作,我们部门经常会收到公司内外同事和同仁的问题邮件,有些好的问题能....
的头像 工程师人生 发表于 07-28 11:07 353次 阅读
程序员怎样去问一个让双方都满意的好问题并最大程度的得到回复

程序员面试问题总结

面试问题总结 20180516
发表于 07-26 17:21 46次 阅读
程序员面试问题总结

百度程序员跳槽外企时薪翻倍!

百度程序员跳槽外企:生活平衡时薪翻倍!网友:买房要你的时薪?...
发表于 07-26 06:12 47次 阅读
百度程序员跳槽外企时薪翻倍!

哪里有程序员哪里就有代码

程序员太牛了 公司年会整成代码讨论会
发表于 07-24 09:32 51次 阅读
哪里有程序员哪里就有代码

工程师的业余实验室建立

    如果你在承担工作以外还另有研究兴趣;如果你面临或已经退休;如果你有科技制作或创造产品的愿望,为自己建一个业...
发表于 07-19 06:08 53次 阅读
工程师的业余实验室建立

工程师们遇到问题怎么办,赶快来答疑!

大家在平时工作的时候,一定会有一些这样那样的问题。这些问题包含技术、概念,项目流程还有职业规划方面不等。我们都有“问题”...
发表于 07-17 14:15 452次 阅读
工程师们遇到问题怎么办,赶快来答疑!

【VIP福利一】攻破模电!让你晋升大神的模电秘籍

本资料是专为电子工程师量身打造的模拟电子资料,包括书籍、案例、实用手册和精选电路,囊括众多模电知识点,但它绝不会是有着欺...
发表于 07-12 18:25 14810次 阅读
【VIP福利一】攻破模电!让你晋升大神的模电秘籍

架构师修炼课程介绍

     架构师的长处之一就是善于看到问题的本质。不过,什么是看到问题的本质?程序员应该如何修炼这个能力?...
发表于 07-11 08:02 67次 阅读
架构师修炼课程介绍

工程师们都适用,学习了这么久,不要再范而不精啦!

   一个好的硬件工程师实际上就是一个项目经理,他/她需要从外界交流获取对自己设计的需求,然后汇总,分析成具体的硬...
发表于 06-27 17:31 741次 阅读
工程师们都适用,学习了这么久,不要再范而不精啦!