软件开发工程师:被误解的高薪职业,成长之路充满挑战

2024-08-06
来源:网络整理

作者 | Lisa

无论是医生、老师、会计,工作内容都是人们容易理解的,而且这份工作在现实生活中也能持续发挥作用,但软件开发工程师这个岗位,真的很难描述。在程序员聚集的论坛里,我们总能看到与“软件开发”相关的讨论。甚至有不少网友质疑:除了工作,软件开发是不是一个没用的职业?

近年来,受过正规教育培训的IT人才数量剧增,市场几近饱和,甚至不断出现裁员潮,软件开发工程师仿佛被放在了裁员潮的最前线,声音少,关注度低,偶尔闹出点小动静,可能是负面新闻。如果你了解这个行业,一定知道,每一位软件开发工程师的成长都不容易。

Java 工程师、C++ 工程师和 PHP 工程师都属于同一类别。真正的软件开发工程师比全栈工程师的要求更多。除了基本的编程语言(C、C++ 或 Java)外,还必须了解数据库、AJAX 和其他前沿技术。你还应该具备一些网络工程和软件测试方面的知识。

一般来说,软件开发工程师不仅是软件设计师、软件架构师,更是优秀的程序员,精通各种技能,是标准的高薪技术人才,为什么他们总是被人揭穿悲观、无用呢?

软件开发是不是一个无用的职业?

一位国外软件工程师在和众多同事的聊天中总结了一句话:对于大多数人来说,软件工程开发是那些除了工作之外毫无用处的职业之一,这种技能在生活中几乎用不到。有网友调侃,他们也会修电脑、重装系统、清理电脑垃圾。在调查中,大多数软件开发工程师不会向家人详细介绍自己的工作,除非有人问起。甚至有人告诉家人,因为介绍的太详细,所以家人就带我去各个地方修。

虽然笑话不少,但也有些心酸,其实软件开发工程师在产品生命周期中的角色非常重要,涵盖需求、设计、开发、修改、发布等多个环节。没有传奇的一生,很多软件开发人员擅长通过编码解决生活中的问题,比如编写一些软件或者小程序,自动运行一些重复而复杂的任务;为零售店编写网站或App,方便用户购买商品;为家电编写控制系统;编写程序,实现智能化的目的;编写简单的日历提醒软件,避免忘记重要的约会……有业内人士表示,有没有用,要看用户是否真的需要,只要有需求,那才是软件开发工程师的价值所在。

此外,在谷歌、苹果等外资一线科技公司工作的软件开发工程师,年薪早已在百万元左右,而中国2010年软件出口额达215亿元,软件从业人员达72万人,但人才缺口依然巨大,尤其是高素质的软件工程人才更是严重匮乏。

所以,这个职位不是没用,而是顶尖人才还没有到位。

软件质量越来越差是开发人员的错吗?

一个优秀的软件开发工程师,必须对自己的产品负责,如今一部手机就能满足吃饭、休闲、旅游、娱乐等所有需求,而只需要几个APP就能搞定一切,软件产品越来越多,但真正能算颠覆性创新的却少之又少,基础软件的质量似乎也越来越差了,这难道要怪开发者吗?

在V2EX上,有一位开发者深夜发了一篇帖子,标题是《底层开发性价比越来越低,基础软件质量会越来越差》,他表示,这句话前半句是当前的事实,后半句是基于事实对未来的推论,也就是说,未来,基础软件的质量会越来越差。这怎么说呢?

他认为,如今只有极少数年轻人愿意维护和学习前辈们耗费数十年时间编写的数千万行代码,基础软件的补丁质量也在逐年下降。《平行世界的守护者》更倾向于“不重新发明轮子”的理念。

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

文档开发工具_开发文档制作_小程序开发文档价钱

当然,不少工作在一线的底层开发者也对此表示不满,认为中国还有很多开发者重视基础软件质量,愿意对前辈写好的底层代码进行更新迭代,但这个群体的话语权太小,声音太弱,难以被外界听到。

当然也有网友认为这不完全是软件工程师的错,在软件开发过程中,很多公司经常会更改需求,最终开发出来的产品就成了一堆无用的代码。匆忙之中,大部分软件开发工程师为了节省设计时间,自然无暇评估项目的收益和成本,而造成的后果往往是十分痛苦的修改和更新,不同开发人员之间的协作还可能影响到系统的其他功能,导致整个软件开发流程漏洞百出。

所以软件的质量不能单纯由软件开发工程师来决定,还涉及到多人协作、部门配合等问题,把所有责任都推到工程师身上,未免有些痛苦。

如何避免无用代码的积累?

当曾经向往的职业变成日复一日一堆无用的代码时,开发人员多少有些灰心丧气。虽然整个产品的质量无法保证,但至少能在代码层面下些功夫。在日常软件开发中很常见。需求频繁变更的问题根源在于搞清楚软件开发的目的。代码是否有用,最终的决定权应该在用户手中,如果一段代码有符合用户要求的功能,有商业价值,那它就是有用的。

软件开发过程中,需求变更、代码修改很正常,但这种不确定性需要在一定范围内,最好的解决方案可能就是迭代开发,又称迭代增量开发,将整个开发周期划分为若干个时间段,每隔固定的时间段对软件进行一次迭代,每经过几次迭代后进行全面测试、大版本更新,回顾开发成果的质量,这个过程中最重要的是倾听最终用户的意见,以便及时进行调整优化,避免出现无效需求,尤其是决策者一时兴起做出的决定。

在开发之前,技术负责人一定要准备好相关文档,确定工程师之间的分工,特别是需要协同完成的部分。另外团队会尽量抽出时间和精力来写代码,尽量降低代码的复杂度。他们之间的代码往往会互相影响。可以考虑让这样的程序员负责独立开发模块,减少对整个项目的影响。

长期以来,测试在国内并没有得到足够的重视,一个测试团队至少应该有白盒测试、效率测试、单元测试等各类专业人员,不建议等到所有功能都完成后才开始测试,最好是完成一个功能就立刻交给测试人员,测试人员在测试阶段应该完全掌控主动权,开发人员一定要尊重测试人员的劳动成果。

说到底,软件开发是一个非常复杂的任务,为了避免过程中出现错误,很多公司都探索并建立了成熟完整的代码编写规范,包括变量命名规则、层次设计、类和接口设计、以及最终的代码。大家都知道,最重要的不是会写代码,而是学会解决问题,做一些真正有价值的事情。

毫无疑问,软件工程开发是一个有价值且富有挑战性的工作,这种价值不仅仅体现在工作中,很多优秀的软件产品已经对用户的生活产生了影响,这也是很多一线科技公司不可或缺的一部分。它是一份工作,但它的价值有多大,取决于做这件事的人,如果开发者本身技术不精,很容易把事情弄得更糟。

参考链接:

Q 词语 Q 时刻

您认为现阶段软件工程还有价值吗?

为什么软件工程现在越来越不受重视了?

点击查看更少的错误

分享