跳到主要内容

保存的文章

技能集、流程和转换

Dave Nicolette |领导敏捷
Dave Nicolette
阅读: 技能集、流程和转换

我要重复一个错误,我经常制作,并在一个单词选择上竖琴。我意识到了风险。一天的话是:开发人员。

这引述了Angie Jones,在TechBeacon文章,说明了这个词有问题的用法:“要成为一名自动化工程师,你必须拥有开发人员的技能和测试人员的思维方式。”

我可以把它改写成"一套技能程序员和测试人员的心态。“为什么?因为imo是一个“开发人员”是一个有程序员,测试仪和分析师技能和心态的人。如果您的团队有开发人员 - 我的意思是真实的,具有全方位的技能和能够“改变帽子”的能力 - 那么你不需要单独的个人称为“测试人员”和“分析师”。

和你确实不需要那些只写代码而不考虑自己在做什么,也不进行测试的人。

将部分混淆为整体

我不是在安妮上挑选。这是常见用法。我不喜欢常见的用法。说“测试人员的技能组和测试人员的心态”是一个提喻:两个不同抽象层次的事物的比较。这就像在说:“苹果和水果我都喜欢。”

根据梅里亚姆-韦伯斯特, 一种提喻“是一种修辞手法,通过它,一部分被放在整体(比如五十艘帆五十的船只),整个部分(例如社会上流社会),属的物种(如残酷的刺客),物种的属(如一个生物一个人)或所做的物料的名称(如董事会阶段)。“

你不能成为“开发者”“测试人员”。“开发人员”一个“测试员”。苹果都是水果。并非所有的水果都是苹果。

技能组合,而不是人

编程、测试和分析是技能集合,而不是人。虽然它们是真正需要学习和实践的技能集,但它们并不复杂或晦涩,不需要软件开发规程中完全独立的子专业。他们是要做的事情,比如喂瓦尔(见《星际迷航:苹果).

当我这么说时,人们经常误解了我。他们认为我正在说测试并不重要。不可以。测试是软件开发的核心。它应该被教授作为大学和技术学院课程的一部分。这是我们教育系统的失败,即这种基本技能在学校忽略或掩盖。测试软件的想法不应生成它似乎产生的所有循环辩论和焦虑。

泛化的界限

这并不是说一个人应该能够以高度的专业知识做所有的一切。技术环境对于通用开发人员来说太复杂了,以处理一切。安吉尔家喜欢谈谈“概括专家”或“T形人”。Web开发人员喜欢谈谈“完整堆栈工程师”。这些想法可以走的很大限制。这更大,更异质的环境,边界变得越困难。

泛化的边界不是活动之间的。它们介于离散和复杂的技术领域,如“前端”、“移动”、“机器学习”和“主机”。在每个技术专门化领域中,每个开发人员都可以在编程、测试和分析活动中拥有和应用技能。否则,他们就不应该被称为“开发人员”。他们应该被称为“程序员”、“测试人员”或“分析人员”,这取决于他们拥有和缺乏哪些基本技能。不管怎样,这是我的观点。

组织转型

为了避免让你觉得这只是关于选择词汇的个人偏好,让我来介绍一下上下文。考虑一下LeadingAgile罗盘模型:

假设您的组织已从预测 - 紧急(PE)象限转移到预测收敛(PC)象限中。您成功地可视化,测量和获得了您的交付过程,以实现规划可预测性。您已建立与产品线对齐的交叉功能交付团队。您已经提高了您的流程和熟练掌握了Basecamp 2的水平,在那里您已经成功运行了一段时间。

提高的下一个层次是开始利用承诺适应性;Basecamp 3位于Adaptive-Convergent(AC Quadrant,其中软件交付活动收敛以一种方式确定解决方案适应新的学习和意外的曲折。这是一个不同的业务操作模型,而不是亚博vip9通道那些在图表的预测方面工作的模型。这是你“敏捷”转型的真正开始;通过Basecamp 2的一切都是为它铺设的基础。

这将包括改变你与内部利益相关者合作的方式,以及公司与市场互动的方式。除此之外,这需要软件交付的一定程度的平滑性。您的团队结构、交付管道或治理过程中任何对软件交付引入“减速带”的内容都可能被重新考虑。

这以一般的方式对应于重点的精益概念.是否有一些规范的Scrum模型在Basecamp 2中运行得很好,但一旦我们尝试在Basecamp 3级别上运行,它们就会干扰流程?现在我们已经解决了我们在PE象限中操作时遇到的交付问题,并学会了在PC象限中可预见地交付,也许一些完全相同的解决方案会变成交流象限中的问题?

我建议存在功能竖井或“硬”专门化在每个交付团队中在送货时引入“减速带”。您的程序员、测试人员和分析人员可能在Basecamp 2组织的操作限制内有效地协作并可预测地交付,这是一件好事。你已经熟练使用新手级别的Scrum,运行两周的sprint,并根据产品待办事项列表进行可预见的交付。但是继续使用相同的模型不会让你深入交流象限。你会生气的。

在组织的结构、治理和技术实践中,许多事情可能必须更改。其中一个变更必须是消除软件开发和交付过程中的任何内置延迟。这将包括完成自动化连续交付管道和自动化基础设施管理。它还将包括消除交付团队专家之间的任何剩余“等待”。

回到未来

您还记得Rational统一过程(RUP)吗?在敏捷出现之前,这是一件大事。它是一个基于软件交付包含四个不同生命周期阶段的思想的迭代过程模型:初始、精化、构建和产品化。迭代可以是任意长度,通常为3到6个月。每个迭代可以包括四个阶段中的一个以上,或者多个连续的迭代可以专门用于一个阶段。

您可以看到这种方法是如何类似于当代的“敏捷”方法的,只是在更长的时间尺度上。另一个区别是RUP接受了软件交付中按顺序发生的“阶段”的传统概念;因此有了四个生命周期阶段的名称和目标。

RUP中最有价值的洞察力之一是对交付团队在正常工作过程中转换的具体需求的理解。考虑这个规范的RUP图(公共区域):

描述不同活动的区域的不同厚度反映了对开发团队不断变化的需求。有时,一天的大部分工作包括分析;有时候,测试;有时其他任务。当团队由分析、测试和编程方面的专家组成时,当大部分需求存在于其中一个领域时,其他两组专家就处于空闲状态。那是“减速带”。

RUP不再是软件交付的流行模型,因为从那时起,技术的状态一直在发展。但是对团队的需求变化仍然是一个现实。对于当代的方法,转换每天发生多次,而不是在三个月的Construction迭代过程中发生。每一个交接或协作点都会影响

平滑速度凸起

解决方案是培养开发人员在这个词的完整意义上,而不仅仅是提高团队中各种专家的协作技能。在实现Basecamp 1和Basecamp 2的过程中,提高协作技能是正确的做法,但如果我们想实现Basecamp 3或更长远的目标,我们需要做更多的事情。我们需要能够完成“任何”任务并执行它的团队成员。

那是我想到的那种团队成员,当我使用这个词时,开发人员

不是唯一的解决办法

与生活中的许多挑战一样,培养独立的开发人员并不是消除交付团队级别专业化造成的减速的唯一方法。暴徒编程已被证明是在软件开发期间消除“等待”的有效方法。当白天出现问题和问题时,每个人都有答案的人已经在房间里,已经与制造解决方案进行了。没有通信延迟。

事实证明,回答小问题时的沟通延迟是累积的。消除它们可以显著改善交付性能,尽管每一个问答延迟的实例可能持续时间很短。

所以,暴徒编程(或人群聚集)是一种有效的方法,即使在专家不愿学习额外技能的情况下。一个有趣的副作用是,他们最终会学习额外的技能,这是在“暴民”中工作的自然结果。你几乎无法避免学习。最终,我们将拥有一个由“真正的”开发人员组成的团队,即使参与其中的个人并不是特别想成为通才。

结论

如果所有这一切都有一点,那么有两个:

  • 我们使用影响问题和解决问题的词语。例如,当他们真的少于这一点时,将某人称为“开发人员”,这将使我们能够更加努力地察觉我们的工作潜在的改进。当我们说“开发人员”我们认为,“可以开发解决方案的人。”当我们说“程序员”我们认为,“可以写代码的人。”这个单词程序员让你更容易看到缺少什么——开发解决方案所需的所有其他技能。
  • 我们应该专注于保持持续的流动,不管我们是如何做到的——聚集、培养多面手或其他任何实际步骤。“做好Scrum”可能是一个起点,但它不是终点。而不是验证您正在执行“按书”定义的过程步骤,而是寻找“减速带”。
下一个;损失语言和麦克斯特比耶&Andrew Young的语言

Dave Nicolette自1977年以来一直是一名IT专业人员。他曾担任多种技术和管理职务。自1984年以来,他主要从事顾问工作,一只脚在技术阵营,一只脚在管理阵营。

留下你的评论

您的电子邮件地址不会被公开。必需的地方已做标记