开发软件的职业

核心提示无论是医生、教师还是会计,人们都很容易理解工作内容,这份工作在现实生活中也能继续发挥作用,但是软件开发工程师这个职位真的很难描述。纵观国内外众多程序员聚集的论坛,总能看到与“软件开发”相关的讨论。很多网友甚至质疑:软件开发是工作之外的无用职

无论是医生、教师还是会计,人们都很容易理解工作内容,这份工作在现实生活中也能继续发挥作用,但是软件开发工程师这个职位真的很难描述。纵观国内外众多程序员聚集的论坛,总能看到与“软件开发”相关的讨论。不少网友甚至质疑:软件开发是工作之外的无用职业吗?

近年来,培训班培养的IT员工数量激增,市场几乎饱和,甚至裁员风波不断。软件工程师似乎被放在了裁员的第一线,话语权很小,关注度很低。偶尔有些杂音甚至可能是负面新闻。如果你了解这个行业,你一定知道每个软件开发工程师成长起来都不容易。

Java工程师,C++工程师,PHP工程师都属于一类。真正的软件开发工程师需要的不仅仅是全栈工程师。除了基本的编程语言,还要了解数据库、Javascript、AJAX、Spring等前沿技术,参与网络工程和软件测试。

一般来说,软件开发工程师不仅是软件设计师、软件架构师,还是一名优秀的程序员。可以说任何武器都可以玩。为什么标准的高薪技术人才总是接触到悲观无用的论调?

软件开发是无用的职业吗?

国外一位软件工程师在和很多同事聊天中总结了一句话:对于大多数人来说,软件工程开发是除了工作之外无用的职业之一,这种技能在生活中几乎用不到。很多网友开玩笑说,平时可以修电脑,重装系统,清理电脑垃圾。在调查中,大部分软件开发工程师都不会向家人详细介绍自己的工作,除非有人刨根问底,也有人因为介绍太详细而被家人拉着到处修电脑。

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

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

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

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

一个优秀的软件开发工程师必须对自己的产品负责。现在一部手机就能解决吃饭、休闲、旅游、娱乐等需求。而且只有少数几个app能做到这一切。软件产品越来越多,但真正能算颠覆性创新的东西很少。基础软件的质量好像越来越差了。这锅该不该开发?

在V2EX上,一个开发者深夜发表了一篇题为《底层开发性价比越来越低,基础软件质量会越来越差》的帖子。他说前半句是现在的事实,后半句是根据事实对未来的推断。也就是说,在未来,基础软件的质量会越来越差。我们能从哪里开始?

他认为,只有少数年轻人愿意维护和学习前人几十年编写的几千万行代码,基础软件的补丁质量逐年下降。大多数年轻人不想做“平行世界的守护者”,认同“不要重复造轮子”的说法。

随着市场要求产品开发和迭代的周期越来越短,各种敏捷开发工具应运而生。与过去相比,同样的功能可以用更少的具体代码实现。诚然,软件开发工程师花的时间少了,但他们对性能和用户体验的关注也在下降,这也导致大量软件进入市场,但整体质量在下降。

当然,很多奋斗在一线的底层开发者也对此不满。他们认为国内还是有很多开发者重视基础软件的质量,愿意更新前人写的底层代码,但是这个群体的话语权太少,外界听不到。

当然,也有网友认为这不全是软件工程师的问题。在软件开发的过程中,很多公司经常会修改自己的需求,最后开发出来的产品变成了一堆无用的代码。时长被一次次压缩。为了赶时间,大部分软件开发工程师别无选择,只能节省设计时间。自然,他们没有时间去评估项目的收益和成本。后果往往是痛苦的修改和更新。不同开发人员之间的协作还可能影响系统的其他功能,导致整个软件开发过程出现漏洞。

所以软件的质量问题,不仅仅是软件开发工程师可以解决的,还需要很多人和部门的合作。所有的锅都落在了工程师身上,有点痛苦。

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

当曾经向往的职业日复一日变成一堆无用的代码时,开发者多少有些心灰意冷。虽然不能保证整个产品的质量,但至少可以在代码层面做一些努力。无用代码堆积的现象在日常软件开发中非常普遍。对于需求频繁修改的问题,根源在于搞清楚软件开发的目的是什么。一个代码是否有用的最终决定因素应该是用户。如果一段代码具有满足用户需求和商业价值的功能,那么它就是有用的。

在软件开发过程中,需求变更和代码修改是很正常的事情,但是这种不确定性需要在一定的范围内。对于这一点,最好的解决方案可能是迭代开发,也称为迭代增量开发。整个开发周期分为几个时间段,软件每隔一段时间进行一次小的迭代。每次迭代后,进行全面的测试和大版本更新,并审查开发结果的质量。在这个过程中,最重要的是听取终端用户的意见,以便及时调整优化,避免无效需求,尤其是决策者做出的决策。

开发前,技术总监必须准备好相应的文档,确定工程师之间的分工,尤其是需要合作完成的部分。此外,团队试图在代码审查上花费时间和精力,目标是降低代码复杂性。如果不同工程师的代码经常相互影响,可能会考虑由这样的程序员负责独立开发模块,以减少对整个项目的影响。

长期以来,测试在中国没有得到足够的重视。一个测试团队至少要有各种专职人员,比如白盒测试、效率测试、单元测试等。不建议在完成所有功能后开始测试。最好是马上给测试一个函数。测试应该在测试阶段占据主动,开发必须尊重测试人员的工作。

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

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

 
友情链接
鄂ICP备19019357号-22