回首过去的一年,虽然我承担了一些大大超出自己能力范畴的职责,因而快速的扩宽了自己的知识面。但其实现在看来,18年的我是非常迷茫的,很多时候对自己要学什么没有一个方向感,大多数时候是被需求牵着鼻子学习新知识。但是其实目前部门里最了解容器相关的人就是我,公司也不知道自己想要什么。这种类似于无人驾驶一样的意象,让我莫名的想起那句“遛狗不牵狗,等于狗遛狗”。。。。
还记得质量保证部门的领导当时曾经私下建议我在一年内找到自己的技术方向,当时我以为我已经有技术方向了,但现在看来其实并不是。
前一段时间我想尝试加入PingCap,所以认真的准备了一次面试,之后和面试官们进行了比较充分的双向交流。虽然这次面试我没有通过,但这帮助我在脑海中理清了我毕业后的一年半中都做了哪些事情,同时通过面试官的问题,我也管中窥豹的了解到了我进一步成长的方向。看清了这两点后,我逐渐意识到了我过去一段时间的学习是低效和盲目的。
而反思这种低效和盲目的成因,我认为根本问题在于我的信息渠道变的低效了。
我以为我还算是一个对知识和信息比较有品味的人。大学毕业前,我最优质的学习资源和大多数本科生一样,主要来自于网课和经典书籍,如网易云课堂上翁恺老师的C++课程,以及侯杰老师翻译的C++对象模型、Effective C++等书。这些资源中规中矩,帮助我扎实的掌握了一门工程语言,得以找到了第一份互联网相关的工作。
刚刚毕业的半年时间里,我的主要知识来源还是书籍和互联网,但在18年年中,我意识到了这样的信息源有问题。对于kubernetes以及诸如go/prometheus/ceph等的新兴工具,他们带来的思想和技术也是新兴的,没有成熟的书籍;同时我也是公司中唯一一个在做这件事的人,因此在这方面我也没有导师。之后我尝试改进自己的信息源,包括参加Kubecon,阅读kubernetes blog,观看各地KubeCon在youtube上的回放来拓展自己的知识来源。
但是其实kubernetes属于非常上层的应用,它下面对应着大量的系统知识,设计中还隐含着场景需求,工程经验。而由于我是野路子的程序员,没有师承,在这方面有着不小的知识断层,因此很难从CNCF中直接吸取养分。
所以我的首要任务是改进我的信息来源,进而填补这些知识断层
基础知识方面:我认为我应当在接下来一段时间里补充我在本科阶段没有系统学习过的操作系统和网络的知识,同时订阅lwn.net以跟进内核方面的新兴动向。
应用方面:我认为作为一个开发人员我的下一步应当从Golang作为切入点,先用Golang设计实现一些成熟的项目。平时多通过调用客户端,编写插件之类的手段,逐步加深对大型开源应用的了解。Youtube和Ardan lab上面有很多优质的资源可以帮我更快的深入到其中,google podcasts的内容也很不错,优点在于随处可以听。
改进了信息来源后,还需要确定自己的核心技术栈。
我目前希望自己的核心技术栈是围绕Golang开发进行的,目前选择的方向是分布式/高可用设计,高并发/低延迟设计,网络/CPU/IO调优,监控工具/方法论,测试工具/方法论。但是广义上,我希望我能具有云原生各个节点的知识储备,这样有助于我进行更高质量的开发。
最重要的是,我应当时刻意识到不会有人帮我指出下一步怎么走,不会有人催我,我必须找到自己的道路,必须保持清醒。
我噻,原来兄弟你这么年轻,从我目前找到的K8S的脚本里面,你这个是最直接有效的。加油!机器人学习你也应该是方向之一。其实很多时候我认为你的方向主要在于平台,想往哪走,那必须去那个平台里面做一做,不然很难深入。个人觉得你有脚本的底子,成长起来应该很快。只能说别拘泥于一种语言,5年时间K8S发展很好,但之后也很难说。加油~不介意的话,可以加个微信不?
惭愧,那个脚本写起来挺没技术含量的,整个项目是100%纯种的水star项目,我可能是Github之耻。我的微信是lentil1016,共勉。