0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件工程师和程序员的区别

工程师人生 来源:wv 作者:简书网 2019-09-04 14:52 次阅读

软件工程师通常认为好的软件是采用正确的模式、遵守规范、制定规则、遵循最佳实践和正确处理流程的产物。

程序员知道这些都是狗屎。

相对于建设一座大桥,编写代码更像是创作音乐,编写书籍,拍摄电影,或者是绘画。事实上,编写代码更难。这需要我们做更多,使我们的产品不仅仅是好看或者好听那么简单。大家知道,好的音乐、绘画、文学作品不是关于如何循规蹈矩,更多的是关于如何打破常规,探索新想法。你以为音乐排行榜或者最佳销售榜上那些最流行的作品是因为遵守了什么标准或者规范而上榜的吗?如果是那样,那些榜单将会变得很不一样,而且也不那么流行,因为社会在向前发展,总会出现新事物,或者以不一样的观念审视旧事物,而且永远不会停止。

最好的程序员能够简单自然的完成他们想做的事情,工作稳定,而且有足够的直觉让自己不那么讨厌。通常那些被忽视的东西,要比显而易见的东西要重要的多。比如:相对于一个可配置的软件,我们更希望得到一个可以自己完成配置,或者干脆不需要配置的软件。我们大概没有意识到身边存在许许多多正在使用的运行良好的软件,因为它们只是在默默的在运行,我们不需要关心或者担心他们。当软件出现问题的时候,我们才会关心那些“软件工程师”是不是遵循了规范和流程,软件崩溃让我们很满脑,因为软件是一样关注人,关注解决问题的东西,而不仅是工具或者技术(直到有一天,你尝试了各种各样的软件最后发现一款合适的软件的时候才能深刻的理解这一点),也不是其他什么。当软件好用的让我们吃惊时,我们仍然不会记得什么规范什么流程,除非我们做过类似的事情。所以看起来只有软件工程师关心规范或者流程之类的东西。

我发现那些倾向于工程师的心态, 倾向于聚焦技术、代码、流程是否被正确执行、以及测量那些武断的规范或风格的执行是否到位 的人往往忽略了真正的问题是否被解决了?使用者的真正需要是什么?好的软件能够在用户体验、实际问题以及技术之间取得平衡。最好的结果通常来源于对三者都做微小的修改,但是如只聚焦于工程本身,那就显得过于短视。

当被要求遵守规范的时候、当纠结于繁复的流程的时候创造力被扼杀了,这是个问题。大部分主流的指导和流程是对管理友好的,管理者得到了他们想要的东西。但是软件工业发展非常快, 真正的创新不会产生自“最佳实践”。当工程师还在纠结于流程的时候,程序员则在不断创新,不断寻找更先进方法,这时候他们也许不会遵守流程,不会按部就班,但是他们往往能成功。

举个例子:也许大约200行 Node.js 代码也许能比10000行 java EE 代码更好跟容易的解决问题?也许稍微修改一下用户需求能大幅降低实现的复杂度?

当用户体验、软件功能、技术实现出现冲突的时候,只有程序员能看透其中的奥秘。而软件工程师倾向于忽略这些问题,因为在搞清楚到底出了什么问题之前他们已经决定该如何解决了。他们会控制变更,好像问题会自己修复一样。

当我14岁的时候我成为了一名程序员(自学的),后来我成为了设计师、架构师,然后我意识到我整天只是在画流程图,编写文档,这是在浪费时间,而且感觉糟透了。我现在48岁我又开始写代码了, 而且很喜欢,这是因为相比之前,我能让软件变得更快更好,让它能真正满足用户的需求, 而不是整天在宏观层面胡扯。

有些人认为雇佣工程师能够带来比卑微的‘程序员’更多的稳定性,但我更愿意雇佣程序员或者叫软件开发者,因为工程是反自然的,比如钢筋混凝土,我们如果正确的安装它,但是计算机、人、软件并不是这样运作的,想想一下你需要给一个飞行中的飞机更换零件。

对于我而言,编程和软件开发不仅仅是需要实践的天赋或艺术,虽然它的确需要一些规矩,而更多的是关于创造一些真正的新的充满希望的,让人快乐的或者能够带来真正价值的东西。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件工程师
    +关注

    关注

    8

    文章

    217

    浏览量

    21121
收藏 人收藏

    评论

    相关推荐

    AI编程工具会不会抢程序员饭碗

    AI编程工具可辅助编程,减少手动编码,提升效率,对程序员有积极影响也有挑战。程序员需深化技能、拓宽知识应对。长远看,AI与人类程序员将共生共荣。
    的头像 发表于 11-08 10:17 105次阅读

    FPGA算法工程师、逻辑工程师、原型验证工程师有什么区别

    ,还需要与软件工程师、硬件工程师紧密合作,对整个系统进行集成和测试。 总的来说,FPGA 算法工程师着重于算法优化,FPGA 逻辑工程师专注于逻辑设计,FPGA 原型验证
    发表于 09-23 18:26

    阿里云发布首个AI程序员,引领应用开发进入“分钟级”时代

    近日,在备受瞩目的阿里云上海AI峰会上,阿里云向全球开发者们展示了其最新的技术成果——首个“AI程序员”。这款创新应用基于通义大模型构建,具备了令人惊叹的多项技能,包括架构、开发工程师、测试
    的头像 发表于 06-24 10:36 616次阅读

    嵌入式软件工程师如何提升自己?

    嵌入式软件工程师如何提升自己? 作为一名嵌入式软件工程师,在这个充满机遇和挑战的领域里,如何提升自己显得非常重要,它决定了你未来的发展方向和成就。接下来,我们一起探讨一下。 1.奠定扎实
    发表于 06-12 11:20

    扎心灵魂小拷问:有了AI编写代码之后,软件工程师会被AI取代吗?

    软件开发者们有很多让他们焦虑的事情。他们最担心的不再是如何用他们最喜欢的编程语言(C、C++、Erlang、Java等)表达最新的算法。相反,这种担忧正逐渐被人工智能(AI)所取代。 在这里,我们将探讨AI编写代码的过程,并回答这个问题:AI会取代程序员吗?
    的头像 发表于 05-24 19:17 596次阅读
    扎心灵魂小拷问:有了AI编写代码之后,<b class='flag-5'>软件工程师</b>会被AI取代吗?

    索尼诚邀软件工程师参与PS免费手游平台设计

    据悉,近日,澳大利亚知名媒体TweakTown发现,索尼互动娱乐正在为其旗下的PlayStation Studios Mobile招募一名资深的软件工程师,负责设计PlayStation的免费手机游戏平台。
    的头像 发表于 05-23 17:08 691次阅读

    嵌入式软件工程师和硬件工程师区别?

    嵌入式软件工程师和硬件工程师区别? 嵌入式软件工程师 嵌入式软件工程师软件开发领域中的一种专
    发表于 05-16 11:00

    Cognition发布首款AI软件工程师Devin

    据报道,Cognition公司今日公布了其首款人工智能软件工程师——Devin,掀起了打造软件模式变革的序幕。该产品在SWE-bench代码测验中展现出卓越表现,甚至超过了部分顶级人类工程师的水准。
    的头像 发表于 03-13 10:57 587次阅读

    适者生存,程序员最终会流向哪……

    程序员没有永远的护城河!!就目前的互联网大环境来看,it行业已经是……
    的头像 发表于 03-11 17:11 387次阅读
    适者生存,<b class='flag-5'>程序员</b>最终会流向哪……

    薪资高、青春饭,是不是程序员=青楼?

    花期太短。技术迭代快,年龄大容易失业。 就这几年的互联网环境而言,不管是前端、Java、Android开发等等行业。已经感受到程序员不是太卷就是工作难找,薪资过低。以前高工现在拿着中低程序员薪资
    发表于 03-06 21:32

    企业老工程师和高校老师有啥区别

    电子工程师硬件
    电子发烧友网官方
    发布于 :2024年02月28日 17:50:00

    2024程序员的未来方向如何走?还看今朝

    这几年的IT行业想必大家已经感受到了,Android、Java、前端等等程序员都经历了大厂……
    的头像 发表于 02-02 09:45 776次阅读
    2024<b class='flag-5'>程序员</b>的未来方向如何走?还看今朝

    如何构建linux开发环境和编译软件工程、应用程序

    前文介绍了如何使用官方提供的镜像文件启动开发板,本文将说明如何构建linux开发环境和编译软件工程、应用程序
    的头像 发表于 01-03 12:31 1927次阅读
    如何构建linux开发环境和编译<b class='flag-5'>软件工程</b>、应用<b class='flag-5'>程序</b>

    嵌入式软件工程师常用的

    最近我换工作了,看见不同嵌入式软件工程师用的平台都不一样,所以我整理了一下。PlatformIO:多平台支持:PlatformIO支持多种嵌入式平台,包括Arduino、ESP8266、ESP32
    的头像 发表于 12-24 08:00 626次阅读
    嵌入式<b class='flag-5'>软件工程师</b>常用的