年初公司在重庆成立软件团队,计划承接一部分Android 智能终端项目的研发。接近6月底的时候,向总部提出,希望兄弟团队能派人进行Android framework方面培训,提升对Android 系统的认识理解,提高解决问题的能力和速度。可能我曾经帮助这个团队解决一些framework 系统的问题,而内部其他大牛忙于比较紧急的项目研发和调试,最终这个任务落到我头上。
一直以来自己都是接受别人的培训,从来没有给别人讲东西,心里着实没底。顾不得掩盖自己的胆怯,向领导坦言自己的担心并提出是否事先准备一段时间,结果花时间准备的提议被否决了,原因是时间紧张。因为计划培训一周,接下来的一周我已经被分配参与新启动项目中。既然一切都已经安排好,我只能硬着头皮接受。匆匆看一眼该团队提出的问题列表,觉得这些问题都是曾经解决过的问题,再补充准备相关的系统知识,讲解下来应该不成问题。
周一赶往目的地,跟新团队同事简短会面沟通后,初步确定分次培训的主题以及根据这些主题之间内在逻辑关系确定培训先后次序以及时间安排。初步定为:
1)Android 系统架构以及源代码层次结构及主要功能模块;
2)Android 系统启动流程 bootloader -> kernel ->init->zygote -> sytem server -> ActivityManagerService -> Launcher 桌面 整体流程以及相关的服务;
3)Android 系统主要功能模块举例分析-Telephony 以及 Wifi 通讯模块;
4)Android 安全模块SEAndroid 架构,实现以及调试;
5)Android 系统键盘按键事件处理流程;
晚上,我就开始准备第二天上午要讲解的主要内容。这时候才发现,要把自己认为懂的东西真正讲出来,并让听者理解并不容易。首先,平常以为自己懂的,其实并没有完全懂,或者说自己认为的懂只是在某个层面上懂了。这时候梳理自己的知识结构和流程,发现逻辑漏洞比较多。如果讲的东西,连自己的检验都通不过,怎么能让听者理解并接受呢 ? 好在,自己曾经有些积累,结合代码并参考其他资料及时补上漏洞。刚想松一口气,罗列讲解提纲的时候,发现同一主题串联要讲解的知识点,先后顺序也很重要。安排的好,听者才能很容易理解,反之,很容易受影响,很可能一知半解,甚至最后被弄晕了。这时候,才发现当老师真不容易。有人用 "台上一分钟,台下十年功" 来形容艺人获得成就的不易,其实优秀的老师在课堂上精彩的讲解,也非朝夕之功。第二天早上5点半就起床,试着尝试不同顺序去串联知识点,尽可能在顺序和转承关系上安排的更合理得当。
第二天讲解的时候,还是遇到一些问题,比如某些知识点还有一些问题之前自己没有想到未列在待讲解范围之内;还有一些知识点的预备知识没有提及;还有一些问题自己未曾考虑过,当场也无法给出解答。这样一来,原本要讲的知识点也因为时间问题,没有按照计划讲完。
接下来的几天,尽管按照顺序来讲解,但是各种预料之外的事情总是发生。比如,随着Android 系统版本演进,很多原有熟悉的功能模块结构也发生变化,我要把新的版本上变化尽可能在培训中体现出来,一方面要看代码,又要组织培训文档,还要在新版本上把trace 相关的流程。一天下来,时间基本不够用。而更严重的事情是,曾经熟知的模块,经过版本演进面目全非了,加上时间的关系记忆不清晰还要重新熟悉,比如SEAndroid 模块在android 8.1上跟android 5.1 比发生很大变化。
几天的培训,角色的转变,对自己是很大的挑战,让我遇到很多问题,也发现自己的很多不足之处。
第一: 想要做好任何事情,必须要提前准备到很详细的程度。培训如此,写文章也是如此。
第二: 检验自己是否真正理解一个知识点,讲给不懂的人并让他理解,是一个非常好的方法。
第三: 写作也是检查自己思维漏洞的一个重要方法,写作作为一种输出方式有助于锻炼一个人的逻辑思维。以前,自己在思考一个问题时候,思维可能是跳跃的。一个结论可能是基于自己意识潜意识,已有经历的结论综合得出的。但这中间可能有这样那样的漏洞。讲出来和写作都是输出的重要方式,在输出的时候,你会把潜意识得出结论的过程,用显意识重新走一下流程。而在这个过程中,能查检思维中的漏洞和不完备地方,让自己思维更客观严谨。
网友评论