QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

一个沉重的问题:软件开发到底还有价值吗?

  • 2019-02-18
  • 本文字数:2849 字

    阅读完需:约 9 分钟

一个沉重的问题:软件开发到底还有价值吗?

无论是医生、老师,还是会计,都很容易让人理解工作内容,并且这项工作在现实生活中也可以继续发挥作用,但软件开发工程师这个岗位实在是不好描述。纵观国内外不少程序员扎堆的论坛,我们总能看到与“软件开发”相关的讨论,不少网友甚至发出质疑:除了工作,软件开发是无用职业吗?


近几年,科班和培训出身的 IT 从业人员数量激增,市场几近饱和,甚至裁员风波不断,软件开发工程师仿佛被放在了裁员一线,声音少,关注度低,偶尔发出一些声响还可能是负面新闻。如果了解这个行业,就一定知道每位软件开发工程师的成长都实属不易。


Java 工程师、C++工程师、PHP 工程师都属于单一类别,真正的软件开发工程师比全栈工程师要求还多,除了基础编程语言(C、C++或者 Java),还要了解数据库、JavaScript、AJAX、Spring 等前沿技术,对网络工程和软件测试等也要有所涉猎。


一般来说,软件开发工程师既是软件设计师、软件架构师,也是一个优秀的程序员,可谓是门门武器皆可把玩,标准的高薪技术人才,为什么总是被爆出悲观无用论调呢?

软件开发是无用职业吗?

国外一位软件工程师在与众多同事聊天中总结出一句话:对大多数人而言,软件工程开发是一个除工作之外无用的职业之一,这项技能在生活中几乎用不到。不少网友跟帖调侃称,平时还可以修修电脑、重装系统、清理电脑垃圾等。调查中,大多数软件开发工程师不会详细向家人介绍自己的工作,除非有人刨根问底,也有人曾因为介绍得过于详细而被家人拉去到处修电脑。


虽然调侃成分居多,但也不免传递出一些心酸。实际上,软件开发工程师在产品生命周期中的作用非常重大,涵盖需求、设计、开发、修改、发布等多个环节,生活中也没有传说的那么无趣和无用。很多软件开发工程师擅长通过编码解决生活问题,比如编写一些软件或小程序自动运行部分重复且复杂的工作;为零售商店编写网站或者 APP,方便用户选购商品;为家居编写控制程序以达到智能目的;编写简单的日程提醒软件,以免忘记重要约会…有业内人士表态,是否有用取决于用户是否真的需要,只要需要就是软件开发工程师的价值所在。


此外,在国外一线科技公司工作的软件开发工程师,比如谷歌、苹果,薪资水平早已达到年薪 100 万人民币左右。反观国内,2010 年的软件出口规模达到 215 亿元,软件从业人员达到 72 万人,虽然如此,但人才缺口依旧巨大,尤其是高素质软件工程人才,极度短缺。


所以,这个岗位不是无用,而是顶尖人才尚未到位。

软件质量越来越差是开发的锅吗?

一个优秀的软件开发工程师,必须对自己的产品负责。如今,一个手机就可以解决吃饭、休闲、出行、娱乐等各方面需求,只要几个 APP 就可以搞定全部,软件产品越来越多,但真正可以算得上颠覆性创新的东西却很少,基础软件的质量似乎越来越差,这个锅应该开发背吗?


在 V2EX 上,某开发者深夜发表了一篇题为“底层开发性价比越来越低,基础软件的质量将会越来越差”的帖子,他表示,前半句是当前事实,后半句则是基于事实对未来的推断,也就是说,未来,基础软件的质量将会越来越差,这又从何说起呢?


他认为,现在的年轻人中只有很小一部分愿意去维护和学习前人花费数十年时间,整理出的数千万行代码,基础软件的补丁质量在逐年下降。大部分年轻人不愿意做“平行世界的守护者”,更加赞同“不重复造轮子”的说法。


随着市场对产品研发和迭代周期的要求越来越短,各种敏捷开发工具应运而生,与以往相比,同样的功能只需要很少的特定代码就可以实现,软件开发工程师花费的时间确实变少了,但对性能和用户体验的关注也在下降,这也导致大量软件流入市场,但整体质量却是在下降。


当然,不少奋斗在一线的底层开发者对此也表达了不满,认为国内尚有很多开发者重视基础软件质量,并愿意更新迭代前人编写的底层代码,只是这个群体的话语权太少,被外界听到的声音太弱。


当然,也有网友认为,这也不全是软件工程师的问题,很多公司在软件开发过程中往往是需求提了改,改了提,最终开发的产品成了一堆无用代码堆积;工期一再压缩,为了赶时间,大部分软件开发工程师不得已省去设计时间,自然没工夫评估项目效益和成本,后果往往是非常痛苦的修改和更新,不同开发者之间的协作也可能影响系统其他功能,导致整个软件开发流程漏洞百出。


因此,软件质量好坏不是单纯依靠软件开发工程师就可以解决的,这其中还涉及到多人协作,部门合作等问题,这个锅全部砸在工程师身上,也是有点痛。

如何避免无用代码堆积?

当曾经向往的职业变成一日又一日的无用代码堆积,多少让开发者有些心灰意冷,虽然无法保证整个产品质量,但至少可以在代码层面下点功夫。无用代码堆积这种现象在日常软件开发中非常普遍,对于需求频繁被修改的问题,根源在于弄清楚软件开发的目的是什么,代码有没有用的最终决定者应该是用户,如果一段代码具备的功能符合用户需求,具备业务价值,那么就是有用的。


在软件开发过程中,需求变更和代码修改是很正常的事情,但这个不确定性需要在一定范围内。对此,最佳的解决方案可能是迭代开发,也叫迭代增量式开发,将整个开发周期分解为若干时间段,每隔一段固定时间就对软件进行一次小迭代,每迭代几次就进行一次全面测试和大版本更新,对开发成果进行质量评审,这个过程最重要的是听取最终用户的意见,以便及时调整优化,避免无效需求,尤其是决策者拍脑门出来的决定。


开发之前,技术负责人务必准备好相应文档,确定好各工程师的分工,尤其是需要协同完成的部分。另外,团队尽量抽出时间和精力进行代码 Review,并以降低代码复杂度为目标,如果不同工程师之间的代码间经常互相影响,可以考虑让这类程序员负责独立开发模块,降低对整个项目的影响。


长期以来,测试在国内的重视程度并不够,一个测试团队起码应该有白盒测试、效率测试、单元测试等各类专职人员,不建议在所有功能完成之后才开始测试,最好是完成一个功能就马上交给测试,测试阶段应由测试完全掌握主动权,开发必须尊重测试人员的工作。


归根结底,软件开发是一项非常复杂的工作,为了避免过程出错,很多公司已经摸索并建立了成熟且完整的代码编写规范,包括变量命名规则、层次化设计、类和接口设计,到最后的代码 Review 都很清楚,最重要的不是会写代码,而是学会解决问题,做真正有价值的事情。


毫无疑问,软件工程开发是一项有价值且极具挑战的工作,这种价值不仅体现在工作中,很多优秀的软件产品已经对用户生活产生影响,这也是很多一线科技公司不可或缺的岗位,但价值到底有多大还要取决于做的人,如果开发者自身技艺不精,很容易弄巧成拙。


参考链接:


https://www.reddit.com/r/EngineeringStudents/comments/4cqg19/software_engineering_what_seems_to_be_useless/


https://www.perlmonks.org/?node_id=405439


https://www.zhihu.com/question/28158159


需求日新月异,挑战与成就共存,不如来看看国内外一线工程师怎样应对成长困境。2019 年 5 月 6-8 日,QCon全球软件开发大会与您相约北京国际会议中心,超 100 位国内外资深技术专家,聚焦 26+热门专题,从工程实践出发,深度剖析技术痛点,助你提升技术视野。


2019-02-18 07:3112078
用户头像
赵钰莹 极客邦科技 总编辑

发布了 884 篇内容, 共 652.0 次阅读, 收获喜欢 2680 次。

关注

评论 5 条评论

发布
用户头像
就像医生要分xx科的医生,老师也要分是数学老师,还是英语老师物理老师或是其他老师,所以软件开发工程师也要分,但是不排除软件开发工程师广义之说,就像8090年代大家谈论到程序员一样,那时候的程序员含义太广泛了
2019-10-23 21:33
回复
用户头像
很多外行人对IT行业看的只是热闹,软件架构师可以做软件工程师和设计师的事情,反过来却不行,软件工程师在IT行业里面是一个低级别且基础的职位,所以不要期望软件工程师是一个全能战士,什么都做最后必然就是什么都不精,既然是工程,肯定也不是一个工程师就能解决所有的问题,能一个人拿出来的也不太可能是多大的产品。只有团队合作,各路人马资源到位才能保证产品质量。
2019-10-23 21:06
回复
用户头像
软件架构师可以做软件工程师和设计师的事情,反过来却不行,软件工程师在IT行业里面是一个低级别且基础的职位,所以不要期望软件工程师是一个全能战士,什么都做最后必然就是什么都不精,既然是工程,肯定也不是一个工程师就能解决所有的问题,能一个人拿出来的也太可能是多大的产品。只有团队合作,各路人马资源到位才能保证产品质量。
2019-10-23 21:01
回复
用户头像
专业的软件开发公司
http://www.app-p.com
2019-08-01 11:35
回复
用户头像
软件开发公司定制-「你所不知道的」

公司实力
公司规模是一家软件开发公司最直观的实力体现,公司大小、员工人数、公司成立年限、组织结构细分等,从这些方面我们可以建立对这家软件公司最初的印象。 技术团队:一个软件开发公司的技术团队是一家软件公司的灵魂所在,项目经理、架构师、软件开发人员、美工和软件测试人员构筑一个团队,其中优秀而资深的软件开发人员则是灵魂中的灵魂,软件开发的最终效果是由程序开发人员决定的,所以要清晰了解这支技术团队的技术研发能力。对于项目的开发、测试、集成、验收是否有做专业的规划,在每个环节期间有否出具一些专业的报告和文档类文件,有否获得过一些著名的奖项,有没有发表过一些学术论文、公司是否获得一些软件开发资质,如:CMMI3级评估认证\国际权威软件企业认定证书\ISO9001质量管理体系认证证书等等、是否获得一些软著证书、是否能提供一些成功的案例。而从这些方面的资质证书是可以直接反映出广州软件开发公司的专业程度。

文章来源:https://www.it0755.com
展开
2019-08-01 11:33
回复
没有更多了
发现更多内容

干货复盘 | 易观分析“出海非洲战略”专题分享

易观分析

非洲战略

使用 Provider 实现 Flutter 不相关页面状态数据共享

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

linux之tar使用技巧

入门小站

Linux

成本节省 50%,10 人团队使用函数计算开发 wolai 在线文档应用

阿里巴巴中间件

阿里云 中间件 函数计算

人人皆为开发者?不可错过的低代码发展新趋势

云智慧AIOps社区

大前端 低代码 数据可视化

我们为什么选择使用分布式持续交付新星 Zadig ?

Zadig

DevOps 云原生 CI/CD 软件交付

英伟达周锡健:设计到数字营销的最后一公里

阿里云弹性计算

vr XR 视觉计算

一文学完Linux常用命令

编程攻略

Linux

为什么校招面试中“线程与进程的区别”老是被问到?我该如何回答?

宇宙之一粟

线程 进程 5月月更

小程序和App同时拥有?两者兼得的一种技术方案

Speedoooo

微信小程序 APP开发 小程序容器 小程序转app

Apache SeaTunnel(Incubating)与计算引擎的解耦之道,重构API我们做了些什么

Apache SeaTunnel

Apache 大数据 开源 DolphinScheduler workflow

前端食堂技术周刊第 38 期:Remix v1.5.0、Babel v7.18.0、前端部署十五章、Tree Shaking 问题排查指南、一文搞懂前端技术发展

童欧巴

前端 Remix 前端部署

直播预告丨Hello HarmonyOS进阶课程第四课——ArkUI动画开发

HarmonyOS开发者

HarmonyOS arkui

“双碳”大局中再看业务合同电子化

鲸品堂

节能 提效降本 双碳

使用postMessage对iframe进行跨域数据传输

空城机

iframe postMessage 5月月更

企业引流和留存,“App+小程序”是较优技术策略

Speedoooo

微信小程序 APP开发 小程序容器 小程序转app

混合办公首选轻薄本,华为MateBook的“三重变身”改变了什么?

脑极体

十、云原生网络架构

穿过生命散发芬芳

网络架构 5月月更

Apache ShenYu 网关正式支持 Dubbo3 服务代理

阿里巴巴中间件

阿里云 开源 微服务 云原生 dubbo

IET 试水SiFL中文项目 为中国工程师“走出去”创造宝贵机遇

E科讯

做了5年开源项目,我总结了以下提PR经验!

OpenHarmony开发者

OpenHarmony 开源生态

Markdown语法简介

工程师日月

markdown语法 5月月更

创业、女性、数字化:后COVID-19世界的复苏“铁三角”

脑极体

Hoo研究院|区块链简报 20220523期

区块链前沿News

#区块链# Hoo 热点

【刷题第16天】数组中出现次数超过一半的数字

白日梦

5月月更

第一梯队,增速第一

天翼云开发者社区

热烈庆祝“海泰密码技术融合创新中心&数据中心重启安全工程”双中心智能重启用

电子信息发烧客

网络安全 科技 科技企业

多款顶级好用的 Vue 表单设计器测评推荐,可拖拽生成表单

蒋川

Vue Element 组件 表单设计 Ant Design

在星云科技,我们使用 Zadig 实现多环境并行发布,上千次周部署

Zadig

DevOps 云原生 CI/CD 软件交付

天翼云成为“云优化能力提升计划”首批成员单位!

天翼云开发者社区

10分钟,将微信小程序转换成App

Speedoooo

微信小程序 移动开发 小程序容器 小程序转app

一个沉重的问题:软件开发到底还有价值吗?_语言 & 开发_赵钰莹_InfoQ精选文章