### Understanding Why Processes Are Critical to Scale 了解为什么流程对于扩展至关重要 > After that, comes tactical maneuvering, than which there is nothing more difficult. The difficulty of tactical maneuvering consists in turning the devious into the direct, and misfortune into gain.—Sun Tzu > 接下来是战术机动,没有什么比这更困难的了。谋略之难,在于化邪为正、化祸为利。——《孙子》 In Part II, Building Processes for Scale, we are going to spend some time discussingprocesses. As with Part I, Staffing a Scalable Organization, you may be asking yourself, “What do processes have to do with scalability?” The same answer applies hereas it did with our focus on people, “Process has a lot to do with scalability.” Admittedly, we started with people because we think people are the most important aspectto building and sustaining a scalable system. Do not think that you can hire greatpeople and forget about everything else. Undervalue process at the peril of your team,your system, and yourself. 在第二部分“构建规模化流程”中,我们将花一些时间讨论流程。与第一部分“为可扩展的组织配备人员”一样,您可能会问自己:“流程与可扩展性有什么关系?”同样的答案也适用于我们对人的关注,“流程与可扩展性有很大关系。”诚然,我们从人开始,因为我们认为人是构建和维持可扩展系统的最重要方面。不要以为你可以雇佣优秀的人而忘记其他一切。低估流程会给你的团队、你的系统和你自己带来危险。 Great people can only accomplish a limited amount as an individual; they need tobe part of teams in order to accomplish goals beyond what a single individual canachieve. Working in teams dictates the use of processes that govern, control, suggest,guide, teach, and advise team members. 伟大的人作为个人只能取得有限的成就;他们需要成为团队的一部分,才能实现个人无法实现的目标。团队工作要求使用管理、控制、建议、指导、教导和建议团队成员的流程。 In Part II, we are going to spend time explaining various essential processes andthe roles they should play in your organizations, depending on the size, maturity, culture,and duration of your business. We will cover this in much more detail but we believethere is a right time and right place for processes and not every process should be apart of every organization. Some of the processes that we will cover in Part II includeIn Part II, we are going to spend time explaining various essential processes andthe roles they should play in your organizations, depending on the size, maturity, culture,and duration of your business. We will cover this in much more detail but we believethere is a right time and right place for processes and not every process should be apart of every organization. Some of the processes that we will cover in Part II include 在第二部分中,我们将花时间解释各种基本流程以及它们在您的组织中应扮演的角色,具体取决于您的业务规模、成熟度、文化和持续时间。我们将更详细地介绍这一点,但我们相信流程有正确的时间和地点,并不是每个流程都应该属于每个组织。我们将在第二部分中介绍的一些流程包括在第二部分中,我们将花时间解释各种基本流程以及它们在您的组织中应扮演的角色,具体取决于您的业务规模、成熟度、文化和持续时间。我们将更详细地介绍这一点,但我们相信流程有正确的时间和地点,并不是每个流程都应该属于每个组织。我们将在第二部分中介绍的一些流程包括 * How to properly control change in your production environment * What to do when things go wrong or when there is a crisis * How to design scalability into your products from the beginning * How to understand and manage risk * When to build and when to buy * How to determine the amount of scale in your systems * When to go forward with a release and when not to * When to roll back and how to prepare for that eventuality * 如何正确控制生产环境的变化 * 当出现问题或出现危机时该怎么办 * 如何从一开始就将可扩展性设计到您的产品中 * 如何理解和管理风险 * 何时建造、何时购买 * 如何确定系统中的水垢量 * 何时继续发布,何时不继续 * 何时回滚以及如何为这种可能性做好准备 Before we dive into the individual processes that will constitute the remainingchapters in Part II, we will cover, in this chapter, how processes affect scalability, bothpositively and negatively. We are going to look first at what is the purpose of processesin general, and then discuss the importance of coordinating the right amount of process rigor or repeatability to the right time in an organization’s life cycle, and wrapup our focus on the generalities of process with a look at what happens when thewrong process is implemented. By focusing on these topics, we will derive a causallink between the ability of an organization to scale to the processes that support it. 在我们深入研究构成第二部分剩余章节的各个流程之前,我们将在本章中介绍流程如何对可扩展性产生积极和消极的影响。我们将首先了解流程的一般目的是什么,然后讨论在组织生命周期中的正确时间协调适当程度的流程严谨性或可重复性的重要性,并总结我们对流程一般性的关注看看实施错误流程时会发生什么。通过关注这些主题,我们将得出组织扩展至支持其的流程的能力之间的因果关系。 #### The Purpose of Process 流程的目的 As defined by Wikipedia, a business process is a “collection of related, structuredactivities or tasks that produce a specific service or product (serve a particular goal)for a particular customer or customers.”1 These processes can be directly related toproviding a customer with a product or service, such as manufacturing, or can be asupporting process, such as accounting. The Software Engineering Institute definesprocess as what holds together three critical dimensions of organizations: people,methods, and tools. In their published Capability Maturity Model for Developmentv. 1. 2, the Software Engineering Institute states that processes “. . . allow you toaddress scalability and provide a way to incorporate knowledge of how to do thingsbetter.” Processes allow your teams to react quickly to crisis, determine the rootcause of failures, determine capacity of systems, analyze scalability needs, implementscalability projects, and many more fundamental needs for a scalable system. Theseare vital if you want your system to scale with your growth. As an example, if yourely on an ad hoc response to restore your service when an outage occurs, you aregoing to experience much more downtime than if you have a clear set of steps thatyour team should take to respond, communicate, debug, and restore services. 根据维基百科的定义,业务流程是“为特定客户提供特定服务或产品(服务于特定目标)的相关结构化活动或任务的集合。”1 这些流程可以直接与向客户提供产品或服务,例如制造,也可以是支持过程,例如会计。软件工程协会将流程定义为将组织的三个关键维度结合在一起的要素:人员、方法和工具。在他们发布的开发能力成熟度模型中。 1. 2,软件工程研究所声明处理“. 。 。让您能够解决可扩展性问题,并提供一种方法来整合如何做得更好的知识。”流程使您的团队能够对危机快速做出反应,确定故障的根本原因,确定系统的容量,分析可扩展性需求,实施可扩展性项目以及可扩展系统的许多更基本的需求。如果您希望您的系统随着您的增长而扩展,那么这些至关重要。举例来说,如果您在发生中断时依靠临时响应来恢复服务,那么与您的团队应采取一组明确的步骤来响应、沟通、调试和恢复服务相比,您将经历更多的停机时间。 As we discussed in Chapter 5, Management 101, managing is a critical functionfor teams to perform efficiently and effectively, which in turn allows them to focus onthe most critical scalability projects as well as properly prioritize work. As importantas managers are, they cannot stand around all day waiting for someone to have aquestion about what to do in a certain situation, such as when an engineer is checking in code to the source code repository and unsure of the proper branch. Although it might be helpful to have this sort of management for the engineer, it is not cost efficient. Instead, perhaps the engineering team can decide that bug fixes go into themaintenance branch and new features go into the main branch. To make sure everyone on the team knows this, someone might write it up and send it around to theteam, post it on their wiki, or tell everyone about it at their next all-hands meeting.Congratulations, the team just developed a process. And, that is one of the principlepurposes of processes, to manage people when the manager is not available or it isnot cost-effective for the manager to spend time providing the same guidance to theteam over and over for the same task. Good process supplements management andaugments its reach. 正如我们在第 5 章“管理 101”中讨论的那样,管理是团队高效执行的一项关键功能,这反过来又使他们能够专注于最关键的可扩展性项目并正确确定工作的优先级。尽管管理者很重要,但他们不能整天站在那里等待有人询问在某种情况下该怎么做,例如当工程师将代码签入源代码存储库并且不确定正确的分支时。尽管对工程师进行这种管理可能会有所帮助,但它并不具有成本效益。相反,也许工程团队可以决定将错误修复放入维护分支,将新功能放入主分支。为了确保团队中的每个人都知道这一点,有人可能会将其写下来并发送给团队,将其发布在他们的 wiki 上,或者在下一次全体会议上告诉每个人。恭喜,团队刚刚开发了一个流程。而且,这是流程的主要目的之一,即在经理不在的情况下管理人员,或者经理花时间一遍又一遍地为团队提供相同的指导来完成同一任务不具有成本效益。良好的流程可以补充管理并扩大其影响范围。 Back to our example of an engineer checking in code to the source code repository: What would happen if the engineer did not have a process to reference, couldnot find her manager, and did not have a process established for dealing with procedural uncertainties? Assuming she checked all the logical manager hangouts like thegame room, kitchen, and water cooler, she would have to make a decision for herself.Today, she decides that she should check her bug fix into the maintenance branch.This seems pretty logical because the branch is called “maintenance” and the bug fixis maintaining the application. A couple days later, long enough for her to forgetabout her decision of where to check in the bug fix, she has been assigned anotherbug to fix. She quickly identifies the problem and makes the correction. All ready tocheck in the fix, she has the same question: which branch? She again looks for hermanager and cannot find him; he must have a very clever hiding spot in which towatch his favorite game show. She also cannot seem to remember what she did lasttime in this situation. She does remember hearing that code is being promoted fromthe main branch tonight and it seems logical that the product team and her bosswould want this fix in as soon as possible. Therefore, she checks in her bug fix to themain branch and proceeds with her new feature development. See the problem? Yes,without a clear process, there is room for everyone to make their own decisionsabout how to accomplish certain tasks. In some cases, this might be the right thingfor organizations; we’ll talk about too much process later in this chapter. But in mostcases that deal with recurring tasks that everyone should repeat in the same manner, aprocess is just the ticket. Two key reasons that we create and maintain processes arethe standardization of how to perform tasks and what to do in the event of procedural uncertainty. 回到我们的工程师将代码签入源代码存储库的示例:如果工程师没有可供参考的流程,找不到她的经理,并且没有建立处理程序不确定性的流程,会发生什么情况?假设她检查了所有逻辑经理常去的地方,如游戏室、厨房和饮水机,她必须自己做出决定。今天,她决定应该将错误修复检查到维护分支。这似乎很合乎逻辑,因为分支称为“维护”,错误修复是维护应用程序。几天后,足够长的时间让她忘记了在哪里检查错误修复的决定,她被分配了另一个错误来修复。她很快发现了问题并进行了纠正。准备好检查修复后,她有同样的问题:哪个分支?她再次寻找她的经理,却找不到他;他一定有一个非常聪明的藏身之处来观看他最喜欢的游戏节目。她似乎也不记得上次在这种情况下做了什么。她确实记得今晚听说代码正在从主分支升级,产品团队和她的老板希望尽快修复这一问题似乎是合乎逻辑的。因此,她将错误修复签入主分支并继续进行新功能开发。看到问题了吗?是的,如果没有明确的流程,每个人都有空间自行决定如何完成某些任务。在某些情况下,这对于组织来说可能是正确的;我们将在本章后面讨论太多的过程。但在大多数情况下,处理每个人都应该以相同方式重复的重复任务时,流程只是一张票。我们创建和维护流程的两个关键原因是如何执行任务以及在程序不确定时该怎么做的标准化。 In our consulting practice, we are often faced with teams that mistakenly believethat the establishment of processes will stifle creativity. The reality is quite different;in fact, well-placed processes can have just the opposite effect and foster creativityamong team members. For those with little experience working in an environmentwhere someone has done a great job identifying the proper tasks suitable for processes,selecting the proper granularity and rigidness of the process, and effectively documenting and disseminating the steps, this may come as a completely counterintuitive statement. Let us explain. There is only so much time in each work day and only somany tasks that your engineers can concentrate on. Equally important, people tendto only have a limited amount of creativity within them before they must “rechargetheir batteries.” If an engineer has to spend time and some amount of creativethought on menial tasks, we lose that time and creative power that could be spent onthe really important tasks, like designing your new user interface. A well-structuredenvironment of processes can take away the distractions and leave the engineer timeand energy to focus on being creative. 在我们的咨询实践中,我们经常遇到团队错误地认为流程的建立会扼杀创造力。现实却完全不同;事实上,适当的流程可能会产生相反的效果,并培养团队成员的创造力。对于那些缺乏工作经验的人来说,在一个环境中工作的人已经很好地确定了适合流程的适当任务,选择了流程的适当粒度和刚性,并有效地记录和传播了步骤,这可能是一个完全违反直觉的陈述。让我们解释一下。每个工作日只有这么多时间,您的工程师可以集中精力处理的任务也只有这么多。同样重要的是,人们在必须“充电”之前往往只有有限的创造力。如果工程师必须在琐碎的任务上花费时间和一定的创造性思维,我们就会失去本可以花在真正重要的任务上的时间和创造力,比如设计新的用户界面。结构良好的流程环境可以消除干扰,让工程师有时间和精力专注于创造力。 Now that we have covered the purpose of process, we can focus on how to determine what is the right process or amount of process for a particular task in your particular organization. Although processes do help augment management andstandardize repetitive or unclear tasks, not all organizations need or can tolerate thesame amount of process. Just as some organizations are not as efficient, productive,or able to produce as high of quality products as other organizations, not all organizations are able to handle levels of process and rigor. 现在我们已经介绍了流程的目的,我们可以重点关注如何确定特定组织中特定任务的正确流程或流程数量。尽管流程确实有助于增强管理并使重复或不明确的任务标准化,但并非所有组织都需要或能够容忍相同数量的流程。正如某些组织不如其他组织那样高效、富有成效或能够生产高质量的产品,并非所有组织都能够处理流程和严格程度。 ##### CMMI CMMI The origin of the Capability Maturity Model (CMM) in software engineering can be traced backto a military funded research project at Carnegie-Mellon Software Engineering Institute for amethod of evaluating software subcontractors. Founded as a pure software engineering model,many CMMs were later developed as a general assessment of the process capability maturityof many different technology arenas such as systems engineering, information technology, andacquisitions. The propagation of CMMs gave birth to the Capability Maturity Model Integration(CMMI) project with the intent of creating a general CMM framework. This framework supports“constellations,” which are collections of CMMI components. There are currently three constellations: CMMI for Development, CMMI for Services, and CMMI for Acquisitions. 软件工程中的能力成熟度模型(CMM)的起源可以追溯到卡内基梅隆软件工程研究所的一个军方资助的研究项目,用于评估软件分包商的方法。许多 CMM 最初是作为纯粹的软件工程模型而建立的,后来被开发为对系统工程、信息技术和收购等许多不同技术领域的过程能力成熟度的总体评估。 CMM 的传播催生了能力成熟度模型集成(CMMI)项目,其目的是创建通用的 CMM 框架。该框架支持“星座”,即 CMMI 组件的集合。目前存在三个星座:用于开发的 CMMI、用于服务的 CMMI 和用于采购的 CMMI。 CMMI uses levels to describe an evolutionary path of process improvement described aseither a “capability level” for organizations utilizing continuous improvement or “maturity level”for those using a staged representation. These levels are shown in Figure 7. 1 and described inTables 7. 1 and 7. 2. CMMI 使用级别来描述流程改进的演进路径,对于利用持续改进的组织,描述为“能力级别”;对于使用阶段表示的组织,则描述为“成熟度级别”。这些级别如图 7.1 所示,并在表7. 1 和7. 2 中进行了描述。 ![](https://blog.baidu-google.com/usr/uploads/2024/06/2553955518.png) #### Right Time, Right Process 正确的时间,正确的流程 All organizations are comprised of different people, with different backgrounds, different experiences, different relationships with each other, and different environments. Therefore, all organizations are different. Even if you left your old job for aterrific new position and brought all your old buddies with you, you won’t be able to transport your previous company’s culture. You are all somewhat older now, havehad new experiences in and out of work, have new business peers, and a new officeenvironment. Regardless of whether you left your old job, even that organization isforever in flux. People quit, new people get hired, the business climate changes, people get promoted, and so on. The same organization two years ago compared totoday is different. There is no stopping the change that is forever taking place. 所有组织都由不同的人组成,他们具有不同的背景、不同的经历、不同的相互关系和不同的环境。因此,所有组织都是不同的。即使你离开了原来的工作岗位,找到了一个很棒的新职位,并带上了所有的老朋友,你也无法传承以前公司的文化。你们现在都年纪大了,工作内外都有了新的经历,有了新的业务同事,也有了新的办公环境。不管你是否离开了原来的工作,即使是那个组织也永远在变化。人们辞职,新人被雇用,商业环境发生变化,人们得到晋升,等等。两年前的同一个组织与今天相比已经不同了。永远发生的变化是无法阻止的。 If all organizations are different and all organizations are in a constant state ofchange, what does this mean for an organization’s processes? The answer is thatthere is no single right answer when it comes to processes. Each and every processmust be evaluated first for general fit within the organization in terms of its rigor orrepeatability and then specifically for what steps are right for your particular team interms of complexity. As an example, when you first founded your company and itwas you and one other engineer with very few customers, the crisis management process would have simply been that you get out of bed in the middle of the night andreboot the server. If you missed the alert, you would reboot it the morning becausethere were likely no customers wanting to use your service in the middle of the night.Using that same process when your team is 50 engineers and you have thousands ofcustomers would result in pure chaos and lost revenue. You now need to have a process that spells out to everyone the necessary steps to take when a significant incidentarises and that process needs to be consistently repeatable. 如果所有组织都是不同的,并且所有组织都处于不断变化的状态,那么这对于组织的流程意味着什么?答案是,对于流程而言,没有单一的正确答案。必须首先评估每个流程的严格性或可重复性,以确保其在组织内的总体适应性,然后根据复杂性具体评估哪些步骤适合您的特定团队。举个例子,当你第一次创立你的公司时,只有你和另一位工程师,客户很少,危机管理过程很简单,就是你半夜起床并重新启动服务器。如果您错过了警报,您会在早上重新启动它,因为可能没有客户想要在半夜使用您的服务。当您的团队有 50 名工程师并且您有数千名客户时,使用相同的流程将导致纯粹的混乱和收入损失。现在,您需要一个流程,向每个人详细说明发生重大事件时应采取的必要步骤,并且该流程需要始终可重复。 ##### How Much Rigor 多少严谨 As a guideline for discussing the rigor or repeatability of a process, we like to refer tothe capability and maturity levels from the Capability Maturity Model Integrated(CMMI) framework. This section is in no way a full or complete explanation of theCMMI framework, much more information can be found at the Software Engineering Institute’s site, http://www.sei.cmu.edu. We are introducing this framework as away to simply standardize terminology for process improvement and repeatability.The CMMI levels are an excellent way to express how processes can exist in a number of states from ill-defined to one that uses quantitative information to makeimprovements. These extreme states are marked in Figure 7.2 with the O and the Xpoints along the gradient depicting the capability and maturity levels. 作为讨论流程的严谨性或可重复性的指南,我们喜欢参考能力成熟度模型集成(CMMI)框架中的能力和成熟度级别。本节绝不是对 CMMI 框架的完整解释,更多信息可以在软件工程学院的网站 http://www.sei.cmu.edu 上找到。我们引入这个框架是为了简单地标准化流程改进和可重复性的术语。CMMI 级别是表达流程如何存在于多种状态(从不明确的状态到使用定量信息进行改进的状态)的绝佳方式。这些极端状态在图 7.2 中用 O 和 X 点沿梯度标记,描述了能力和成熟度级别。 As introduced in the CMMI sidebar, the levels are used to describe an evolutionarypath of process improvement described as either a “capability level” for organizations utilizing continuous improvement or “maturity level” for those using a stagedrepresentation. Although it may be idyllic to have all level 5 processes in your business, it is unlikely, especially at a startup, that you will have enough resources tofocus on establishing, managing, documenting, measuring, and improving processesto accomplish this. It is much more reasonable that you should periodically focus on evaluating your process level of maturity and determine if this can and should beimproved given your competing priorities. 正如 CMMI 侧栏中所介绍的,这些级别用于描述流程改进的演进路径,对于利用持续改进的组织来说,被描述为“能力级别”,对于使用分阶段表示的组织来说,这些级别被描述为“成熟度级别”。尽管在您的企业中拥有所有 5 级流程可能是理想的,但您不太可能拥有足够的资源来专注于建立、管理、记录、衡量和改进流程来实现这一目标,尤其是在初创公司。更合理的是,您应该定期关注评估您的流程成熟度水平,并确定是否可以并且应该根据您的竞争优先事项进行改进。 ![](https://blog.baidu-google.com/usr/uploads/2024/06/1295899731.png) To answer the question of where should you focus on process improvement, wecould ask the employees or managers involved whether they need a more repeatableprocess, but it is often difficult to know without some yardstick against which tomeasure your current behavior or performance. We feel there are some warning signsor guidelines that you can use to help decide whether the existing capability or maturity level of process is working for your organization or if you should considerimproving the process. These signs are derived from the three purposes of processes. 为了回答您应该在哪里关注流程改进的问题,我们可以询问相关员工或经理是否需要一个更具可重复性的流程,但如果没有一些标准来衡量您当前的行为或绩效,通常很难知道。我们认为,您可以使用一些警告标志或指南来帮助确定流程的现有能力或成熟度级别是否适合您的组织,或者您是否应该考虑改进流程。这些标志源自过程的三个目的。 The first is if there is repetitive management of the same task. Recall that processesaugment the management of our teams and employees; therefore, a sure sign that aprocess could be effective is if you or your managers are constantly managing peoplethrough certain tasks. Observe your managers to see if they are spending an inordinate amount of time assisting people in determining which source code repositorybranch to check their code into or what steps to take during and after an incidentwith the production environment. If they or you are spending time on these again andagain, this is a good sign that you could use some amount of process. 首先是是否存在对同一任务的重复管理。回想一下,流程增强了我们团队和员工的管理;因此,一个流程有效的明确标志是,如果您或您的经理不断地通过某些任务来管理人员。观察您的经理,看看他们是否花费过多的时间来帮助人们确定将其代码签入哪个源代码存储库分支,或者在生产环境发生事件期间和之后采取哪些步骤。如果他们或您一次又一次地花时间在这些事情上,这是一个好兆头,表明您可以使用一定量的流程。 Another sign of the impending need for process improvement is if every engineerseems to be doing the same task differently. For instance, if one engineer checks bugfixes into the main branch and another checks them into the maintenance branch andstill others don’t bother checking it in but build packages on their local machine, thisis probably a great place for a process. If you need to standardize people’s behaviorsor actions, consider improving the process as a means to achieve this. 迫在眉睫的流程改进需求的另一个迹象是,是否每个工程师似乎都以不同的方式完成相同的任务。例如,如果一名工程师将错误修复检查到主分支,另一位工程师将它们检查到维护分支,还有其他工程师不费心检查它,而是在本地计算机上构建软件包,那么这可能是一个流程的好地方。如果您需要标准化人们的行为或行动,请考虑改进流程作为实现这一目标的手段。 The third sign that you might need some process in your organization is if employees are being overly burdened by mundane stuff. These distractions take away fromtheir time, energy, and creativity. Some ways that this might manifest itself would befirst complaining from your teams. Engineers generally are not the type of person tokeep quiet if they feel hindered from performing their jobs or if they feel they have abetter idea of how to accomplish something. Another way this warning sign mightappear would be rushed or poorer quality designs. Having to reinvent the proper way to set up a development environment for every sprint—because every engineer isdoing it differently and, depending on who you are working with, you have to comply with their practices—takes way more time than should be required. Establishing amore mature process around environment variables, development databases, and soon would save a lot of engineering time and energy. 您的组织中可能需要某种流程的第三个迹象是,员工是否因日常事务而负担过重。这些干扰会夺走他们的时间、精力和创造力。这可能会通过某些方式体现出来,首先是来自您的团队的抱怨。如果工程师觉得自己的工作受到阻碍,或者觉得自己对如何完成某件事有更好的想法,那么他们通常不会保持沉默。这个警告信号可能出现的另一种方式是匆忙或质量较差的设计。必须重新发明正确的方法来为每个冲刺设置开发环境——因为每个工程师的做法都不同,而且根据与你一起工作的人,你必须遵守他们的做法——所花费的时间比应有的要多得多。围绕环境变量、开发数据库建立更成熟的流程,很快就会节省大量的工程时间和精力。 ##### How Complex 多么复杂 The second part of establishing the right process at the right time for your organization is the level of complexity of the process. As we discussed previously, organizations are constantly changing, new employees are added, others leave, people mature,people learn lessons, and sometimes they forget lessons. Choosing the right level ofprocess complexity is not a matter of determining it forever, but rather choosing theright level of complexity for today. Tomorrow, this might need to be reevaluated. Torestate the problem statement, you need to determine the right amount of processcomplexity for your organization at this time. 在正确的时间为您的组织建立正确的流程的第二部分是流程的复杂程度。正如我们之前讨论的,组织在不断变化,新员工加入,其他员工离开,人们成熟,人们吸取教训,有时他们会忘记教训。选择正确的流程复杂性级别并不是永远确定它的问题,而是为当前选择正确的复杂性级别。明天,这可能需要重新评估。为了重述问题陈述,您此时需要确定适合您的组织的流程复杂程度。 We have two suggestions for ways to determine the right amount of process complexity. Before we explore these two methods, let’s provide an example of the differences in complexity of processes. In Figure 7.3, we see another gradient, this time it isdepicting complexity from simple to complex with two examples of a process forincident management. The first one on the left depicts the very simple three-step process that is most applicable for a small startup with just the couple of engineers. Theprocess on the right is a much more complex process that is more applicable to alarger organization that has a staffed operations team. As depicted by the gradient,there can be a large variety of levels of complexity for a given process. 对于确定适当的流程复杂程度的方法,我们有两条建议。在我们探讨这两种方法之前,让我们提供一个示例来说明流程复杂性的差异。在图 7.3 中,我们看到了另一个梯度,这次它通过两个事件管理流程示例描述了从简单到复杂的复杂性。左边的第一个描述了非常简单的三步流程,最适用于只有几个工程师的小型初创公司。右侧的流程是一个更为复杂的流程,更适用于拥有人员配备的运营团队的大型组织。正如梯度所示,给定过程可能存在多种复杂程度。 ![](https://blog.baidu-google.com/usr/uploads/2024/06/419032136.png) Now that we understand how there can be many different variations on the sameprocess, we need to explore some methods of how to determine which of these multitudes is right for our organization. We mentioned that we have two suggested methods of determining the process level; these have worked well for us in the past andcan be used in combination or separately: 现在我们了解了同一流程如何可能有许多不同的变化,我们需要探索一些方法来确定这些变化中的哪一个适合我们的组织。我们提到我们有两种建议的方法来确定过程级别;这些过去对我们来说效果很好,可以组合或单独使用 * The first is to start with the smallest amount of process complexity and iteratively move to the more complex and sophisticated processes periodically. Theadvantage of this is that there is very little chance of overwhelming the teamwith the new process because it is likely to be much simpler than what isrequired or that they can tolerate (remember culture is a factor in how muchprocess should exist on a team). The disadvantages of this approach are that ittakes time to narrow in on the optimal amount of process, it requires that youremember to revisit the process periodically, and it requires you to change theprocess that people are used to on a frequent basis. If these disadvantages aretoo much, you may consider using our second method. * The second method of narrowing in on the optimal process for your organization is to let the team decide for itself. This approach can either be democratic,where everyone gets a voice, or representative, where a chosen few speak for thegroup. Either way, this approach will get you closer to the optimal amount ofprocess much quicker than the preceding small to large approach. It also has theadvantage that it makes the team feel a sense of ownership making the adoptionof the process much easier. * 第一个是从最小的流程复杂性开始,然后定期迭代地转向更复杂和复杂的流程。这样做的优点是,新流程不太可能让团队不知所措,因为它可能比所需的或他们可以容忍的简单得多(请记住,文化是决定团队中应该存在多少流程的一个因素)。这种方法的缺点是需要时间来缩小流程的最佳数量,它需要您记住定期重新访问该流程,并且需要您经常更改人们习惯的流程。如果这些缺点太多,你可以考虑使用我们的第二种方法。 * 缩小组织最佳流程范围的第二种方法是让团队自行决定。这种方法可以是民主的,即每个人都有发言权,也可以是代表性的,即少数被选中的人代表群体发言。不管怎样,这种方法将使您比前面的从小到大的方法更快地接近最佳进程量。它还具有让团队感受到主人翁意识的优点,从而使流程的采用变得更加容易。 You can choose to implement one method or the other to find your optimal process, or you can mix them together. In a mixed method, you could have the teamdecide on the process and then step it down slightly in order to ensure the adoption iseven quicker. If the team feels they need a very strict branching process, you couldsuggest that to start you would like them to ease up just slightly and allow for someflexibility on the naming convention and timing of pulling branches just until everyone is familiar with the process. After the process is fully established, after a releaseor two, modify the process and adopt the original suggestions for naming conventions and timing. 您可以选择实施一种方法或另一种方法来找到最佳流程,也可以将它们混合在一起。在混合方法中,您可以让团队决定流程,然后稍微放慢速度,以确保更快地采用。如果团队认为他们需要一个非常严格的分支过程,您可以建议在开始时您希望他们稍微放松一下,并在命名约定和拉取分支的时间上允许一些灵活性,直到每个人都熟悉该过程。流程完全建立后,在发布一两次后,修改流程并采用命名约定和时间安排的原始建议。 Johnny Fixer, the new CTO at AllScale, was facing a process problem with hisoperations staff headed up by the Director of Infrastructure and Operations, TomHarde. Tom had been around since the early days of AllScale and had provisionedand racked many of the original servers himself. As Tom brought on board other systems administrators to help with the work load, he didn’t revisit the provisioningprocess for getting servers ready to load the HRM software. Still today with four systems administrators, this work is done ad hoc with no defined tasks or establishedpolicies. This has caused numerous problems from missing deadlines for having hardware ready for deployment to bad configurations that took hours of engineering timeto debug. Johnny asked Tom to fix this process and explained the two approachesthat had worked best for him in the past, either start with the smallest process that meets the goals or let the team decide. Tom was skeptical but liked the secondapproach best and decided that he would gather the systems administrators in a roomfor an afternoon, allowing them to figure out the best process. Tom thought at leastone of the systems administrators would derail the meeting with a rant about hatingprocess. To his surprise, the senior systems administrator was completely on boardand as soon as he threw his vote behind the establishment of a standard process,everyone else was eager to help. Within a few short hours, they had decided on a setof standard steps that they would all adhere to for provisioning equipment. Althoughthe steps were well defined, they provided enough leeway to allow the administratorsto continue using some of their favorite scripts as long as the goals were met. AllScale 的新任 CTO Johnny Fixer 正面临着由基础设施和运营总监 TomHarde 领导的运营人员的流程问题。 Tom 从 AllScale 早期就已经存在,并亲自配置和架设了许多原始服务器。当 Tom 邀请其他系统管理员来帮助处理工作负载时,他没有重新审视让服务器准备好加载 HRM 软件的配置过程。时至今日,这项工作仍由四名系统管理员临时完成,没有明确的任务或既定的策略。这导致了许多问题,从错过硬件准备部署的最后期限到需要花费数小时的工程时间进行调试的错误配置。约翰尼要求汤姆修复这个流程,并解释了过去对他最有效的两种方法,要么从满足目标的最小流程开始,要么让团队决定。汤姆对此表示怀疑,但最喜欢第二种方法,并决定将系统管理员聚集在一个房间里一个下午,让他们找出最佳流程。汤姆认为至少有一个系统管理员会因仇恨流程的咆哮而破坏会议。令他惊讶的是,高级系统管理员完全同意了,当他投票支持建立标准流程时,其他人都急于提供帮助。在短短几个小时内,他们就决定了一套他们在配置设备时都将遵守的标准步骤。尽管这些步骤定义良好,但它们提供了足够的余地,允许管理员在满足目标的情况下继续使用他们最喜欢的一些脚本。 #### When Good Processes Go Bad 当好的流程变坏时 Until this point, we have discussed all the noble attributes of processes and, as muchas we would like to believe that there is no downside, the reality is that processes cancause issues themselves. Similar to how a poorly designed monitoring system cancause downtime on the production site due to load issues, processes can, when thecomplexity and level of rigor are not carefully considered, cause issues within theorganization. These challenges are generally not the fault of the processes themselves,or even due to having a process; rather, they are due to the fit between the processand the team. You see this often with technology, designs, and architectures. Thereare almost no purely wrong technologies: flat network (sure, we can find a use for that),stateful apps (yes, even that can have a purpose), singletons (yes, they have a place inour world). But use these in the wrong place and you’re sure to have problems. 到目前为止,我们已经讨论了流程的所有崇高属性,尽管我们愿意相信流程没有缺点,但现实是流程本身可能会导致问题。与设计不当的监控系统可能因负载问题导致生产现场停机类似,如果不仔细考虑流程的复杂性和严格程度,也会导致组织内部出现问题。这些挑战通常不是流程本身的错,甚至不是因为有流程;相反,它们是由于流程和团队之间的契合造成的。您经常在技术、设计和架构中看到这一点。几乎没有完全错误的技术:扁平网络(当然,我们可以找到它的用途)、有状态应用程序(是的,即使这样也可以有一个目的)、单例(是的,它们在我们的世界中占有一席之地)。但如果用在错误的地方,肯定会出现问题。 One of the biggest problems with a bad fitted process is the culture clash. When aWild West culture meets a very complex hundred-step process, sparks are sure to fly.The result is that the teams will either ignore the process, in which case it is actuallycausing more problems than it is helping, or they will spend a lot of time complainingabout the process. Both of these results are probably worse than not having the process at all. If you witness this on your teams, you must act quickly—the process is notonly hurting the team in the short term but it is likely causing even more of a buildupin the resistance to process or change, which will make implementing any process inthe future more difficult. 不合适的流程的最大问题之一是文化冲突。当狂野的西部文化遇到一个非常复杂的百步流程时,肯定会擦出火花。结果是团队要么忽视这个流程,在这种情况下,它实际上造成的问题多于它带来的帮助,要么他们会花费大量资金抱怨这个过程的时间。这两种结果可能比根本没有这个过程更糟糕。如果您在团队中目睹了这一点,您必须迅速采取行动 - 该流程不仅会在短期内损害团队,而且可能会导致对流程或变革的抵制加剧,这将使未来实施任何流程变得更加困难。难的。 Another of the big problems associated with poor fit between the organization andthe process is the dreaded “b” word: bureaucracy. This term is defined by the MerriamWebster Online Dictionary as “a system of administration marked by officialism, redtape, and proliferation.” The last thing we want to do with process is create red tapeor officialism. The result of bureaucracy as you might expect is lowered productivityand poorer morale. As we mentioned before, engineers love challenges and thrive on being asked to do difficult things. When they are so hindered as to be unable to succeed, it is easy for engineers to become demoralized. This is why engineers are typically so ready to speak out about things that hinder their ability to perform their jobseffectively. The challenge for you as a manager and leader is to decide when the complaining is just a matter of not liking change or an engineer being a curmudgeoninstead of a real problem that needs to be addressed. The best way to tell the difference is to know the team and how it generally reacts. 与组织和流程之间不匹配相关的另一个大问题是可怕的“b”字:官僚主义。 《韦氏在线词典》将这个词定义为“以官僚主义、繁文缛节和扩散为特征的行政系统”。我们最不想对流程做的事情就是创造繁文缛节或官僚主义。正如你所预料的那样,官僚主义的结果是生产力下降和士气低落。正如我们之前提到的,工程师喜欢挑战,并在被要求做困难的事情时茁壮成长。当他们受到如此严重的阻碍而无法成功时,工程师很容易变得士气低落。这就是为什么工程师通常乐于说出阻碍他们有效执行工作能力的事情。作为经理和领导者,你面临的挑战是确定抱怨何时只是因为不喜欢改变或工程师脾气暴躁,而不是需要解决的真正问题。区分差异的最佳方法是了解团队及其通常的反应。 To prevent the culture clash and bureaucracy, or in the event that you already havethem, there are three key areas to focus on. The first is listening to your teams. Whenyou have learned the nuances of each team member’s personality, including those ofyour managers if you have a multilayered organization, you will be able to tell whensomething is really bothering them versus when something is just a mild disturbance. 为了防止文化冲突和官僚主义,或者如果你已经拥有它们,需要关注三个关键领域。首先是倾听团队的意见。当您了解每个团队成员性格的细微差别(包括您的经理(如果您有一个多层组织)时,您将能够辨别什么事情真正困扰他们,什么时候事情只是轻微的干扰。 The second is implementing the process using one of the two methods wedescribed earlier. Either move small to large on the process continuum or let the teamdecide what the right amount of process is to establish. Either or both of these, if youelect to use them in conjunction with each other, should result in a good fit betweenthe team and their processes. 第二种是使用我们之前描述的两种方法之一来实现该过程。要么在流程连续体上从小到大移动,要么让团队决定建立多少流程。如果您选择将它们结合使用,其中任何一个或两者都应该会导致团队及其流程之间的良好配合。 The third area to focus on is performing periodic maintenance on your processes.As we have repeatedly stated, there is no right or wrong process, just right processesfor the right organization at the right time. And, organizations change over time.This implies that as the organization changes, processes must be reevaluated toensure they are still the optimal process. Performing periodic maintenance on theprocess is critical to ensure it does not turn into a culture clash or start to becomebureaucratic. 第三个需要关注的领域是对流程进行定期维护。正如我们反复指出的,没有正确或错误的流程,只有在正确的时间为正确的组织提供正确的流程。而且,组织会随着时间的推移而变化。这意味着随着组织的变化,必须重新评估流程以确保它们仍然是最佳流程。对流程进行定期维护对于确保它不会演变成文化冲突或开始变得官僚至关重要。 #### Conclusion 结论 We have covered quite a bit about processes in general in this chapter. We started bylooking at the purpose of processes and determined that they serve three general purposes: they augment the management of our teams and employees, they standardizeemployee’s actions while performing repetitive tasks, and they free employees upfrom daily mundane decisions to concentrate on grander, more creative ideas. Without processes such as crisis management or capacity planning and without them fitting our teams well in terms of complexity and repeatability, we cannot scale oursystems effectively. 在本章中,我们已经介绍了很多有关流程的一般内容。我们首先研究了流程的目的,并确定它们服务于三个一般目的:它们增强了我们团队和员工的管理,它们在执行重复性任务时标准化了员工的行为,它们使员工从日常平凡的决策中解放出来,专注于更宏伟、更具创造性的事情。想法。如果没有危机管理或容量规划等流程,如果它们在复杂性和可重复性方面不适合我们的团队,我们就无法有效地扩展我们的系统。 We then took a look at how there are many variations in terms of complexity andprocess maturity that exist. We also concluded that organizations are all different andthey are even different from themselves over time because they change as people gethired or leave or mature or learn. The real challenge is fitting the right amount of the right process to the organization at the right time. We offered two suggestions onhow to ensure you achieve this goal. The first idea was to start off with a very lowamount of process and then slowly start increasing the granularity and stricter definitions around the process. This manner of wading into the process can be effective foreasing one’s way into the world of processes. The other manner is to let the teamdecide what the right process is for a given task. Assign either one person to figurethis out or ask the entire team to sit in a room for a couple hours to make the decision. 然后我们研究了在复杂性和流程成熟度方面存在的许多变化。我们还得出结论,随着时间的推移,组织都是不同的,甚至它们本身也有所不同,因为它们会随着人们被雇用、离开、成熟或学习而发生变化。真正的挑战是在正确的时间为组织提供正确数量的正确流程。我们就如何确保您实现这一目标提供了两条建议。第一个想法是从非常少量的流程开始,然后慢慢开始增加流程的粒度和更严格的定义。这种涉足流程的方式可以有效地帮助人们进入流程的世界。另一种方式是让团队决定针对给定任务的正确流程。要么指派一个人来解决这个问题,要么让整个团队坐在一个房间里几个小时来做出决定。 We finished off the chapter by discussing the problems that can arise for ill-fittingprocesses. These include culture clashes and bureaucracy. We gave some warningsigns to look for to identify these problems and some corrective actions to take toresolve them. We also provided some ideas on how to avoid these problems throughperiodic maintenance of your processes. Reviewing the fit for each process on anannual basis or as the organization undergoes a significant change such as a largeamount of new hires will help ensure you have the right process for the organizationat the right time. 我们通过讨论不合适的流程可能出现的问题来结束这一章。其中包括文化冲突和官僚主义。我们给出了一些警告信号来识别这些问题,并提供了一些纠正措施来解决这些问题。我们还提供了一些关于如何通过定期维护流程来避免这些问题的想法。每年或在组织发生重大变化(例如大量新员工)时检查每个流程的适合性将有助于确保您在正确的时间为组织提供正确的流程。 The rest of Part II of this book is going to deal with the details of specific processesthat we feel are very important for scalability. For each one of these, you shouldremember the lessons learned in this chapter and think about how this would affectthe way to introduce and implement each process. 本书第二部分的其余部分将讨论我们认为对于可扩展性非常重要的特定流程的细节。对于其中的每一个,您都应该记住本章中学到的经验教训,并思考这将如何影响引入和实施每个流程的方式。 ##### Key Points 关键点 * Processes, such as application design or problem resolution, are a critical part ofscaling an application. * Processes assist in management tasks and standardization, and free employeesup to focus on more creative endeavors. * There is a multitude of process variations that exist to choose from for almostany given process. * Determining to implement any process at all is the first step. After that has beendecided, next is deciding the optimal amount of process to implement. * There are two suggested methods for determining the optimal amount of process: migrating from small to large through periodic changes or let the teamsdecide on the right amount. * A bad fit between a process and an organization can result in culture clashes orbureaucracy. * Avoid problems between processes and organizations by letting the team determine the right amount of process, or start slowly and ramp up over time. * Maintenance of processes is also critical to ensure organizations do not outgrowprocesses. * 应用程序设计或问题解决等流程是扩展应用程序的关键部分。 * 流程有助于管理任务和标准化,使员工能够专注于更具创造性的工作。 * 几乎任何给定的工艺都存在多种工艺变体可供选择。 * 决定实施任何流程是第一步。决定之后,接下来是确定要实施的最佳流程量。 * 有两种建议的方法来确定最佳流程量:通过定期更改从小到大迁移,或者让团队决定正确的流程量。 * 流程和组织之间的不匹配可能会导致文化冲突或官僚主义。 * 通过让团队确定适当的流程数量,或者缓慢开始并随着时间的推移逐渐增加,避免流程和组织之间出现问题。 * 流程维护对于确保组织不会超出流程也至关重要。
没有评论