我在极客时间学习的三个月
最近我在极客时间上学习了挺长时间,很多感触,正好 InfoQ 推出了写作平台,就在这里写写吧。
我是中国银联湖南分部技术部的开发工程师,知道极客时间是因为公司购买了极客时间企业版的服务,我们内部叫做“联现技术咖”项目,这让我获得了和很多技术咖一起学习架构的机会。现在想想,要感谢极客时间团队以及各位资深专栏老师贡献了这么多优质的课程。
上个月我花了大量的业余时间学习极客时间上的课程,获得了这个项目学习时长的 TOP1,我们培训经理让让我做个学习分享,这其实是源于一个误会,我最初误以为咱们课程的有效期只有一个月。当我第一次登录极客时间,打开“我的课程”一看,一共 15 门、750 讲课程,这么多内容要在一个月的时间内学完,几乎是不可能的,得拿出“只要学不死就往死里学”的斗志了。因此,我开始抓住尽可能多的机会学习,比如上下班通勤途中、日常饭后的洗碗时间、周末整下午整晚上等,都用来学习极客时间架构班的课程了。一开始的学习过程,说是囫囵吞枣也不为过,但是这“枣”啊,品着品着,就品出味道来了。慢慢的,我对学过的课程有了一些总结,对未学的课程也有了一些规划,形成了一些自己的经验在这里拿出来给大家分享。
当然,每个人都有适合自己的学习方法,而且学习时间和学习效果是无法等同的。我相信肯定有更多更优秀的同学取得了更好的学习效果,比如我刚进微信群时,就看到有同学说这里面的课程他都已经买过不少了,可见在架构知识的学习上,公司确实藏龙卧虎,而我还是一个新手。因此,我的分享仅仅起到一个抛砖引玉的作用,主要还是希望能够给大家营造一个多交流、多分享的氛围,共同学习、共同进步。
怎么学
谈到“怎么学”,首先就是学习方法的问题,我想先和大家分享一下《高并发系统设计40问》中唐扬老师对程序员学习这件事的看法。
刚毕业时,坊间常有一个传闻,说程序员是有年龄限制的,甚至具体到35岁就是这个程序员的终结年龄。可随着入行渐深,我们看到越来越多的人在35岁之后还在行业中如鱼得水,我想,35这个数字并非强调个人的年龄,而是泛指一个阶段,强调在那个阶段,我们可能会因为个人的种种原因安于现状,不再更新自己的知识库,这是非常错误的。
化用《礼记》中的话,我们要博学之。我们需要不断革新知识,所谓的天花板其实更多的是知识性的天花板,活到老学到老才是我们在这个行业的必胜法宝,所以,我们应该利用各种优质平台以及零散的时间学习,但是同时我们要要注意,现在的知识偏向碎片化,如何有条理、系统地学习,将知识梳理成体系,化作自己的内功,是比较关键和困难的。
在这里,唐扬老师给我们提出了几点建议:
第一,基础知识要体系化,读书是一种很好的获取体系化知识的途径,比如研读《算法导论》提升对数据结构和算法的理解,研读《TCP/IP 协议详解》深入理解我们最熟悉的 TCP/IP 协议栈等等;
第二,多读一些经典项目的源代码,比如 Dubbo,Spring 等等,从中领会设计思想,你的编码能力会得到极大的提高;
第三,多利用碎片化的时间读一些公众号的文章,弥补书里没有实践案例的不足,借此提升技术视野。
而咱们的专栏课程就同时涵盖了这三点建议。首先,我学过的每一门课程都是围绕一个或几个核心问题展开,这里的问题有概念上的,比如什么是架构师,什么是中台,也有具体实现上的,比如如何实现高并发,如何进行使用DDD规划微服务等。课程涵盖了从问题产生的背景到问题的提出,再到各种方案的判断、权衡、取舍,最后到形成解决方案、并进行迭代、演进。既包含了新概念产生的来龙去脉,又囊括某一项具体技术的前世今生,具有高度体系化的特点;第二,许多课程,尤其是针对某一个具体技术的课程,授课老师也是该项目领域的资深开发者,能够很好的将项目源码的编写思路融合进讲授的课程中。比如我正在学习的《Kafka核心技术与实战》,胡夕老师作为 Apache Kafka项目的一名Patch提交数排名前列的代码贡献者活跃在社区中,他在课程中很好的融入了项目的设计思想与核心代码,这为我日后有机会研究Kafka源代码,起到了一个导学的作用。而最后一点,也是我认为专栏课程最契合的一点,就是碎片化时间的利用。在架构班为我订阅的课程中,大部分的课程以音频加图文的专栏的形式呈现,每一讲课程的时间控制在十到二十分钟之内。这样的课程形式可以说是为碎片时间量身定制的。使得我可以很好的利用各种碎片化的时间进行学习。
关于碎片时间的使用,每个人都会有一套自己的方法。一般正统的碎片时间的使用,应该是一个“时分复用”的过程,把零散的计划外时间都利用起来,比如通勤时等车等地铁等飞机、又比如约好晚上8点开剧本杀本可是总有人咕咕咕到8点半等等,这些时间的使用是一个老生常谈的问题,我就不赘述了。而我特别的方法是更多的进行“频分复用”。“时分”和“频分”是通信上的两个概念,套用在这里我是想表达,人的感官其实是可以独立使用的,比如在健身房跑步的时候,我们往往会戴上耳机听听歌或者看看屏幕上的电视剧,来缓解机械的体力运动带来的疲劳感。
在音频课程的学习上,我也会利用耳朵空闲、大脑不需要集中精力的时间进行。首先我们排除掉工作时间,工作上需要投入120%的精力,无法分心。而除工作外的闲暇时间,比如工作日晚刷知乎、刷微博,甚至周末玩游戏的时间,我都会关掉它们本来的声音,把极客时间的网页放到后台,用耳朵听,听到不好理解的地方、老师不好朗读的代码片段,或者需要关注的流程框图等内容,再把页面切到前台来,拉回进度条配合图文一起消化。这里肯定会有同学指出,这哪能学的进去啊?听课哪有游戏好玩、哪有瓜好吃?但其实我们仔细回想一下,很多打发时间的休闲娱乐活动,都有是在机械性的重复,享受一个个快速满足的循环,因此,我认为在时间紧迫的情况下,音频课的学习是可以与日常休闲娱乐并行的,而且经过我的个人实践,我发现设计良好的课程和娓娓道来的讲述能够很快的抓住我的注意力,毕竟相对于微博的新鲜事、游戏的机械性重复,课程的新鲜感、系统性更强,更能够引起大脑的注意。
这种学习方式,从一个侧面促进了我持续学习,而让我保持学习习惯的另一个因素,就是兴趣导向了。在我刚开始接触这些课程的时候,架构师是一个比全栈程序员更高大上的称谓,就像有些小编的标题一样,看到了你就会想点进去一看究竟。而且,经过这一段时间的学习,也提升了我对整个技术领域的好奇心,这又反作用于我的学习动力,因此,对于我来说,这并不是一个需要花意志力去咬牙坚持的事情。
学到了什么
再说“学到了什么”的问题,种什么因得什么果,所以在谈收获之前,我想先聊一下我对架构班这一系列课程的预期。首先,架构能力是一个需要技术深度和专业广度的进阶能力,需要实战的积累与项目的历练,这对于刚刚走过职场新人阶段的我来说,尚有段看不清长短的距离。而且作为一名分公司员工,并没有全身心地投入在技术开发的前线,甚至可以说与业内的前沿技术有一定的的脱节。所以我希望通过架构课程的学习,达到以下三个目标:首先是了解一个IT大厂的技术团队是怎么样的,其次是了解当今主流的技术框架是怎么样的,最后是希望能够从中找到一些能够落地的方案指导自己的实际工作。令我自己满意的是,通过这一个多月的学习,三个目标中的前两个已经基本实现,并正朝着最后一个目标而前进。
我把已经学完的课程仿照大学的课程分类归为了三类,也分别对应了我的三个目标:
第一类是基础通识课,比如《项目管理实战20讲》《说透中台》等,描绘了一个现代技术团队应该具有的组织形式、协作机制和基本要求,这一部分试图解决的问题,无论是前端、后端还是架构团队,都有可能遇到。其中,我印象最深的是雷蓓蓓老师讲述她带领团队与各种干系人“斗智斗勇”,如何业务技术两开花,走完从“把事情做好”到“把事情做成”的“最后一公里”。
第二类是专业通识课,比如《许式伟的架构课》《从0开始学大数据》等,从中我了解到当我们谈论架构时,我们究竟是在说什么,架构师的知识体系应该是什么样的等等。正是通过这一部分课程,让我能够站在架构设计的视角看问题,比如李智慧老师和我分享的一句金句“软件设计不应该是面向需求设计,而应该是面向需求变更设计”,让我有一种后悔没有早听到这堂课的感觉。李运华老师的架构设计三原则“合适原则、简单原则、演化原则”,也让我重新思考我在实际工作中是否存在盲目追求新技术,而脱离了实际需求的情况。
最后一类是专业主干课,比如《透视 HTTP 协议》《深入剖析 Kubernetes》,每一门课程都完整讲述了一项主流技术产品前世今生,这一部分内容也是我最难消化的,仅靠听一遍远远不够,做到基本了解都还需要实践课程中配套的试验方案和示例代码。通过学习,我把这些技术分成两类,一类是诸如 HTTP、Kafka 等,生产中正在使用的技术,通过学习可以对该技术有更全面的理解,比如是否需要升级到 HTTP2、HTTP3 等,有着很现实的指导意义;另一类是 Kubernetes 之类的“屠龙之技”,通过学习这些技术出现的历史背景,了解它们试图解决的问题领域,让我认识到我可能短时间内不需要使用该项技术。这时我就会重点关注这项技术发展、演进的过程和设计思路,思考“为什么”而非“怎么样”,这种发现问题解决问题的循环推进过程对于日常工作和架构思维的培养也是卓有益处的。更重要的是,当未来需求到来、资源出现的时候,我能够回忆起这种技术架构,再理论联系实际地再次学习、运用这些技术。
其实,学到现在,我在经历短暂获得感的喜悦之后,更多的是发现自己知识的欠缺,有一种落后于时代的恐惧感。甚至在我准备这篇分享稿的时候,我发现公司的托管 IDC 就是使用的 Kubernetes 集群,而我正要在这样一个容器内部署一个 Ngnix 的反向代理。那些曾经我认为短时间接触不到技术,正在以极快的速度走到了我的身边。
所以,保持初心,保持学习习惯是最重要的,正如乔布斯的名言,“Stay Hungry. Stay Foolish.”
评论 (15 条评论)