程序员和工程师有什么不同

版权声明:本文为北京尚学堂原创文章,未经容许不得转载。​html

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

惋惜,不少软件开发人员未必清楚二者的差异,甚至作了好久也只算程序员而不算严格意义上的工程师。因此我就本身的观察和经验,谈谈程序员和工程师的差异。面试

第1、工程师不写黑箱程序算法

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

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

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

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

这方面,互联网和软件开发的大厂会更加关注一些,但也不是说我的就毫无追求的空间了。网络爬虫你们都会写,你们也都知道若是要数据抓得准,调试起来 很麻烦。我有个朋友在某大厂写过一套“可视化”的爬虫,能够用逐步操纵语句的执行,迅速定位问题所在。这种水平的工程师,属于可遇而不可求的类型,每次说 起来你们仍然啧啧称赞。更多精彩内容关注微信公众号:北京尚学堂。数据结构

第2、工程师注意实现和接口分离数据结构和算法

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

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

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

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

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

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

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

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

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

我常常反思本身接受的教育,在学校里写程序,和工做了写程序,有那么一点相同,但又好像彻底两回事,到底有什么不一样,只有亲自体会、思考了才能明 白,因此我想把本身的所见所感写出来。悟性好的有机会接受很好训练的同窗,估计不须要了解这些。但对于没有这样条件的同窗,希望个人这点念叨能给大家一点 帮助。​更多精彩内容关注微信公众号:北京尚学堂。

若是你的目标是就业,而且是高薪就业,那么北京尚学堂是你正确的选择。北京尚学堂一直在为改变中国IT教育努力着。十年以来,北京尚学堂坚守“为莘莘学子改变命运而讲课”这份情怀,不忘初心。感谢你们的阅读!​

本文做者北京尚学堂原创。如需转载请联系做者受权,未经受权,转载必究。

更多猛料!欢迎扫描上方二维码关注北京尚学堂官方微信公众号(资料领取验证消息:156)

相关文章
相关标签/搜索