嵌入式系统, 如何一次把事情做对?

开发
基于嵌入式产品由于其自身特点,“一次把事情做对”是每个研发人员的追求。通过文中介绍的四个原则和相应的实践,建立多维度的反馈机制,你就能够最大化实现质量的提升和资源的充分利用。​

作者 | 梅雪松

不知道你有没有注意到,走进各个企业,总能看到那么几句振奋人心的标语,其中“一次把事情做对”绝对是个高频词汇。以前每次看到,我都会想:这家企业也太教条了,都什么时代了,对失败这么零容忍,还怎么创新呢?这个时代的主旋律不是从错误中学习,快速响应、快速迭代吗?

然而最近一年的嵌入式领域经历,让我重新反思并意识到,“一次把事情做对”不仅是对工作效率的追求,更是对质量控制的严格要求。在嵌入式产品开发领域,这一理念的重要性尤为突出。

与Web系统相比,嵌入式产品有其独特性。它是软硬件的紧密结合体,不易升级,一旦发布,出问题的解决成本异常高昂,后果更为严重。所以“一次把事情做对”就是一个合理且必要的目标了。

但是怎么做到一次把事情做对呢?我们从四个原则来聊聊。

不做就不错

在生活中,我们常说“不做就不错”。在工作中,我也要把这个原则送给你,它仍然是真理。说白了就是:没代码,无bug。

我不是说让大家不干活,而是在没搞清楚需求之前,千万别急着动手。你想想,画画草图、写写文档总比直接写代码来得轻松吧?而且成本也低多了。如果错了大不了重画重写,可是写成了代码,那就叫 bug。

你要学会拒绝需求。需求来了,你得想想这需求有价值吗?合理吗?如果对方说不清楚价值,给不出理由,那就应该拒绝。告诉他不要浪费你的时间和公司的金钱。

你得要求明确的需求。当业务方提出需求时,BA(需求分析师)就要分析清楚这个需求的细节,一句话的需求太模糊,没法干,开发者也要拒绝。这是你的权利。一旦你干了,出了 bug 那就是你的错。

但你可能要问了,有些需求在初期就是模糊的,只能在做的过程中慢慢摸索,那怎么办呢?

记住,不做就不错,不写代码就没 bug!你扪心自问,需求是模糊的,可代码能模糊吗?计算机只能分清0和1,根本就不会模糊处理。所以即使需求是模糊的,我们却无法写出模糊的代码。如果在这种情况下写出了代码,必然是把模糊的东西变成了确定的东西,那大概率就写了个bug。

正确的做法是,需求必须明确,不能模糊。如果在产品初期,摸索阶段,那么BA应该提出假设,进行验证。提出假设后,需求就是明确的。我们假设是这种情况,代码就这么开发,先验证,不断迭代就能逐渐找到更好的答案。

这种通过假设来明确需求的方法叫试错,你拿着模糊需求写成不模糊的代码,那叫 bug,这两者的区别自己体会一下。

少做就少错

现在我们把能拒绝的工作拒绝了,把模糊的需求明确了,剩下的就是不得不做的了。接下来的第二个原则是,少做就少错。

怎么做到呢?千万别急着动手写代码,否则你很可能要走不少弯路才能做对。这里提供一个三步法,让你少走弯路、少写代码,少出错。

  • 第一步,脑中做一遍。先在脑海中预演整个实现过程,这类似于一种虚拟的模拟运行。要想清楚每一步的输入输出是什么,处理过程是什么。这一步很重要,它能确保你真正理解了需求,并提前发现潜在的问题和难点。
  • 第二步,纸上画一遍。把脑中预演的过程在纸上画个草图。这个过程不仅有助于整理思路,还有助于和别人沟通讨论。记住,一定要画出来。有时候你以为你想清楚了,画出来才发现没想清楚。
  • 第三步,找人问一遍。经过前两步,你对需求理解透了,实现方案也想清楚了。这时候要找人问一遍。这个人最好是个有经验的人。他能对你的方案提出建议,也能发现你没注意到的、可能对原来的功能有影响的地方。即使对方没有经验,也要找人问一遍。因为在讲的过程中,自己就能发现一些问题。

经过这样三步的准备和验证之后,就可以信心满满地开始编写代码了。这时在面对复杂问题时会从容不迫,出错的概率也大大降低。

让机器多干活

前面铺垫那么多,你可能都觉得那不是好好工作,只有写代码才是真正工作。其实你写的代码是非常宝贵的东西。产品的价值都是靠你一行行代码实现的。前面的铺垫就是为了让你能真正写好代码。

现在你终于开心地写着代码了。这时要思考的是自己怎么少干活,怎么让机器多干活。毕竟,不做就不错,少做就少错。

这里我们暂且不提让AI来帮你写代码。想想在开发过程中,哪些工作是可以交给机器来做的呢?

开发的工作可以分为三大块:看代码、写代码、调试验证。

验证对你来说既无聊又耗时间。你打着断点,看着变量是不是你想要的值,逻辑跳转对不对。这样的工作不停地重复着,有时候一抬头发现周围人都走光了,一天很快就过去而你还没定位到问题。

验证这部分是最容易交给机器来做的。完全可以写个验证代码(测试代码)来验证程序的输出对不对,是不是想要的结果。这是个一劳永逸的方法。验证代码只要写一遍,它就在那里,孜孜不倦一遍遍运行着。你完全可以放心交给它帮你完成验证的工作。再进一步,甚至可以先写验证代码,再写业务代码,这就是极限编程中的测试驱动开发(TDD)。

机器还可以帮你干其它活,那些重复的活都可以让它干。所以这第三个原则“让机器多干活”还有另一个名字:自动化一切能够自动化的工作。

比如你的软件的构建,部署,一切能够自动化的工作,都应该交给机器来做。因为人都是会犯错误的。

早纠错、少浪费

前面三个原则讲的都是尽量地少干活,但只要干了活,就可能出错。所以最后这个原则是“早纠错、少浪费”,怎么尽早地发现错误,减少浪费。

对于产品研发来说,最大的浪费是返工。因为功能做得不对返工,因为质量问题返工,这些都会造成品牌受损,成本增加。

问题发现得越晚,成本越高。所以我们要通过一切手段尽早纠错。极限编程提供了一个很好的参考机制:

  • 分钟、小时级别的反馈:通过结对编程、自动化测试、流水线完成
  • 天级别的反馈:每日站会、每个需求的验收测试
  • 周级别的反馈:每个迭代的showcase
  • 月级别的反馈:版本发布后的反馈

(图片来自网络)

如果我们能建立极限编程这样的从分钟到月级别的多维度反馈机制,就能够在早期阶段及时察觉问题、纠正错误,从而显著提高工作质量并减少不必要的浪费。

总结

质量就是生命线!

基于嵌入式产品由于其自身特点,“一次把事情做对”是每个研发人员的追求。通过文中介绍的四个原则和相应的实践,建立多维度的反馈机制,你就能够最大化实现质量的提升和资源的充分利用。

责任编辑:赵宁宁 来源: Thoughtworks洞见
相关推荐

2011-03-17 17:36:01

iptables嵌入式Linux

2021-11-24 15:20:04

FreeDOSLinux

2021-12-19 22:34:45

Linux容器系统

2022-01-03 23:33:40

Linux组件系统

2018-06-27 09:14:54

嵌入式操作系统Linux

2011-04-25 10:25:43

OpenEmbedde嵌入式Linux

2011-01-06 15:11:09

嵌入式linux

2023-09-18 14:39:39

2017-12-21 10:43:44

Linux嵌入式终端

2020-07-03 07:00:00

Linux组件

2023-11-01 11:38:44

嵌入式MVC

2020-06-15 07:00:00

Linux嵌入式系统

2009-12-17 18:38:56

Fedora 7嵌入式

2009-06-26 16:18:40

Windows Emb

2009-04-11 15:22:24

Linux 2.6内核应用

2010-01-12 17:32:40

ARM平台

2011-01-14 13:13:23

嵌入式Linux开发

2011-04-14 15:14:36

嵌入式操作系统嵌入式

2010-01-21 09:15:05

Linux嵌入式文件系

2022-05-06 15:56:01

开源物联网边缘计算
点赞
收藏

51CTO技术栈公众号