咨询的奥秘
随着自己的成长,我常常会思考一些问题:
- 他能不能听懂我说的?
- 他需要有哪些知识储备才能理解我?
- 他有没有意愿听懂吗?
- 我的想法对吗?
- 我的想法是不是偏了?
举一个例子,如何向其他人解释平台工程?
我可以说“平台工程是专业化的 DevOps”。那什么是 DevOps 呢?很多人觉得上了个 DevOps 平台就是 DevOps;有的人直接采用字面意思,即开发和运维的结合;还有一些可以认为是原教旨主义者,认为 DevOps 就是开发自己搞运维。
想要对齐 DevOps 已经很难了,对齐平台工程看似是一个不可能的任务。好在,AI 来袭,大家的注意力早就转移。AI 领域的概念看起来要清晰的多,也许 parameter,weight,superparameter,model 也有一些挠头,但是深入研究后,并不会有太多的误解。
所以,也许不必再考虑让平台工程的世界和谐,直接用 AI 改变世界更简单。
就像把团队名称改成 SRE ,就是 SRE 了。
为什么咨询很难?
我的职业生涯中有很长一段时间,是作为技术专家帮助客户解决问题。主要是技术问题,许多问题是非常紧迫的,所以我面对的困境并没有《咨询的奥秘》那样严重。
比如这个 CPU 高的例子,客户反馈这个应用以前是正常的,自动前面放了个 F5 之后,过一段时间就会 CPU 过高。
大家看看这个代码有什么问题:
我很开心找到这个问题,也很开心能证明了这个程序员的愚蠢。
是的,我帮助客户解决了问题。但是,我一直没有得到开发这边积极的反馈,开发一定是偷偷的修改了程序,然后要用一套说辞掩饰自己的愚蠢,是我也未必不会有这样的错误,我自己也会找一套说辞来掩饰自己。
另外一个例子是最近几年的事情,如果说之前的客户都是科班出身,比较有板有眼,这几年却遇到了许多非常不规范的厂商。比如,有个客户,合同不大,应用不算多,但是出现故障的频率特别高,而且每次都很离谱。解决了几次问题后,我发现这个客户的运维太不规范了。比如,直接修改产品提供的启动脚本。
这里不得不提很多人不懂得产品和配置的区别,举一个 Java 中间件的例子。IBM WebSphere Application Server(WAS) 和 WebLogic Server(WLS) 都可以创建一个用户配置目录,WAS 叫做 Profile,你很难去修改一个 WAS 的启动脚本,因为很多关键信息并不在启动脚本中,例如虚拟机参数,这样看似乎不灵活,但是却很规范,你不太用担心脚本被人修改过。而 WLS 呢,你是可以直接修改启动脚本设置虚拟机参数的,所以很多人就这么干了,问题是这就给了很多人发挥的空间,例如就有脚本大师加了许多判断,根据不同的参数设置不同的虚拟机参数。但实际上,WebLogic 的脚本提供了用户修改虚拟机参数的办法,用户可以自己写一个脚本,去调用 WebLogic 的脚本,这样你所做的修改就可以一目了然了。
虽然是一个挺简单的道理,但是这几年我还是能看到,很多产品设计和运维人员都缺乏这样的意识。
所以,我认为客户更大的问题是缺乏规范,不过一旦问题到了这个层面就没有什么推进了。我自然可以进一步推论,问题是关键岗位能力不足,或者是体制问题,或者更深入,也可能是国家的财富分配制度。
所以,我本身回到了咨询的第一个前提,是需要有人希望你能提供意见。显然不是,这些领导只需要你解决技术问题。
推荐这本书,因为这本书不仅是为咨询顾问准备的,也是每个组织所需要的。