本来发微博的,越说越多,算了,发篇博客吧,说点工程师如何取得进步的问题。
1、描述和记录问题要精确,数字化:
“负载很高,连接很多,速度很卡”这种描述都是不对的,负载uptime值多少,连接数具体有多少,平时正常多少,高峰多少,访问延迟有多大,全部要数字化,而且要有问题状况下和平时的对比,养成这样的习惯,技术分析能力才会有进步。
2、分析过程要有条理:
出问题找不到原因,不奇怪,我也经常找不到;但是你为找原因做了怎样的努力?有没有努力去记录更详尽的问题日志,有没有通过对比测试排除各种潜在因素,有没有通过各种模拟测试回放问题,有没有在问题记录上做断点分析?什么都没做,就说找不到原因,怎么可能进步。
3、多较真一点:
有些工程师遇到问题就重启服务器,神马问题都好了,然后归纳为rp问题,用这样的态度怎么能进步,就算找到了问题和答案也多琢磨一下,很多人百度一下,知道怎么解决某种问题,却不知道为什么,于是下次问题换个马甲,就束手无策了,这就让人无奈了。
4、更敏感一些:
并不是要等到服务器瘫痪了,服务被拒绝了才想到解决问题,平时多关注一下,负载有没有波动,连接数有没有波动,用户访问出错的比例是多少(总会出现的),有没有异动,平均延时是多少,有没有异动,平时不关心,出问题的时候怎么来得及。
其实我从来不觉得自己是什么技术高手,而且我经常说的是,这个我不会,这个我不懂;不过我有个好习惯,凡是我好奇的地方或者怀疑的地方,就弄个断点记录点日志看看,看多了,不懂的也就懂了。多记,多看,这玩意理解起来能有多难。
前段时间做数据库优化技术分享培训的时候,讲不少技术细节和实战范例,内容不展开了,绝对都是实打实的干货。我讲到最后的一个总结是,我今年36了,工作了十几年,很多人会以为,讲的我十多年工作的总结和积累,其实错了,这只是最近两年的工作总结和积累,其中一些心得和范例是分享前最近两周才体会到的。关键是,能不能持续总结经验教训,持续的见微知著,持续的成长和进步。而不论你曾经多显赫,多牛b,多资深。
就这些。
5、推荐阅读:
[1] 你会问问题吗?
http://coolshell.cn/articles/3713.html
[2] X-Y Problem
http://coolshell.cn/articles/10804.html