医生、教师和会计都很容易理解工作内容,这项工作可以在现实生活中继续发挥作用,但软件开发工程师的职位真的很难描述。在国内外的许多程序员论坛上,我们总是可以看到和“软件开发”很多网友甚至质疑相关讨论:软件开发除了工作是无用的职业吗?
近年来,出身于科班和培训的 IT 员工数量激增,市场几乎饱和,甚至裁员。软件开发工程师似乎被放在裁员的第一线,声音少,注意力低。偶尔发出一些声音也可能是负面消息。如果你了解这个行业,你必须知道每个软件开发工程师的成长并不容易。
Java 工程师、C 工程师PHP 工程师属于单一类别,除了基本的编程语言外,真正的软件开发工程师比全栈工程师要求更多(C、C 或 Java),还要了解数据库,JavaScript、AJAX、Spring 等前沿技术,还应涉猎网络工程和软件测试。
一般来说,软件开发工程师不仅是软件设计师、软件架构师,也是优秀的程序员。可以说,他们可以玩所有的门武器。为什么标准的高薪技术人才总是用?
软件开发是一个无用的职业吗?一位外国软件工程师在与许多同事聊天时总结道:对大多数人来说,软件工程开发是除了工作之外的无用职业之一,在生活中几乎没有使用。许多网民开玩笑说,他们也可以修理电脑,重新安装系统,清理电脑垃圾。在调查中,大多数软件开发工程师不会向家人详细介绍他们的工作,除非有人问底部,有些人因为介绍太详细而被家人拉去到处修理电脑。
虽然大多数嘲笑成分,但它不可避免地会传达一些悲伤。事实上,软件开发工程师在产品生命周期中起着非常重要的作用,涵盖了需求、设计、开发、修改、发布等环节,生活并不像传说那么无聊和无用。许多软件开发工程师擅长通过编码解决生活问题,如编写一些重复和复杂的软件或小程序自动操作;为零售商店编写网站或 APP,方便用户购买商品;为家庭编写控制程序,达到智能目的;编写简单的日程提醒软件,避免忘记重要的约会...... 业内人士表示,它是否有用取决于用户是否真的需要它,只要它是软件开发工程师的价值。
此外,谷歌、苹果等在国外一线科技公司工作的软件开发工程师,已经达到了年薪100万元左右。相比之下,2010年软件出口规模达到 215 亿元,软件从业人员达到 72 万人。然而,人才差距仍然巨大,尤其是高素质的软件工程人才。
因此,这个职位并非无用,而是顶尖人才还没有到位。
软件质量越来越差是开发的锅吗?一个优秀的软件开发工程师必须对自己的产品负责。如今,一部手机可以满足饮食、休闲、旅行、娱乐等方面的需求,只有APP 可以做到这一切。软件产品越来越多,但很少有东西能真正被视为颠覆性创新。基本软件的质量似乎越来越差。这个锅应该开发背面吗?
在 V2EX 上面,一位开发者在深夜发表了一篇题为“底层开发性价比越来越低,基础软件质量越来越差”在帖子中,他说前半句是现实,后半句是基于事实对未来的推断,也就是说,在未来,基础软件的质量会越来越差。我们从哪里开始?
他认为,只有少数年轻人愿意维护和学习他们的前辈几十年,整理出数千万行代码,基本软件的补丁质量逐年下降。大多数年轻人都不愿意这样做“平行世界的守护者”,更加赞同“不要重复轮子”的说法。
随着市场对产品研发和迭代周期的要求越来越短,各种敏捷的开发工具出现在历史时刻,与过去相比,相同的功能只需要少量的特定代码,软件开发工程师花费的时间越来越少,但性能和用户体验也在下降,这也导致大量的软件进入市场,但整体质量正在下降。
当然,许多在前线挣扎的底层开发人员也对此表示不满,认为中国仍有许多开发人员关注基本软件的质量,并愿意更新迭代前人编写的底层代码,但该组的声音太少,外界听到的声音太弱。
当然,一些网民认为这并不都是软件工程师的问题,许多公司经常需要改变软件开发过程,最终开发产品成为一堆无用的代码积累;工期反复压缩,为了赶上时间,大多数软件开发工程师必须节省设计时间,自然没有时间评估项目效益和成本,后果往往是非常痛苦的修改和更新,不同开发者之间的合作也可能影响系统的其他功能,导致整个软件开发过程的漏洞。
因此,软件质量不能仅仅依靠软件开发工程师来解决,这也涉及到多人合作、部门合作等问题,锅都击中了工程师,也有点痛苦。
如何避免无用代码的积累?当一个曾经渴望的职业日复一日地变成无用的代码积累时,开发人员会感到沮丧。虽然不能保证整个产品的质量,但至少可以在代码层面上努力工作。无用代码积累在日常软件开发中非常常见。对于需求频繁修改的问题,根本原因是找出软件开发的目的,代码是否有用的最终决定应该是用户。如果代码的功能满足用户的需求并具有业务价值,则是有用的。
在软件开发过程中,需求变更和代码修改是正常的,但这种不确定性需要在一定范围内。在这方面,最好的解决方案可能是迭代开发,也称为迭代增量开发,整个开发周期分解为几个时间段,每次固定时间小迭代软件,每次迭代几次全面测试和大版本更新,开发结果质量评价,最重要的过程是听取最终用户的意见,以便及时调整优化,避免无效需求,特别是决策者的决定。
在开发之前,技术负责人必须准备相应的文件,以确定每个工程师的分工,特别是需要协作完成的部分。此外,团队试图花时间和精力来代码 Review,为了降低代码的复杂性,如果不同工程师之间的代码间经常相互影响,可以考虑让这些程序员独立开发模块,减少对整个项目的影响。
长期以来,测试在中国的关注不够,测试团队应至少有白盒测试、效率测试、单元测试等专职人员,不建议在所有功能完成后开始测试,最好立即完成功能,测试阶段应完全掌握主动性,开发必须尊重测试人员的工作。
归根结底,软件开发是一项非常复杂的工作。为了避免过程中的错误,许多公司探索并建立了成熟完整的代码编写规范,包括变量命名规则、层次设计、类别和接口设计,以及最终代码 Review 很清楚,最重要的不是写代码,而是学会解决问题,做真正有价值的事情。
毫无疑问,软件工程开发是一项有价值、具有挑战性的工作。这种价值不仅体现在工作中,还体现在许多优秀的软件产品中,影响了用户的生活。这也是许多一线科技公司不可或缺的职位,但价值取决于那些这样做的人。如果开发人员的技能不好,很容易弄巧成拙。