知识体系慢慢构建,与业务相关的抽象 Topic 也在探索中。
但这还不够。
因为你亲身接触到的世界太小,可能不足以构成挑战,你可能意识不到自己缺多少知识和技能,不利于你分析问题、提出问题和解决问题的能力培养。
所以,要主动出击:
疯狂回答问题。
我曾经在入行的头几年里几乎把我关注的垂直领域(包括语言领域和业务领域)里的所有问题都回答了一遍。我对外宣扬知无不言言无不尽,放出邮件地址和 MSN(那时候 MSN 很高大上),很多网友都会发邮件或者加我好友,问各种开发疑难问题,平均每天都有几个,然后我把解决问题的过程写成微软 KB(KnowledgeBase) 文体发表在我的博客上。
你想想看,工作中的问题你平均每隔几天才能遇到一个,而这么做,每天你都会遇到几个乃至于十几个,第一让你脑力激荡,第二接触到更多新知。
05年到06年期间,我因工作需要学习了 JavaME(或古老的称呼 J2ME),早年间 Symbian 手机上的客户端开发。那段时间我天天扫中文论坛的帖子,力求回答所有问题,尤其是那些 BUG 或故障。对于那些暂时没有人解决的,如流媒体实时播放,如仿 OperaMini 二级菜单界面,都上下求索,最后放出思路以及源码。
同时,我经常整理常见问题,梳理成册并发布。譬如我整理过的 J2ME 疑难问题:
[J2ME Q&A]真机报告MontyThread -n的错误之解释
[J2MEQ&A]WTK初始化WMAClient报错XXX has no IP address的解释
[J2ME Q&A]untrusted domain is not configured问题回应
[J2ME]“Cannot open socket for LIME events”错误解决
几个月后,我成为 J2ME 中文论坛超级版主。通过这个历程,我想告诉大家,回答网友问题,技巧得当的话,比如别老是重复回答新手问题,试着攻克那些疑难问题,或者离奇故障,绝对不会浪费你的时间。
为什么?
因为你要信奉:
——佩内洛普·菲兹杰拉德 《离岸》
Everything that you've learnt and all the hardships you've suffered will all come in handy at some point in your life.
第四阶段 RCA/总结
现在是你把经验教训变为财富的时刻了。
什么是好的技术 Leader?
随便一个业务需求或业务场景讲出来,你立刻把它抽象为几个模块/系统/Topic,然后侃侃而谈,业界都是怎么解决的,我们以前又是怎么分析怎么解决的,现在咱们这种情况下应该如何设计,可能会遇到什么问题,我们应该做哪些预防设计,blabla。
怎么做到这一点?
第一,写 RCA 报告。
我以前说过,『窝窝从 2011 年开始,一直坚持每错必查、错了又错就整改、每错必写,用身体力行告诉每一个新员工直面错误、公开技术细节、分享给所有人,长此以往,每一次事故和线上漏测都会变为我们的财富。这就是我们的 RCA(Root Cause Analysis)制度,截止到目前已经收集整理了近两百个详尽的 RCA 报告。』
RCA 报告格式为:
背景知识(Optional)
问题现象
影响范围
问题原因
问题分析过程(Optional)
解决办法
后续处理措施:如线上脏数据如何修复,如对用户造成的影响如何弥补等(Optional)
经验教训
RCA类型:如代码问题、实施问题、配置问题、设计问题、测试问题
这样,作为一名合格的老兵,你见过了足够多的血,并且把它们变成了你的人生财富。
第二,写总结。
话说,要经常拉清单。
侃侃而谈得有资料,这些都得是你自己写才能印象深刻,关键时刻想得起来。
好了,这就是我告诉面试者的高手炼成四个阶段。