首页 > 针对人群 > 在职转行专区
免费专业试听课预约
报名后老师会尽快安排试听时间

程序员与软件工程师有什么区别?

邯郸翱翔

程序员与工程师没有什么不同,当然也有人会这样说,好好干两年的话,可以迅速从程序员成长为工程师,对这样的阐述,你会不会感到诧异,为什么我会有这样的理解,原因是从周边的很多招聘启事来看,程序员就等同于工程师,只不过工程师是换了一个好听的名字而已,但在实际工作中,两者确实有很大的不同点,程序员和工程师从本质来讲确实不同——程序员只负责写程序,而工程师可以再现实世界中创造出更有价值的程序。

但从软件开发人员本身来讲,他们甚至都不太清楚两者之间的关系,甚至做了很久也只能算是程序员而不是严格意义上的工程师,下面所讲内容,是关于程序员和工程师的差别,看看你到底了解多少?

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

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

不了解实情的外行人一定觉得很可笑,但你敢说他们技术不好,没有系统意识么?他们做的程序也都不简单,但充其量也只能算是“程序”,而不能称为广泛意义上的成熟系统。

如果你能很好地了解和考虑清楚所写程序需要对外提供什么操纵借口等等,等你吧一切都考虑的非常清楚,写出的程序尽在自己的掌握之中,那么你的一条腿就已迈进了工程师的大门。

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

下面有这样一道JAVA面试当中的一道题,请描述抽象类和接口的区别,通常大家会这样回答,接口和实现要分离,这种理解知识狭义上的特定语言提供的interface,没有真正考虑接口的真正含义。

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

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

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

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

以上三点内容是最重要的几个不同点,如果能够经常反思,不断总结,我想一定会找到相应的突破口,从程序员向工程师转变还有什么难度……


上一篇:待业找不到工作怎么办?it行业是首选

下一篇:软件开发需要学什么知识?学多久?

在线咨询

专业课程老师介绍

关注公众号

了解更多动态  >> <<  或者在线咨询