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

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

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

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

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

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

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

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

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

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

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

(责任编辑:88棋牌登陆)

本文地址:http://www.nyssenate46.com/xiagan/2020/0916/1167.html

上一篇:聚焦中原院士专家智库论坛在京举办 下一篇:科技之花开88棋牌登陆满园

发表评论

您的电子邮件地址不会被公开。必填字段已标记*