新年伊始,是停下脚步,反思过去一年的得失的大好时机。更重要的是,这是我们确定必须养成的新习惯以改进开发实践的最佳时机。当然,我们可以随心所欲地下决心,但我们都知道这些决心不可能持续多久。
与其制定只能持续几周的的决心,不如确定并改变你的习惯。对于嵌入式软件开发人员和团队来说,有很多好习惯可以帮助他们更快、更可靠地开发固件。以下是我们在新的一年中可能需要考虑哪些习惯的一些建议。
嵌入式软件开发人员工作的领域广泛且发展迅速。当然,我们经常抵制变革并滞后于更大的软件行业的变革。然而,这并没有改变硬件和软件技术不断变化的事实。在这个行业找到一份工作,然后在接下来的四十年里遵循相同的流程并使用相同的技术是很容易的。但是,如果我们这样做,我们就会发现要想取得成功并跟上竞争者的步伐会变得更加困难。事实上,我们可能会远远落后,几乎不可能找到工作!
我们要养成的一个重要习惯就是持续不断地接受教育。作为工程师、开发人员和管理人员,知识是我们最大的财富。开发人员和企业常常被动地看待教育。事情出错了,出现问题,解决方案就是培训。而持续教育是一种积极主动的方法,它能让团队在问题出现之前及时了解最新情况,并有希望避免问题的发生!持续教育可以通过多种方式进行。例如,我们可以使用以下几种资源来养成每天和每周学习的习惯:
这样的例子不胜枚举,但您应该明白其中的含义。现在就打开你的日历,标记出您将养成持续教育习惯的时间。
防止软件出现错误的最佳方法之一就是进行代码审查。由于开发周期非常繁忙,开发团队跳过代码审查的情况并不少见。不过,凭借当今的技术和工具,我们没有理由不制定一个明确的代码审查流程,帮助我们来提高固件的可靠性。
我们的代码审查习惯也不必过于复杂。例如,在合并请求(merge request)期间进行代码审查就是最好的方法之一。在合并请求时,我们的代码已经准备好与开发分支集成。我们可以对工具进行设置,使合并请求需要审批。那么我们的审批流程应该包括哪些内容?代码审查!
每当进行代码审查时,最好将每次审查的代码行数限制在500行以内。我们审查的代码越多,持续时间越长,发现的bug就越少。这意味着我们还需要养成经常提交和经常合并的习惯。再次强调,这些都是当今的行业规范,但也是值得养成的好习惯。
为了更快、更可靠地开发固件,我们必须尽可能多地实现开发自动化。手动流程速度缓慢且又容易出错。您是否曾经有过需要200个测试用例的手动测试过程?完成后,每次代码更改就需要重新运行这些测试用例!这简直就是一场噩梦,不但需要抽查系统是否正常工作,还会让bug偷偷溜走。所以自动化是关键。
您可能想知道,自动化开发到底将如何成为一种习惯。这看起来似乎更像是一项任务。我们需要养成的习惯就是问问自己,我们正在做的事情是否可以、是否应该自动化。例如,如果我们发现自己在手动运行单元测试、系统测试、分析软件、开发文档等,那么我们就应该问自己哪些工作可以自动化。如何改进这个流程并使之变得更好?如何提高工作效率?
可以帮助我们养成这种习惯的一种现代技术是采用持续集成和持续部署(CI/CD)。CI/CD鼓励您尽可能地自动化构建和部署过程。您会发现代码风格一致性、静态分析、指标、测试等方面的人工检查都实现了自动化。自动化减轻了开发人员的工作量,帮助他们专注于重要的事情,而不是琐碎的重复性任务。
我们很容易说服自己和团队,我们会在未来养成自动化的习惯。那个悬而未决的最后期限非常重要,所以我们现在就要做这样的事情,之后我们就会正确地去做。停止这种团队讨论。从一开始就养成以正确方式做事的习惯。实现开发自动化,我们就能比想象中更快、更可靠地开发出固件。
我们刚刚探讨了一些潜在的习惯,可以帮助您更快、更可靠地开发固件。我们需要养成的具体习惯,或者是我们需要去除的习惯,都是高度个性化的。您必须改变的东西很可能与您的同事或我必须关注的东西大相径庭。这没有关系,新的一年是一个机会,让我们反思并确定需要改变哪些习惯,以帮助自己取得更大的成功。微小的调整和路线修正有助于确保您不会重复过去的错误,并确保来年取得成功。
那么为了在今年开发出更快、更可靠的固件,您还必须改变或增加哪些习惯?
(原文刊登于EDN姊妹网站Embedded,参考链接:3 critical habits for faster, more reliable firmware,由Ricardo Xie编译。)