2018工作经历总结与发展规划

引子

    当我看到“concurrency is hard without garbage collection is difficult”这句话的时候,把我带入了沉思,让我有着写这篇文章的想法。

 

谈谈工作经历

    毕业后一直从事游戏开发,确切的说是服务端开发,产品也比较单一,一直是MMORPG,算是游戏中比较大型和复杂的一种吧;后来在一家(社交+游戏app)基础服务组,主要做微服务拆分和核心功能支持。

    做游戏的时候,东西比较杂,什么都要涉及一些(功能开发、策划工具、运维部署、玩法设计),做游戏就是这样,技术方面不够精,并且游戏行业开发的代码框架啊都已经成为一种定式,都这么写,但是为什么呢?可能也是不明其意;

    后来,面试基础服务组时,对方说,你的游戏经历在我这儿就等于0;真的是这样的吗?

    说下从事的区别,游戏呢,特别是game server,真的是够复杂,代码量巨大(一个进程,纯业务代码大约26W行),管理内容超级多,涉及问题也很多,特别是涉及多线程;app呢,拆分很细都是微服务,注重分布式开发,各种解决方案(包括开源方案啊,各种开源组件啊);

    

    

谈谈都能学到什么

    从游戏中(大型项目),其实你能找到很多学习的点,因为都是积累起来的代码,自然有其中的道理,但需要明白其中的含义才是正确的方向吧;然而,现在大多数人都很浮躁,哪有时间想这些(唉),其实其中涉及的知识很多,只是没有深入而已,比如说搜索(肯定有好友名字、工会名字搜索等,联想到搜索引擎深入学习,还有如何结合分布式支持好友系统,这时候又可以深入分布式系统的学习),自己多体会,多思考才是硬道理。

    目前做的微服务拆分呢,编程功底可能不需要多扎实,代码量小,对开源组件了解,会使用,特殊场景,特殊结构结合,配合上分布式,基本就可以啦,然而这些又要调研,又要深入组件学习,同时还有对分布式的深入学习;对于基础服务呢编程功底还是要有滴。

 

总结以及规划

    书很重要,是指路明灯嘛哈,很多书,也许之前看过,并且看的也很快,为什么呢?因为沉淀少,不能对应到自己的知识库中(我指的是那种对实际项目有帮助的书籍),现在你在看的时候会发现很慢,有些知识点你会仔细琢磨,就是这样,编程功底会越来越扎实。   

    知识体系触类旁通,比如分布式开发,那想想多核时代如何处理的呢?我的意思是说,知识也是慢慢演化而成的,学习呢,可以了解相关的具有相似性的,这对各方面都是有好处的。

    最后呢引用下陈硕在知乎的一个回答

    我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫,然后才去读编程方面的 APUE、UNP 等书。
    下面简单谈谈我对学习这两门课的看法和建议,都是站在服务端程序员的角度,从实用主义(pragmatic)的立场出发而言的。

    学习操作系统的目的,不是让你去发明自己操作系统内核,打败 Linux;也不是成为内核开发人员;而是理解操作系统为用户态进程提供了怎样的运行环境,作为程序员应该如何才能充分利用好这个环境,哪些做法是有益的,哪些是做无用功,哪些则是帮倒忙。
    学习计算机体系结构的目的,不是让你去设计自己的 CPU(新的 ISA 或微架构),打败 Intel 和 ARM;也不是参与到 CPU 设计团队,改进现有的微架构;而是明白现代的处理器的能力与特性(例如流水线、多发射、分支预测、乱序执行等等指令级并行手段,内存局部性与 cache,多处理器的内存模型、能见度、重排序等等),在编程的时候通过适当组织代码和数据来发挥 CPU 的效能,避免 pitfalls。Modern Microprocessors
    这两门课程该如何学?看哪些书?这里我告诉你一个通用的办法,去美国计算机系排名靠前的大学的课程主页,找到这两门课最近几年的课程大纲、讲义、参考书目、阅读材料、随堂练习、课后作业、编程实验、期末项目等,然后你就心里有数了。

    学习任何一门课程都要善于抓住主要矛盾、分清主次、突出重点,关键是掌握知识框架,学会以后真正有用的知识和技能,而不要把精力平均分配在一些琐事上。
     2018逆境求生存啊,经历了太多太多,越是逆境越会引发思考,最终也想好了到底应该怎么做,做什么,放弃什么,还有不能做什么,最后一句话量力而行。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章