新手工程师需要知道的 7 件事

简介: 今年已经是我从事软件开发行业的第七个年头,我觉得现在是一个好的时机向一些新入行的软件工程师分享一些我认为越早知道越好的知识。希望能对您有所启发。## 1. 需求总是会变也许您已经和团队成员评估了需求的合理性,并且达成了共识。您胸有成竹的认为产品需求不会再发生改变。但真相是残酷的,需求总是会因为各种各样的原因发生变化,例如:- 您或您的上司有了一个新的想法;- 产品的目标群体发生了变化

今年已经是我从事软件开发行业的第七个年头,我觉得现在是一个好的时机向一些新入行的软件工程师分享一些我认为越早知道越好的知识。希望能对您有所启发。

1. 需求总是会变

也许您已经和团队成员评估了需求的合理性,并且达成了共识。您胸有成竹的认为产品需求不会再发生改变。但真相是残酷的,需求总是会因为各种各样的原因发生变化,例如:

  • 您或您的上司有了一个新的想法;
  • 产品的目标群体发生了变化;
  • 攻克某项技术的成本超出了预期;

您需要意识到,正是因为这残酷的真相,我们才会有一个对于软件工程师重要的专业性评判标准:您是否能够编写有更好组织性的代码

这就引出了我们下一个主题。

2. 始终以编写更好组织性代码为目标

新手工程师有时候会执着于快速的实现功能,从而编写出「面条式」的代码,面条式代码是指代码一段段连接在一起,然后当代码规模到达一定程度后,会突然发现无法移动任何代码。任何对代码的改动,都将是一场噩梦。

因此新手工程师要比有经验的工程师更加厌恶需求变动,因为他们需要花更多时间理解和修改代码,有时甚至是需要重写整个模块。

所以,为了节省宝贵的时间,所有的工程师都应该站在更高的层次上,在编写代码前思考代码组织问题,我知道一些优秀的框架已经在语法层面上解决这个问题,但您应该在此基础上做的更好。

更好的代码组织意味着:

  • 更稳定的应用;
  • 更少的 Bug;
  • 更清晰的代码结构;
  • 代码能够更加灵活的变通与扩展;

您可以学习一些 MVC 思想,并将其应用在您的软件开发中。要知道「谋定而后动」在软件开发领域也是适用的。

3. 代码有保质期

相信我,您的代码总会过时,随着您技术水平的增长,功能的不断迭代,总有一天,您会发现有更好的方式可以组织您现有的代码。对于需要长期迭代的产品,放任代码过期,就是我们常说的「技术债务」。

优秀的工程师不会给未来的自己或接手的下一任工作者留下太多债务,这事关开发者的责任心和声誉,需要引起重视。

而且清除技术债务并非只是对产品有好处,在此过程中,您的技术水平也会不断提高。当您意识到代码临近过期,需要改动时,说明您的技术水平相较于以前已经大大提高了。

处理过期代码有两种方式:

  1. 重构:即保障功能接口输入/输出稳定,但内部结构优化的更加易读,易维护;
  2. 完全删了,重头写:您很少有机会这么做,不过当一段代码已经没有人能够理解,维护成本过于高昂时,这么做是必要的;

大多数工程师不重视代码重构工作,他们不了解或不愿意为代码添加单元测试并定期重构代码,这使得他们错失了宝贵的进步机会。作为新手工程师,您应该尽早意识到代码重构的重要性,并尽力劝说您的上级和合作伙伴,在开发计划中预留代码重构的时间。

4. 不要重复造轮子

新手工程师由于在工作初期认领不到有挑战性的工作,于是倾向于在实现功能模块时,即使有第三方库或框架可以使用,也会选择自己去实现。

这一行为的出发点值得肯定,作为工程师,我们都想证明自己的实力,但是优秀工程师的核心能力之一是在于充分调动现有的成熟资源。

很多时候,自己 DIY 的功能模块在健壮性和可靠性上都无法媲美社区成熟的功能模块,贸然使用自己 DIY 的功能模块会为产品添加风险,成熟的开发者应该极力避免。

我建议新手工程师不妨换一种思路,我们都是站在巨人的肩膀上才能看的更远,与其在工作中花大把时间重复造轮子,不如利用业余时间研究成熟轮子的优势,并在工作中发现新的挑战。

5. 文档是非常重要的

这包含了两层意思:

  1. 查阅文档非常重要
  2. 撰写文档非常重要

新手工程师有时会出于种种原因不愿意查阅官方文档,但事实是,查阅官方文档是工程师经常要做的事情。优秀工程师的核心职责是构思如何组织代码实现目标功能,并将其付诸实践,而查阅文档的过程,使我们准确挑选合适「建材」的必备途径。通过经常查阅文档,某个 API 最终会成为您的长期记忆,您的工作效率也会大大提升。

与查阅文档同样重要的是撰写文档,很可惜大多数工程师要么是重视不足,要么是无法撰写易读的文档。而这两者对于一份好文档而言是十分重要的。

文档的阅读者将会是所有对您当下工作感兴趣的人,包括未来的自己。对于一个没有文档或文档没有及时更新的大型项目而言,下场只有死亡。

请积极撰写产品或技术文档吧!

6. 如何面对陌生代码库

无论是刚入职一家公司,还是换了一个项目组,我们总是无法避免接手一个陌生的代码库,新手程序员往往在此时手足无措,不知道如何开始。

对此我的建议是:

  1. 运行该应用,尝试修改一些代码,看看程序是如何运作的;
  2. 分析目录结构,理解代码的组织方式;
  3. 查看项目引入的第三方库,了解它们的作用是什么;
  4. 对于要修改的核心逻辑,试着画一个流程图,搞清楚整个程序的逻辑是什么;

请务必确保您已经基本掌握了代码逻辑,再着手进行改动,否则无疑将增加代码的坏味道,您很有可能会在将来某个意料之外的时刻不得不偿还债务。

当您打算进入一个代码库,着手添加代码时,请务必确保您与原代码库的编码风格保持一致,即使您认为您的代码风格更加合理和优雅。

这么做的好处在于:

  1. 您的代码风格可能并非是最佳的,您在未来可能会对代码风格有新的想法;
  2. 当每个项目的参与者都把自己个性化的代码风格带入代码中时,代码就会变得越发难以阅读,也容易让下一个接手的开发者感到迷惑;

具备一定规模的开发团队,都会考虑统一代码风格,请您务必确保与团队要求的代码风格保持一致。如果您的团队没有统一的代码风格,那么就由您来主导建设吧,这正是您表现的好机会!

除此之外,新手开发者应该坚定「我一定能做到」的信念,我可以坦率的告诉您,在 Web 开发世界里,没有什么神秘的魔法,所有的问题最终都可以被解决,无论是软件开发的新手还是老手,区别只在于解决问题的思路和时间。

这正是软件开发行业的魅力所在,通过自己的努力解决一个棘手的问题,不仅会为所服务的企业解决问题,还能提升自己的专业水平,让心灵得到满足。所以请享受您当下的工作,并勇于解决任何问题。

7. 始终学习,永不止步

软件开发行业的特点之一便是,您需要通过不断学习提升自己在市场的竞争力,而编程世界也总是会有学不完的思想,技术和产品。

您需要清楚地认识到一个残酷的事实,在大多数工作环境中,您获得进步的动力只能来源于自己。很多团队都没有完善的培训机制,也不会为您制定职业发展规划,团队成员疲于奔命完成自己的业绩或是不感兴趣与您讨论前沿的技术话题,所以您更需要保持警惕,寻求不断进步。

请确保您的技术水平总是高于,至少是配的上您的工作年限。否则工作的时间越久,您的市场竞争力会越低。请勇敢的踏出当前的舒适圈。

8. 总结

在本篇文章中,我向您分享了我认为值得刚步入软件开发行业的新手们需要注意的 7 件事。这些事一些是我希望我在刚入行时有人告诉我的,一些是我从事本行业以来的一些经验之谈,感谢您的阅读,也期待您在评论区补充您的经验,让更多人受益。

目录
相关文章
|
21天前
|
前端开发 JavaScript 数据库
探索后端开发:从新手到专家的旅程
【9月更文挑战第35天】在数字世界的后台,后端开发是支撑起整个互联网的骨架。本文将带你走进后端的世界,从基础概念到高级应用,一起探索如何构建强大而灵活的后端系统。无论你是初学者还是有经验的开发者,都能在这段旅程中找到新的启示和成长的机会。
|
1月前
|
算法 前端开发 Java
从新手到专家:开发者的成长之路
软件开发充满挑战与机遇,从新手成长为专家是许多开发者的梦想。本文详细介绍了这一过程,包括基础知识学习与实践经验积累;持续技能提升与新技术探索;深入专研特定领域并分享知识;以及保持积极开放的心态面对挑战。成为专家需要时间与努力,但正确的路径与态度将助你一臂之力。
|
2月前
|
测试技术
探索软件测试的奥秘:从新手到专家的转变之路
【8月更文挑战第29天】 在数字时代的浪潮中,软件测试作为保障产品质量的关键步骤,其重要性不言而喻。本文旨在通过浅显易懂的语言,为读者揭示软件测试的基本概念、常见误区以及如何从零开始构建测试知识体系。我们将一起走进软件测试的世界,了解它的内涵与意义,并探讨如何通过持续学习与实践,实现从初学者到测试专家的华丽转变。无论你是软件开发新手,还是对测试感兴趣的朋友,这篇文章都将为你开启一扇通往高质量软件世界的大门。
42 4
|
2月前
|
存储 Java 关系型数据库
探索后端开发的奥秘:从新手到专家的旅程
【8月更文挑战第23天】在数字化时代的浪潮中,后端开发作为构建强大软件系统的基石,其重要性不言而喻。本文将深入浅出地探讨后端开发的各个方面,包括基础概念、关键技术、行业趋势以及职业发展等,旨在为初学者提供一个全面的入门指南,同时也为有经验的开发者提供一些深入的思考和启示。让我们一起踏上这段探索后端开发奥秘的旅程吧!
|
14天前
|
测试技术 持续交付 UED
探索软件测试的奥秘:从新手到专家
【10月更文挑战第3天】在软件开发的世界中,测试是确保产品质量的关键环节。本文将带你了解软件测试的核心概念、方法以及最佳实践,旨在帮助初学者构建起坚实的测试基础,并引导有经验的测试人员进一步深化他们的专业技能。我们将通过实际案例,探讨如何设计有效的测试策略,以及如何利用自动化工具提高测试效率。无论你是初涉测试领域的新手,还是希望提升测试技能的专业人士,这篇文章都将为你提供宝贵的指导和启示。
26 4
|
26天前
|
测试技术 开发工具 开发者
软件开发者的自我修养:从新手到专家的进阶之路
本文详细探讨了软件开发者从新手成长为专家所需的关键技能与心态。通过持续学习、注重代码可维护性、掌握版本控制、实施测试驱动开发、进行代码审查、提升沟通技巧、有效管理时间和勇敢面对失败等方面,全面分享了实用心得与建议。适合各阶段开发者阅读,助力职业生涯发展。
|
26天前
|
缓存 Java Linux
探索安卓开发:从新手到专家的旅程
【9月更文挑战第30天】在这篇文章中,我们将一起踏上一段激动人心的旅程,探索安卓开发的广阔世界。无论你是刚入门的新手,还是希望提升技能的开发者,本文都将为你提供宝贵的知识和指导。我们将深入探讨安卓开发的基础知识、关键概念、实用工具和最佳实践,帮助你在安卓开发领域取得更大的成功。让我们一起开启这段精彩的旅程吧!
|
8天前
|
安全 测试技术 持续交付
软件测试的艺术:从新手到专家
【10月更文挑战第9天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你走进软件测试的世界,从基础概念到高级技巧,一起探索如何通过有效的测试策略提升软件的稳定性和性能。无论你是刚开始接触软件测试的新手,还是希望提高现有技能的专业人士,这篇文章都将为你提供宝贵的知识和启示。
|
1月前
|
机器学习/深度学习 人工智能 大数据
软件测试的艺术:从新手到专家的转变
在软件开发的世界中,测试不仅是发现错误的工具,它还是确保产品质量的关键步骤。通过本文,我们将一起探索如何将软件测试从一项基本任务转变为一门精湛的艺术,涵盖了从基础理论到高级实践的各个方面。无论你是刚开始接触软件测试的新手,还是希望提升技能的资深人士,这篇文章都将为你提供宝贵的见解和实用的技巧。
|
1月前
|
存储 XML API
安卓应用程序开发:从新手到专家的旅程
【8月更文挑战第33天】在这篇文章中,我们将一起踏上一段激动人心的旅程,探索如何从一个对安卓应用程序开发一无所知的新手,成长为一个能够独立开发复杂应用程序的专家。我们将通过实际案例和代码示例,深入理解安卓开发的各个方面,包括用户界面设计、数据存储、网络通信等。无论你是刚刚入门,还是已经有一些基础,这篇文章都将为你提供宝贵的知识和技能,帮助你在安卓开发的道路上更进一步。