新手工程师需要知道的 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 件事。这些事一些是我希望我在刚入行时有人告诉我的,一些是我从事本行业以来的一些经验之谈,感谢您的阅读,也期待您在评论区补充您的经验,让更多人受益。

目录
相关文章
|
2月前
|
前端开发 JavaScript 数据库
探索后端开发:从新手到专家的旅程
【9月更文挑战第35天】在数字世界的后台,后端开发是支撑起整个互联网的骨架。本文将带你走进后端的世界,从基础概念到高级应用,一起探索如何构建强大而灵活的后端系统。无论你是初学者还是有经验的开发者,都能在这段旅程中找到新的启示和成长的机会。
|
3月前
|
算法 前端开发 Java
从新手到专家:开发者的成长之路
软件开发充满挑战与机遇,从新手成长为专家是许多开发者的梦想。本文详细介绍了这一过程,包括基础知识学习与实践经验积累;持续技能提升与新技术探索;深入专研特定领域并分享知识;以及保持积极开放的心态面对挑战。成为专家需要时间与努力,但正确的路径与态度将助你一臂之力。
|
21天前
|
XML 存储 Java
探索安卓开发之旅:从新手到专家
在数字时代,掌握安卓应用开发技能是进入IT行业的关键。本文将引导读者从零基础开始,逐步深入安卓开发的世界,通过实际案例和代码示例,展示如何构建自己的第一个安卓应用。我们将探讨基本概念、开发工具设置、用户界面设计、数据处理以及发布应用的全过程。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你提供宝贵的知识和技能,帮助你在安卓开发的道路上迈出坚实的步伐。
31 5
|
23天前
|
前端开发 开发工具 Android开发
移动应用开发之旅:从新手到专家
在本文中,我们将探索移动应用开发的奇妙世界。无论你是刚刚踏入这个领域的新手,还是已经有一定经验的开发者,本文都将为你提供有价值的见解和指导。我们将从基础概念开始,逐步深入到更复杂的主题,如移动操作系统的选择、开发工具的使用以及如何优化你的应用以获得更好的性能和用户体验。通过阅读本文,你将获得一个全面的视角,了解如何从零开始构建你自己的移动应用,并最终成为一名移动应用开发专家。让我们一起踏上这段激动人心的旅程吧!
25 3
|
1月前
|
缓存 监控 前端开发
探索Android应用开发之旅:从新手到专家
【10月更文挑战第42天】本文将带你踏上Android应用开发的旅程,无论你是初学者还是有经验的开发者。我们将一起探索如何从零开始创建你的第一个Android应用,并逐步深入到更高级的主题,如自定义视图、网络编程和性能优化。通过实际示例和清晰的解释,你将学会如何构建高效、吸引人的Android应用。让我们一起开启这段激动人心的旅程吧!
|
1月前
|
存储 Java 数据处理
探索安卓开发:从新手到专家的旅程
【10月更文挑战第42天】在这篇文章中,我们将一起踏上一段激动人心的旅程,从安卓开发的基础知识开始,逐步深入到高级概念。我们将通过实际的代码示例和清晰的解释,帮助你理解安卓开发的核心原理,并学会如何构建你自己的应用程序。无论你是刚刚入门的新手,还是已经有一定经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起开始吧!
|
1月前
|
开发工具 Android开发 开发者
探索移动应用开发之旅:从新手到专家
【10月更文挑战第40天】在这篇文章中,我们将一起踏上一段激动人心的旅程,深入探索移动应用开发的世界。无论你是刚开始接触编程的新手,还是希望提升技能的有经验的开发者,本文都将为你提供宝贵的知识和技巧。我们将从移动操作系统的基本概念出发,逐步深入到移动应用的开发流程,探讨不同平台的特点,并分享实用的开发工具和最佳实践。通过阅读本文,你将获得构建自己第一个移动应用的信心和能力,甚至能够掌握如何优化应用性能和提升用户体验的技巧。让我们一起解锁移动应用开发的奥秘,开启你的技术成长之路。
|
25天前
|
设计模式 安全 Android开发
移动应用开发之旅:从新手到专家的实用指南
在这篇文章中,我们将一起踏上一段激动人心的旅程,探索移动应用开发的奥秘。无论你是完全的初学者,还是希望提升技能的开发者,本指南都将为你提供必要的工具和知识。我们将从基础概念讲起,逐步深入到复杂的编程技巧,最后通过实际代码示例巩固学习成果。让我们开始吧!
27 0
|
3月前
|
XML 编解码 Java
探索安卓应用开发之旅:从新手到专家
【9月更文挑战第19天】在这个数字时代,移动应用无处不在,而安卓平台因其开放性和广泛的用户基础成为了开发者的热门选择。本文将引导你了解如何从零基础开始,逐步掌握安卓开发的核心技术,包括界面设计、数据处理和网络通信等。通过实际案例和代码示例,我们将深入探讨安卓开发的各个阶段,帮助你构建起自己的应用。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在安卓开发的道路上越走越远。让我们开始这段激动人心的旅程吧!
48 8
|
设计模式 数据库
理论篇|如何避免写出面条代码
理论篇|如何避免写出面条代码
160 0
理论篇|如何避免写出面条代码