程序员就是软件工程师么

程序员就是软件工程师么,第1张

软件工程师和程序员区别主要表现在以下几方面:

1、概念不同:软件设计师是指能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档的实用性人才;而程序员的是从事程序开发、程序维护的基层工作人员。

2、工作职责不同:软件设计师主要职责是组织和指导程序员编写、调试程序,并时软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;而程序员主要负责软件项目的详细设计、编码和内部测试的组织实施,对小型称件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。

3、拥有一定的编程能力的都能称为程序员,不需要考证;而软件设计师需要通过计算机软件资格考试的中级考试。

工程师不是程序员,还是有区别的。

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

第一,工程师不写黑箱程序。

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

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

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

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

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

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

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

程序员和工程师有什么不一样?

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

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

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

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

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

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

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

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

软件工程师和程序员区别主要表现在以下几方面:

1、概念不同:软件设计师是指能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档的实用性人才;而程序员指的是从事程序开发、程序维护的基层工作人员。

2、工作职责不同:软件设计师主要职责是组织和指导程序员编写、调试程序,并时软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;而程序员主要负责软件项目的详细设计、编码和内部测试的组织实施,对小型称件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。

3、拥有一定的编程能力的都能称为程序员,不需要考证;而软件设计师需要通过计算机软件资格考试的中级考试。

做技术是需要匠心的。什么是匠心?我们原本是有匠心的,我们如今还有匠心吗?我们为什么没有匠心了?为什么我们要重拾匠心?如何重拾匠心?

一 做技术是需要匠心的

中国古时的玉匠,切磋琢磨,用绳与砂浆,费数十载心力,终将浑然璞玉制成传世珍品,千年遗音在,犹见当年寂寞心。

日本传统的刀匠,将千锤百炼之钢反复锻凿、淬火、打造、磨制,每一处技至精微,每一处心入幽明——刀中有魂!

欧洲中世纪的石匠,在哥特式教堂的飞檐上雕刻出了灵兽状喷水嘴,虽不为世人所见,仍一丝不苟——每一凿中都有天堂!

米盖朗基罗花四年雕刻出了震惊世人的《大卫》,曹雪芹批阅十载创作出了艺术巅峰的《红楼》——任何伟大的作品背后都有一颗匠心。

二 什么是匠心?

匠心是对于作品而言的。

匠心是倾注于作品之中的精神、情感、乃至魂魄。

匠心发自于爱,是对作品视如己出的拳拳之心,是恒久忍耐又有恩慈。

匠心是出于这份爱的对于完美的追求,是追求中不避艰苦,是追求中自得其乐。

匠心是涵泳在作品之中的自我实现,是我与作品的相互完成,彼此造就。

在匠心看来,作品是我的至亲之物,栖居着我的精神,安放着我的灵魂。

匠心即是爱心 + 恒心 + 一片苦心 + 七窍玲珑心 + 出离心 + 寂寞心 + 金刚心 + 欢喜心 + 其人虽已殁,千载有余情。

三.我们原本是有匠心的

我们原本是有匠心的。

当年Ken Thompson 和 Dennis MRitchie 一起在贝尔实验室里苦心孤诣。

如今,没有人不知道Unix意味着什么,C意味着什么。

他们的匠心也彰显在Unix和C中令无数人为之惊叹、感怀。

四.我们如今还有匠心吗?

如今,我们再也难得见到“作品”问世。

甚至于“产品”也是少见。见得最多的则是“商品”。

对于我们而言,做什么东西并不重要,重要的是做这个挣不挣钱。于是我们冲着挣钱做了各种项目,C/S、B/S、前端、后端、数据库、Java、Net、安卓——仿佛无所不知,无所不晓,十年之后回首,觉得自己已然是全才。

我们从事了大量的劳动,写了几十万行代码。我们的工资越来越高,并为此沾沾自喜。

可是,这样的成就,无非是一个熟练工人的成就。

我们何曾拥有匠心?

五.我们为什么没有匠心了?

随着大生产时代的到来,那种田园诗般的男耕女织、带月荷锄归的工作方式,早已一去不复返。社会分工越来越细碎化,我们面对的是一个又一个的局部。在这之中需要的是规格化、标准化、量化和同质化。换言之,你所做的工作必须是合乎统一规范的,具有统一规格的单元,如此才能拼接到整体的工作中。因此,任何的创造性,任何私人性质的感情和精神的注入,归根到底,只是错误的根源。 ——我们于何处安放匠心?

如今,商品成为了一切物所具有的普遍的形式。没有什么不是商品。商品是以交换为目的的。我们生产任何劳务、产品、或服务,都是为了交换,为了换取一般等价物,即货币,即金钱。因此,钱成为了衡量一切的准绳。如今不乏伟大的商品诞生,可是伟大的作品却乏善可陈。商品需要的是批量生产,需要对消费者投其所好,当然商品也需要创意,可是那不是匠心!在一个由商品拜物教统治的时代,我们于何处安放匠心?

世界如此繁华,匠心未免太奢侈了!我们在喧哗与骚动中度日,有太多的追求,太多的比较,太多的你追我赶,太多的惶惶终日。每天有看不完的新闻,刷不完的微博,做不完的手头工作。我们为无尽的事情发愁,疲于奔命。匠心未免太奢侈了!早在我们出生的那一刻,我们就开始照着大家来活,大家都在读书,大家都在考学,大家都在找工作,大家都在结婚,大家都在买房,大家都在炒股,当我们跟着大家忙忙碌碌的时候,匠心自始就已沉沦!

六.为什么我们要重拾匠心?

假使我们没有匠心,我们将不会在工作中获得真正的快乐。因为我们不能自觉自由地工作,我们的工作是boss定义的,而不是自己定义的。如此一来,我们就与我们的劳动之间切断了血肉联系。我们的劳动成为了压迫我们、奴役我们的异己力量。我们沦为被迫劳动。我们真正的生活在下班之后开始。我们不停地抱怨:要不是为了几个臭钱,我才不要干这些。如何才能回归到那种田园诗般的劳作之中——我们必须重拾匠心!

唯有在拥有匠心之后,我们才能走向真正的自我实现。马斯洛将人的最高层次的需求定义为自我实现。一个自我实现的人,一个将自己的才能发挥到最大限度的人,才是那个获得最大心理满足的人。现实生活中唯有少数精英才能够成为自我实现人。但是这并不妨碍我们追求自我实现。一个有着庸碌之心的人,是不可能走向自我实现的。唯有重拾匠心,我们才能占有工作的全部意义,才能不避艰苦、精益求精,与自己的作品相互完成,彼此造就。

七.如何重拾匠心?

对于如何重拾匠心的问题,恐怕要留给每一个人来思考。而且是一个需要始终思考的问题。

在这里我并不想给出答案。

只希望能在这篇文章中能够看见你,看见我,看见大家。

能见众生便是如来,不易匠心方得始终。

如果你想在软件行业发展的话,建议你不要去做实施了!

实施类的工作主要就是到处跑,给用户安装软件,配置环境这些工作,基本不接触代码,或者说除了数据库 *** 作语句,其他的代码都将要搁置一边。

而且一份工作不可能三两天就辞职不干,不说多半年好吧,但6个月的时间足够你把所学的代码、编程知识忘得所剩无几,这样的话你还有心思在回到软件开发这方面来吗?或者你再温习以前的东西,重新学习,但是同样你拿实施的工作经验来做开发,公司是不会认可的!

以上就是关于程序员就是软件工程师么全部的内容,包括:程序员就是软件工程师么、驱动工程师是程序员吗、软件工程师和程序员有区别吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9298625.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存