【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

使用检查清单组织软件开发流程

  • 2018-09-13
  • 本文字数:4042 字

    阅读完需:约 13 分钟

本文要点

  • 检查清单用作支持管理工具非常有效。
  • 有许多其他行业把检查清单作为规范使用,结果取得了显著的提升。
  • 各种软件开发流程都可以从使用检查清单受益。
  • 在软件开发中使用检查清单有多种方法。
  • 项目管理工具经常会内置检查清单模板,你也可以添加自己的。

成为专家意味着持续不断地接受教育。即使是顶级的专家,也得培育他们的领域知识,维持他们的根基。同时,我们能说高水平的专业知识就能保证没有错误吗?在软件开发中,这个问题尤为突出,因为每个错误都会导致时间和成本的增加。因此,不管选择了什么方法——敏捷、精益、快速、特征驱动等——对于项目经理和其他领导者而言,努力组织软件开发流程都应该是最优先的。在这种情况下,和无名英雄一样,虽然不为公众所知但却发挥了关键的历史作用,检查清单来到了舞台中央。

检查清单的威力

许多读者可能都不需要我解释检查清单是什么。简单来说,它是一个问题列表或要点清单,描述了特定活动或流程的状态 / 进展。这个清单可能包含一些有关成果或计划的重要数据。由于其通用性,检查清单可以用在任何行业里,而不管业务领域。但是,为什么要使用这种流程组织工具?有什么好处?

在一些复杂的重点领域,如医疗、软件开发、各种制造业等,有大量复杂的管道步骤。团队和部门合作,完善或推动需要恰当协同的多阶段生产流程。乍看起来,检查清单的作用并不明显。不过,深入分析就会发现,这个工具在你充满数据的大脑之外保存了一些琐碎、易忘的任务。

让我们举个简单的例子。当你进入一辆汽车,你不能立马开车,因为还有一系列具体操作需要完成,包括系紧安全带、放下手刹、挂到空挡、发动引擎、检查指示灯等等。在检查并完成所有这些例行任务后,你可以踩下油门踏板并开车。由于经常使用,每位驾驶员心中都有这样一个检查清单。如果你的任务集更大或变化更频繁,那么把它一直记在心里就太具挑战性了。

起飞前检查清单就是一个很好的例子。一个正式的飞行员知道在飞机准备起飞之前检查任务列表的重要性。这包括检查高度表、油量表、飞行控制系统的运行及其他系统参数。此外,飞行前检查列表通常的划分方式是,只有在初始任务完成后最后的项(门 / 窗状态、混合比、灯光、摄像头、机械装置)才能完成。降落前检查清单同样如此。根据 FAA 的实际测试标准,这一系列任务必须写下来供飞行员使用。

这是你在活动中需要检查清单的主要原因。下面的好处也应该考虑在内。

节省时间

过一遍检查清单需要花许多时间。不过,这项活动可以防止一些一不注意就会犯的简单甚至愚蠢的错误。因此,长远来看,你节省的时间会数倍于花在检查清单确认上的时间。

释放大脑的 RAM

有人认为,检查清单会限制创造力和直觉。但是,这些工具不是为了代替源于长期经验的特殊感受。实际上,检查清单保存了一些简单的信息,可以释放心智 RAM,使直觉可以专注于更复杂的事情。

专注基本事项

任何操作,只要是软件开发流程或任何其他活动的一部分,就由复杂任务和基本任务组成。没人愿意专注于单调乏味的事项,而不是有利可图的部分。不过,两者都很重要,检查清单使你可以记住一些小事情。管道中偶尔会有一些简单的任务,它们不应该被忽视。

行为准则

也许,这是专业人士最为赞赏的好处,在航空或医疗领域,他们需要为他人的生命负责。不过,一个训练有素的员工总是雇用的好对象。借助检查清单,你有机会培养那种有吸引力的品质。范围狭小的答案(“是”或“否”)不会成为完成任务的负担。一个常规的简单清单会慢慢成为使用它的人的行为准则。

为什么要在项目中使用检查清单

你可以把检查清单用在生活的各个方面。你将要结婚吗?有一个婚礼清单。你将要出差吗?旅行清单会有所帮助。其他选择包括检查、安全、打包、邀请、活动、购物等等。很多东西都是这样,你的下一个或当前项目一定可以从使用这种流程管理工具中受益。

许多著名的软件开发企业如 Railsware 都在他们的活动和流程中积极使用检查清单。他们不会把清单限制在 7 或 10 项。有时候,对于相当复杂的流程,项数比较多,可以扩展到几页,其中还包含子小节。下面是你根据自己的需要使用检查清单时应该考虑的一些理由。

  • 如果你不希望耗尽团队成员的创造力,检查清单是一个生产必备工具。它们的功能很简单——检查是否有东西遗忘了或未完成。最重要的是,你不必每次有任务出现时就创建一个新的检查清单。创造力要用于更费力的任务。
  • 任务委托是另外一个常见的问题。一个量身定制的检查清单可以提供所有必要的信息和要求,就不用浪费时间介绍基本要求了。
  • 大部分公司都努力以最便捷的方式安排他们的最佳实践。这里,检查清单效果良好。以列表形式提供重复任务的基本信息,这可以成为公司任何级别活动的一致方法。例如,通过检查清单向团队新成员介绍具体的原则和策略就很实用。
  • 持续改进不是一种趋势,而是一座灯塔,引导团队和企业。如果组织的管理结构没有等级限制,那么你就可以享受使用检查清单帮助优化内部流程。每一名员工都可以在一个可共享的检查清单中共享他或她对于特定点的视图。
  • 单点故障风险是指只有被委派的人员才可以执行特定的任务。在这个意义上,你可以通过在可共享的检查清单中指定要求和指南来降低风险。这样,其他团队成员就可以了解如何处理特定环境下的任务。

遗憾的是,在工作活动中实现检查清单并不简单。你需要学习如何构建、使用、阅读、改进和更新检查清单。最终,你会注意到,你的工作流特别需要这种简单而强大的工具。

什么软件开发流程可以从检查清单受益

也许,我们对在诸如航空或制造这样的行业里使用检查清单有个比较全面的了解。不过,这个如何在一个更复杂的工作流——软件开发——中证明自己呢?实际上,遵循敏捷方法的软件团队非常重视把列表实现为验收标准解决方案、完工定义、进展跟踪工具等。此外,每个独立的开发过程有其自身的优势。

Git 工作流检查清单

显然,一个人可以把螺丝刀当锤子用,但效率不会很高。这就和使用 Git 类似。为了充分利用它,你需要一种方法来获得最高生产力。对于 Git 工作流也完全有可能。此外,始终如一的 Git 工作流可以确保你有更多机会避免开发管道中不必要的障碍。在那种情况下,检查清单就是一种避免在软件开发周期的每个环节都提交到内存的解决方案。该工具能够引导每个人通过复杂的工作流,包括用户故事问题、解决方案编码、生成代码库分支等等。

用户故事检查清单

敏捷软件开发会使用一项名为用户故事的技术,从用户的角度获取实现软件特性的足够信息。制定验收标准是这个过程的一个关键部分,而检查清单可以帮助改进标准制定。你可以创建一个特定的格式,包含类别、点评估、标签、类别等等。例如,在改变故事规范说明书之后,就绪定义可以转换成完工定义。如下图所示,你可以看到一个实施计划,这实际上是一个待办列表,其中,在描述部分包含如何处理用户故事的指南。

[点击查看大图]

[点击查看大图]

冲刺检查清单

你需要冲刺计划来确定产品的相关上下文以及特定任务的职责。这个过程本身是对待办列表细化过程中所做决策的一种确认。检查清单的作用是在待办事项的每个点上建立一个恰当的上下文。最好是针对这个环节的三个阶段——冲刺规划前、后、中——制定单独的列表。这样做可以减少处理方式的认识负担。

部署检查清单

软件部署实践是交付接近用户期望的产品所必需的。添加 / 更新特性,更不用说调试了,这些都是部署过程的基本要素。检查清单的实现可以使这些过程有一个良好的组织。这样,每次更新都周密而安全。

测试检查清单

为了构建一个恰当的测试检查清单,你不仅需要考虑产品需求和用户故事,还要覆盖更广泛的实现。同时,测试范围应该足够窄,专注于产品功能。对于活动的不同部分或要素进行单独测试也很重要。例如,网站上的购买活动可能包含三个部分——登录、向购物车添加产品、登出。分割测试过程的检查情况可以隔离测试失败,把注意力集中在基本的细节上。

调试检查清单

我们已经提到过,调试是部署过程的一个组件。不过,使用检查清单为新手和经验丰富的团队成员描述最重要的步骤,可以优化这个旨在消除代码中已有和潜在错误的过程。借助这点,你就可以把修复错误这个永无止境的过程变成一个有组织的、定制的产品优化活动。

项目管理工具中的检查清单

上面都是理论。在实践中,你可以利用项目管理(PM)工具中的检查清单。这类软件可以用来组织工作流,使团队能够看到工作环境中其它部分的流转。不过,市场中有许多多用途的 PM 解决方案,对于没有经验的用户而言,这并不总是有益的。因此,你有两种选择方法,要么看一看像这样的比较博文,或者是下面这些你期望的必备特性:

  • 现成、可定制的软件开发工作流模板;
  • 可以供敏捷团队使用的 Scrum 和看板图;
  • 度量团队和方法效率的高级报表;
  • 开发工具集成;
  • 实现过程自动化的 API;
  • 成熟的用户管理,提供用户角色,区分访问级别。

检查清单支持是我们不列出的另外一个要点。有些功能强大的项目管理工具已经改变了他们对于这项特性的态度,使用类似 Jira 这样的可继承检查清单插件增强他们的功能。许多用户已经可以使用包括创建验收标准、完工定义、其他待办列表、划分、安排、排定优先级等在内的功能。这种表面上的微妙创新显示出,人们对于把 PM 工具中的检查清单实现为工作流组织的组成要素的需求日益增加。

小结

如你所见,检查清单的强大不是一种虚象。著名外科医生 Atul Gawande 甚至写了一本专门介绍这个主题的著作。虽然简单,但检查清单可以为以最有效的方式组织事情带来极大的提升。不过,也许是它们的简单性成就了它们的强大?无论如何,你不妨试几个。这是你体会为什么需要检查清单的唯一方式。

关于作者

Zakhar Yung 是 Railsware 的一名技术内容编辑。这是一家 Web 和移动应用开发公司。在加入 IT 行业之前,他积累了多种领域的经验,包括 SEO、工业设备交易、核能工程。他参与了 Baltic NPP 和 Akkuyu NPP 的建设。

查看英文原文: Using Checklists to Organize Software Development Processes

2018-09-13 18:102117
用户头像

发布了 1008 篇内容, 共 373.6 次阅读, 收获喜欢 340 次。

关注

评论

发布
暂无评论
发现更多内容

在Ubuntu 20.04 搭建 Django 开发环境 以及 快速构建一个简单的 Blog

Matrix Chan

Python django 后端 Ubuntu20.04

用Go-Guardian写一个Golang的可扩展的身份认证

朱亚光

微服务 身份认证 Go 语言

Mysql学习笔记:分库分表(sharding)

马迪奥

MySQL Sharding

区块链技术与我们的生活将并存

CECBC

区块链 数字经济

USDT跑分承兑系统开发,区块链支付平台搭建

滴滴基于 Flink 的实时数仓建设实践

Apache Flink

flink

不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

大头星

云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心

华为云开发者联盟

gpu caffe

区块链合约层是一种自动执行的数字协议

CECBC

区块链 智能合约

如何让知识图谱告诉你“故障根因”

华为云开发者联盟

华为云 知识图谱 图谱

@所有人 Flink Forward Asia 2020 向您发出议题征集邀请!

Apache Flink

flink

LeetCode题解:206. 反转链表,双指针,JavaScript,详细注释

Lee Chen

大前端 LeetCode

所见即所得的用户增长技术背后是如何实现的

代立冬

大数据 用户增长 用户增长技术 ad-hoc技术

两年Java工作经验涨到23K,这究竟是怎么做到的?

Java架构师迁哥

区块链技术最重要价值所在

CECBC

区块链 数字经济 互联网革命

Mysql学习笔记:InnoDB索引结构浅析

马迪奥

MySQL 索引结构 innodb

端-边-云全面协同创新 英特尔携手百度共推产业智能化升级

E科讯

开源决策树工具xDecision简介

赫杰辉

决策树 可视化 简化代码

解Bug之路-记一次JVM堆外内存泄露Bug的查找

无毁的湖光

Linux JVM heap memory GC Linux Kenel

知识点总结

Acker飏

我敢说,这个版本的斗地主你肯定没玩过?

华为云开发者联盟

命令行 游戏 斗地主

介绍

剑心

学习

拥抱K8S系列-07-部署K8S集群(Rancher)

张无忌

Kubernetes rancher

服务质量分析:腾讯会议&腾讯云Elasticsearch玩出了怎样的新操作?

腾讯云大数据

大数据

SpringBoot写后端接口,看这一篇就够了!

华为云开发者联盟

后端 swagger pringboot

如何正确设置Java.home

谷鱼

彻底理解JavaScript执行上下文

Walker

Java 大前端 this指针 函数执行

区块链交易系统开发,期货合约平台搭建

我写了一个TypeScript虚拟机。

渔子长

Java typescript 大前端 deno Node

Netty之旅三:Netty服务端启动源码分析,一梭子带走!

一枝花算不算浪漫

Netty

架构师期末作业

傻傻的帅

使用检查清单组织软件开发流程_文化 & 方法_Zakhar Yung_InfoQ精选文章