Table of Contents

Making Work Visible

让工作变得清晰可见

等一下。。。你用REPL[1]来解决这个问题?

我正在为一位同事做记录,他在一次事故后采访一位工程师。有一项服务出现了故障,工程师正在讨论他们是如何找出问题所在的。在那之前,我不知道我们支持在生产环境(production box)上启动一个REPL来询问该服务的状态。

我们所做的大部分工作对其他人来说都是不可见的;他们看到了结果,但不知道我们是如何做到的。即使在事故中,我们与他人密切合作,我们的同事也很少有机会观察到我们到底在做什么。他们看不到我们正在运行哪些查询,我们正在看哪些图表或日志,我们如何解释这些结果,以及我们如何决定下一步该看哪里。

让这项工作可见,有巨大的价值:为同事们提供一个窗口,让他们了解我们日常工作中混乱的细节。

为了解决人们在组织中遇到的问题,我们需要了解这些问题是什么:一个操作工具有一个容易出错的用户界面,或者一个工作量很大的团队需要他们不断地进行上下文切换。

在你的组织中,没有人完全了解系统是如何运作的,而且我们经常被一些我们没有的重要背景所困扰。虽然完全了解我们的系统是无法实现的,但通过看到别人的工作,我们可以更多地了解系统的工作原理。我了解了各种各样的操作界面,我甚至都不知道它的存在。
 
要提高一项技能,没有比直接体验更好的方法了。然而,如果我们有机会观察别人的行动,我们也可以从他们的经验中学习。本文开头的REPL轶事就是一个很好的例子。

你如何向组织内部的专家学习?一般来说,促进技能转移的最好方法是观察专家的行动。理想的情况是,你和他们一起工作。观察他们解决实际问题,并记录他们如何减轻操作上的意外:你看他们如何解释信号,他们使用哪些工具,并询问他们如何做出决定。

我最喜欢的方法是通过讲故事来使工作可见。我们人类似乎有听故事的天赋,尤其是那些带有张力和戏剧性的故事。 没有比事故更好的紧张气氛和戏剧性了!

当我们把事故当作是一个让工作清晰可见的机会时,这就从根本上改变了我们的事故后报告的内容。这些报告的重点从预防行动项目转移到叙述性描述。我们现在要写一个故事,从不同工程师的角度来描述事件是如何发展的。通过使用叙事结构来记录我们的事故,我们可以利用讲故事的力量,以一种引人入胜的方式使工作清晰可见。

一个好的叙述性描述可以描述出人们在那一刻的想法。回想一下你所参与的最后一次事件。你收到了什么信号,让他们知道事情不对劲?是什么导致你去看某个特定的仪表盘或错误日志,给了你这个信号?在事件中,你对所发生的事情的理解是如何演变的,又是如何被你后来收到的信号所影响的?人们是如何协调的?

叙述式的文章需要更长的时间来写,也需要更长的时间来阅读。但是,如果叙述写得好,人们会很高兴地读完这篇文章。比起传统的根本原因分析,他们会更了解你的系统。

我们如何构建本书的结构

SRE虽然涉及复杂的技术系统,但归根结底是一种文化实践。文化是人的产物,这启发我们根据你在组织中的SRE数量来组织本书的各个部分–你具体处理什么,你的一天是怎样的,取决于有多少个SRE工程师。我们将本书的文章分为 “SRE新手” 、0-1个SRE、1-10个SRE、10-100个SRE和 “SRE的未来 ”。

读者如果想找寻先从哪里开始的指导,可以直接跳到最适用于自己的部分;但是,你仍然会发现阅读那些目前并不适用于你日常的部分的文章的价值。

在0到1个SRE时,还没有人被指定为SRE,或者你已经找到了你的第一个SRE,这个角色看起来几乎是孤独的。

在1到10名SRE时,你正在组建一个团队,有知识共享和分工的能力。

在10到100个SRE时,你已经成为一个组织,你需要思考的不仅仅是你所从事的系统,还需要思考如何组织这么多SRE。

“SRE新手” 涵盖了基础性的话题(尽管并不详尽!),对于那些刚刚开始SRE之旅的人来说是很有帮助的,即使是最有经验的SRE,也是一种复习。 “SRE的未来” 包含了一些文章,这些文章探讨了SRE潜在的发展方向,或者是(目前)坐拥时代潮流。

没有必要按照任何特定的顺序阅读本书。你可以从头到尾读一遍。或者,如果你对某个特定的主题感到好奇,可以翻到索引,在那里你可以找到关于该主题的所有文章。把它作为参考指南,或者是灵感的来源–可以在需要的时候提供一个震撼。或者,也许可以建立一个阅读俱乐部,每周一次挑选一篇文章与同事讨论。这就是散文集的魅力所在。我们希望你和我们一样喜欢阅读它们。

结语

SRE系列的文章,有时间我就会翻译一些,希望大家能学到对自己有用的东西。谢谢

翻译不易,转载时请注明原文链接,谢谢

延伸阅读

1.REPL

REPL stands for read-eval-print-loop, an interactive environment.

A read–eval–print loop (REPL), also termed an interactive toplevel or language shell, is a simple interactive computer programming environment that takes single user inputs, executes them, and returns the result to the user; a program written in a REPL environment is executed piecewise. The term is usually used to refer to programming interfaces similar to the classic Lisp machine interactive environment. Common examples include command-line shells and similar environments for programming languages, and the technique is very characteristic of scripting languages.[1]