How to resolve the problem?

获取基本的相关信息(后续处理问题的基础) 

在怎样的背景环境下?发生了怎样的问题?
如果无法清楚地辨别或陈述问题的基本信息,那么,此时要面对的将不仅仅是问题本身!
      
       问题的归属(自身的问题?还是外部问题?)
 
       问题现象的描述
       级别及影响(影响层面、时间和资源投入等)--- 对应级别和影响的问题,应由对应级别和影响的人去解决
       当前问题处理参与人员
 
       确认相关版本(Component) 
       发生时间
       发生的阶段:新安装阶段?维护阶段?。。。
       发生前的操作
       设备信息:单方使用?多方共用?。。。
       当前日志收集
       远程登录信息
       。。。。。。
 
问题定性(本质) --- 清楚的辨别和描述问题
产品问题? --- 需求问题? --- 情绪发泄? ......
原生问题? --- 由其他问题引发的衍生问题?
个别? ---  共性?
偶发? ---  频繁?
。。。。。。
 
详细信息获取
报错信息来源与内容
相关配置与流程状态
Open debug level log
网络状态
服务状态
文件相关属性:目录地址、权限、所属关系、格式、链接。。。
。。。。。。
 
常用问题分析方法
precondition status ------>  configuration & data flow  ------>   log&infos flow ------> troubleshooting flow
每一个环节的前提条件是否成立?
每一个环节的配置和数据流是否正确?
依据每一个环节的日志或信息,能够获取怎样的判断依据?
 
      场景区分:针对不同阶段和场景,侧重点不同。
      例如:如果问题发生在全新安装或全新集成阶段,那么问题发生的原因更可能与误操作,误配置,流程错误相关。
            如果问题发生在产品使用阶段,那么要首先确认的问题发生之前的状态、操作信息、业务使用背景、备份配置等。
 
最小环境:从最基本因素开始排查,逐步添加其他因素进行判断 --- 正向分析 --- 业务起点至终点
分解与排除:根据业务原理流程,逐步查找有效信息,排除原因,缩小范围 --- 反向分析 --- 业务终点至起点
 
对比:跟正确的做比较,不同的便是可疑的。纵向---同一事物不同时间段的对比, 横向---同一时间段不同事物的对比
替换:分阶段,逐步调换对象做验证 --- 换内容、换配置、换文件、换网元、换lab。。。
 
重现(在真实环境观察或模拟问题的发生): get more infos 、 open trace 。。。
模拟(虚拟环境):simulator --- 一般验证基本流程和配置
 
相似案例 : 从相似案例中获取有效信息,推动当前问题的解决
 
试错:条件允许的情况下,有依据地多次尝试,可能会发现新的可用信息或处理方式
 
。。。。。。
 
无奈的”三板斧“
重置(配置)
重启(服务--》模块--》系统--》组或集群--》硬件平台)
重装(!)
 
过程中
      尽可能保留相关信息(log 、 screenshot、等等),作为后续处理和问题回溯的资料,例如:在相关登陆程序中启用log保留功能
      重大影响及关键操作一定要获得双授权(customer and local)
 
      及时更新状态并知会相关人
更新信息应包括:当前状态、Next action、可能的预计结果、时间点、你的困境和需求、。。。
 
问题处理的过程中,很有可能又引入新的问题出现,此时面对多个问题,应持续关注根本问题,合理排序,逐个解决,如无必要,不建议同时处理多个问题。
低头解决问题, 抬头看问题状态(自己的角色与作用、进展、性质、customer和high level的反馈。。。)
。。。。。。
 
全局关注(whole picture)
你只是问题处理流程上的一个环节或者节点,从整个流程上去审视本身的作用,做好该做的事,会更好促进问题解决!
从事件整个流程去观察一个阶段和环节;从一个时间范围去观察共发事件的相互影响;从一个生命周期去观察时间阶段。
 
问题闭环
Root Cause analysis (RCA) and Escape Defect Analysis (EDA)
探求问题的本质和处理流程的改善。
 
Customer认知

无论是外部还是内部customer,一般情况下,可预先假定他们是“高贵、繁忙,迫切而又茫然”的。
    高贵 -----有了情绪,分分钟就能“Management Escalation”到high level发起challenge
                    保持问题状态适当update频率
    繁忙 -----总是没时间的,极有可能没法及时回复
                    连环E-mail,连环Call;引入high level,持续请求。
                   从第三封邮件开始,明确申明这是第几次请求恢复,并设置默认选项和时间点,  作为以后的凭证。
    迫切 -----无论问题怎样, customer总是希望能够得到最快的解决。
                   慎重承诺deadline。
    茫然 -----通常不具备相关知识背景,或者了解很少很基础的一部分。
                   最初接触到的问题信息和表述,很可能不准确、不完整,未必反映问题的本质。必要时,信息需要亲自重新获取、确认和对比。
                   需要他们做某些操作时,提供详细的步骤!
如果“恰好”遇到一个“耐心好,时间充裕,懂产品”或者"肯钻研"的customer......However,everything has two sides......你懂的。

换位思考
假定此时你是customer,来理解customer的利害点和需求,
受限于信息不对等,理解会存在偏差,不存在“感同身受”,只是尽可能地“设身处地”去了解。
别把自己的感知强加给他人!你的理解可能只是你的主观感受,不是客观的实际状态。
 
情绪控制与沟通协作
人与人的区别比人与动物的区别都要大,个体的巨大差别(知识背景、技能状态、秉性喜好、利害冲突等等),必然会出现难以理解的情况。
对于过程中出现难以理解的事物,只能说。。。尽量避免情绪上的对立。
普通人一旦有了对立情绪这个内因,必然会导致态度上的消极,事物上的拖延,于己于人于事无益!
一个可行的方法:
根据当时的实际情况,来确定意愿层级 : 尽心、尽力、尽责。
尽心 ----- 愿意花费工作之外的时间和精力。
尽力 ----- 工作时间之内,力所能及地做些额外的事情。
尽责 ----- 基于事情本身完成职责之内的事情。
如果心中有“猛虎”,就把这理解为只是一份工作中的一个task而已,如果task的安排具有合理性(时间、技能、目标、资源。。。),那就遵从这个合理性的安排。
就事论事,简单直接的基于事情本身来开展,基于本职尽责。这是共同协作完成事情的基本要求,同时这也是沟通与协作基础。
万一,那么,如果。。。控制不住内心的“猛虎”,怎么办?------ 凉拌!(换task、换人、换岗位、换公司、创业吧)
 
另外一种应对方式(如果你认为这是对的):
            1-疑似我的问题,请拿出是我的问题的证据,否则就不是我的问题。。。拒不处理!
            2-第三方的问题。。。不做必要分析,问题透传
            3-是我的问题,但存在技术性问题向”非技术性问题“转换的可能性,于是。。。”其实这不是问题,这是需求,这是体验差的抱怨。。。。。。“
            4-过多引入其他人员。。。人多事情杂,问题仍在处理中
            5-多次频繁索取信息。。。问题本身影响微小,逐渐不再被关注
            6-问题个别罕见。。。没有足够的信息支持分析,请在问题重现时,及时提供更多信息。。。
            7-久拖不决。。。不了了之 

TS - 解决问题的一些方法的更多相关文章

  1. Anliven - 解决问题的一些方法

    How to resolve the problem? 获取基本的相关信息(后续处理问题的基础)  在怎样的背景环境下?发生了怎样的问题? 如果无法清楚地辨别或陈述问题的基本信息,那么,此时要面对的将 ...

  2. TS - 问题分析与处理的一般性方法

    本文是对解决问题的一些方法内容的改写与补充! 1 接触与了解 从总体着眼,从细节入手! 确认基本相关信息是必须执行的首要环节,也是后续处理问题的基础. 如果无法清楚地辨别或陈述问题的基本信息,那么,此 ...

  3. C#和TS/JS的对比学习02:函数与方法

    程序本质上,就是由数据和处理数据的方法构成.函数和方法,这两个名词虽然字面不同,但意义上其实没有区别.只是因为它们出现的地方有异,给予了不同的名称,比如在全局环境中,叫函数,在对象或类中,叫方法.而C ...

  4. ios获取CELLID,LAC等信息方法

    搞了一个来月的这个东西了,还是没有完全解决问题,下面方法可以获取简单的Cell信息,方法一://CoreTelephony.h//主要就这两个结构体,其他需要的话,自己添加struct CTServe ...

  5. Android中处理OnClick和OnTouch方法冲突的解决方案

    目前想到的最好的解决方法,大家有更好的欢迎告知. 问题:在一个view中有一个按钮,要求可以通过点按移动这个按钮,同时单纯的点击而不移动这个按钮的话可以跳转到新的Activity. 遇到的困难:按钮的 ...

  6. .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常)

    .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常) 前段时间项目使用一次性读去SQL Server中保存的电子文件的文件流然后返回给客户端保存下载电子文件, ...

  7. 电脑移动后WIFI连接失败解决方法

    1.现象原因 经常会发现将自己的电脑带到不同的地方后连接附近WIFI失败的现象,这是什么原因造成的了,觉得明明之前还有连过这个无线,密码都是正确的,无线连接的图标显示一个大大大的感叹号!  像下面一样 ...

  8. C# 监测每个方法的执行次数和占用时间(测试3)

    原文:http://www.cnblogs.com/RicCC/archive/2010/03/15/castle-dynamic-proxy.html 在Nuget引用 Castle.Dynamic ...

  9. Python中Gradient Boosting Machine(GBM)调参方法详解

    原文地址:Complete Guide to Parameter Tuning in Gradient Boosting (GBM) in Python by Aarshay Jain 原文翻译与校对 ...

随机推荐

  1. Pixel Recurrent Neural Networks翻译

    Pixel Recurrent Neural Networks 目前主要在用的文档存放: https://www.yuque.com/lart/papers/prnn github存档: https: ...

  2. 《笨方法学Python》加分题28

    #!usr/bin/python # -*-coding:utf-8-*- True and True print ("True") False and True print (& ...

  3. tomcat简单使用

    下载解压tomcat[root@localhost]# tar zxf apache-tomcat-8.5.4.tar.gz -C /usr/local/tomcat yum自带JDK,注意区别JRE ...

  4. python3 安装 google-visualization-python(windows10)

    google-visualization-python 的 github 官网:https://github.com/google/google-visualization-python 安装: 打开 ...

  5. python 数据可视化 -- 真实数据的噪声平滑处理

    平滑数据噪声的一个简单朴素的做法是,对窗口(样本)求平均,然后仅仅绘制出给定窗口的平均值,而不是所有的数据点. import matplotlib.pyplot as plt import numpy ...

  6. 支付宝app对接的坑

    主要流程是: 1.申请成为开发者 2.创建应用 3.设置应用公钥/私钥/支付宝公钥 4.制作服务器端代码(此处注意,不要解析htmlencode) https://blog.csdn.net/zzzi ...

  7. k8s 安装步骤

    1 安装Docker 1.1 增加中国区镜像 https://registry.docker-cn.com 2 下载安装k8s的镜像的脚本 https://github.com/AliyunConta ...

  8. 关于python-flask中规范创建项目的几个关键py项目文件

    1.config.py——配置文件 DEBUG = True DIALECT = 'mysql' DRIVER = 'mysqldb' USERNAME = 'root' PASSWORD = '' ...

  9. python 基础———— 字符串常用的调用 (图2)

    1.  replace 2.  join 3.split 4 rsplit 5. strip : 去除字符串左右两边特定(指定)的字符 7. rstrip  :  去除右边特定(指定)的字符 8. l ...

  10. jQuery获取元素的方法

    1·$(".box").offset().left 获取盒子左边到浏览器左侧的距离(上右下相同): 2·$("span").width() 获取盒子的宽度(高度 ...