引言
时间如梭,娃都可以打酱油了。
转眼间第一个五年计划,已过了一半。
年终总结是个打脸的好地方,曾经夸下的海口,有的真的成了海口。
所幸,一切都在按好的方向发展。但乐观背后容易忽略潜在的问题,所以,在2020来临之际,是时候对2019做个具体的回顾,并对来年做个具体的展望。
谈成长
那就先从收获开始讲起吧。
- 成功续任微软最有价值专家。
- 离开工作4年的老东家金蝶,前往自己看好的物联网行业发展。
- 码字3万+,写博10篇。
- 开始尝试进行架构设计,并应用微服务技术栈
- 第一次受企业邀约,前往厦门做技术分享
- 作为讲师,参加Microsoft Ignite The Tour 大会
这一切的收获得益于我坚强的后盾 —— 双方父母的支持,老婆的理解与督促,还有我那调皮捣蛋的小家伙给我源源不断的动力,所以感谢我至亲至爱的家人!也感谢一路走来给予我帮助、指引我方向的每一位可爱的人。
谈工作
今年做出了一个艰难的决定,就是跳出自己的舒适圈,从工作4年的老东家辞职,加入到一家物联网创业公司。这里十分感谢张队的引荐,才有一个好的落脚点,才得以实施自己的技术抱负,才得以转型自己期望的技术栈,从传统的.NET 后端转移到.NET Core 全栈开发。真正的去实践微服务,玩转K8S。当然,也得益于前期的理论知识的积累。
加入新公司,是机遇,是挑战。
记得入职后的第二天,就紧急前往武汉出差,对接智能电表的项目,忙前忙后两个月,但项目告吹了。也认识到,物联网行业的水很深,每个企业都想分物联网这杯羹,但真正能够做事的也少之又少,很多还是处于理想阶段。
回深后,工作重点转移到公司现有架构的重构上。将原有的缺乏结构、层次、抽象的代码进行重新梳理,基于原始Orleans的分布式框架的技术选型进行重新整理,充分发挥Orleans的virtual actor model的高并发的强大特性。
这也是第一次去做架构设计的工作。
这里,得很感谢技术出身老板的指点,以及平时工作中对软件设计的交流,让自身对物联网的技术细节有了很深的认知。也很大程度上避免了在技术选型上走入误区。
经过大概两周的时间,完成了整体解决方案的设计,得到了老板的认可。
这次难得的架构设计经验,是我往架构师方向发展道路上浓墨重彩的一笔。
也让我领悟到了架构设计不仅仅是代码结构的设计,更是产品业务结构的设计。她是交流中不断完善的结果。
另一次架构经验是年末尝试的一次前端架构经验。现在想想自己都觉得诧异,我一个偏后端的,怎么会去抢前端的饭碗,然而事实是这的的确确发生了,而且做对了。
这次前端架构是对小程序项目的一次推翻重做。之前的小程序虽然实现了所有的业务需要,但代码可读性、扩展性极差,更别谈封装。
对于创业公司,不断的去推翻之前的成果,是一个很艰难的决定,因为推翻的不仅仅是项目,推翻的是前期的投入。决定是痛苦的,但成果是可喜的。经过短短一周的时间,我一个前端小白就完成了小程序端的模块化设计,并基于原生UI,设计好交互逻辑。
如果现在再问我,前端难吗,不难。如果做后端的你想尝试做下前端,尽管去做,不要给自己设限,跨出去这一步,你就是全栈。
这次前端架构经验,让我明白,架构设计是相通的,是封装重用,确立边界,封装模块,封装层次,封装对象,封装逻辑,封装组件。
以上两次架构经验,算是在新公司做的最正确的两件事了。因为我也在不断犯错,而且最开始犯错而不自知,简称蠢。主要体现在两个方面:一是管理,一是自我认知。
提到管理,犹记得加入公司之前订阅了极客时间的技术管理的之道。读完之后深有感触,但实际上岗,放手不顾,异想天开无为而治。兵熊熊一个,将熊熊一窝。真是这个理。技术领导者除了技术过硬外,还需要有技术领导力,确保团队技术选型不跑偏,项目实施不走样。这需要时刻去关注项目的进度及代码质量。
这里面涉及到就涵盖了多个方面,一是技术管理,一是项目管理,一是团队管理。
团队人多的时候,也有7,8个开发,少的时候也就2,3个人。一段时间甚至怀疑公司的发展前景。现在想来,也并不是如此。团队再小,如果你不能把控团队按照既定的方向发展,那么团队扩张就是一颗定时炸弹。
所以,在我们发现不可控时,我们紧急的踩下了刹车。精简人员,反思整顿。当然,这里面我是最主要责任人。问题在于,上面所说的项目管理和团队管理的放任不顾。只是简单的进行任务分配和成果确认,但忽略了过程评审。换句话说,项目成员的沟通和反馈通道没有建立,这样就不能及时发现问题。中间也发现了问题,尝试要求团队每周提交周报,每天进行15分钟的早会进行状态反馈,但坚持一月有余,就无疾而终,一切沦为形式。
就措施而言,手段是好的。但忽略了手段的目的,就导致流于形式。所以在团队管理上一以贯之、以身作则是十分重要的。
另外一个问题是,沟通成本高。在组织会议时不能明确会议目的,导致无休止的讨论,这也是缺乏计划性的体现。
在两次架构设计,基于原始业务的重构工作不彻底,留下了系列隐患。总想把事情留到后面有时间了再做,是一种极不负责任的表现。因为时间证明,除非后续遇到问题,否则不会改进。所以做事做彻底,要有魄力去否定,也要有魄力去承担做好否定相关的善后工作。
另外一点需要谈到的是,对人员的招聘。项目的迫切程度,靠人月神话是解决不了的。在多个项目并行时,人手不足时,一心想通过增补人员来缓解项目压力,也并不总是有效。除非项目、团队在你的控制之内。
总以为站在高的位置,就不应该拘泥于细节。而编程这个行当,细节的把握的才真正体现高度。
一名合格的技术领导,决不能给自己设限,不能沉浸于自己擅长的技术栈。云生应用时代,从开发到测试到运维,从产品原型到技术预演,从前端到后端,从UI原型到交互设计都要有所了解。
另外一个问题,是缺乏严谨性,也就是数据的敬畏心。在处理新旧系统的兼容时,考虑不周,就会造成数据冲突,而且冲突修复成本极高。这期间我的自负心理在作祟,极力想扔掉历史包袱,就会造成对包袱的漠视。但凡一个公司都是有包袱的,接收它,才能慢慢扔掉它。
接触物联网后,愈发觉得对计算机原理,计算机网络等基础知识的缺乏,这一块是致命一击。
还有一点的感悟是,自身前期的技术积累被自己雪藏,在实际项目实施中,不能灵活运用,尤其是自己引以为傲的DDD、面向对象编程思想的把握,并没有学以致用。也就是两个问题,一对知识的理解并不深刻停留在皮毛,或并没有思考其实际的运用场景,也就是只有术没有道。另一方面,缺乏思考,做项目太急于求成,忽视了前期的总体布局规划,何谈运用呢,也就是不预不立。
谈写作
2019,主要完结了eShopOncontainers 系列文章,写了3篇Orleans系列文章,输出锐减。整体而言,不抵预期,不符计划。
从写博至今,每年的文章输出都在递减,连每月一篇的基本保证都没有做到。所以,是我变忙了吗?忙到没有时间去思考沉淀并输出了吗?内心的答案很明确,时间都是挤出来的。是自己以忙为借口罢了。手中的笔,勾勒的是成长的真实印记。没有输出,何谈内化。
2020年 会输出Orleans 系列文章,希望对Orleans有更深的理解。
谈学习
读书方面:2019,也读了几本书。C#并发编程经典实例,刷新,大型网站技术架构,从零开始学架构,自控力,微服务架构设计模式,kubernetes in action,用户故事地图。在技术栈上,对K8S有了一定的认知,虽谈不上精通,但至少够用,满足项目的运维需求。另外,微服务也算是简单入了门。C#并发编程经典实例修正了对并发编程的理解。用户故事地图,是一本帮助梳理业务逻辑的方法论,鼓励通过不断的讨论交流和可视化的方式进行需求确认,在进行系统业务梳理时帮助良多。
刷新和自控力,都是走马观花的看了一遍。好书是值得多次翻阅的,所以时刻刷新。微服务架构设计模式读了开头,需要继续。
就阅读量而言,还是很贫乏,缺少输入,那自然是缺乏输出。输入输出是成正比的,所以也解释了为什么每年的输出都在断崖式下降。也暴露了一个自身在知识积累上内化不足。
谈生活
2019年去了桂林,河源,武汉,北京,也算踏出广深。对于生活,永远相信美好的事情靠自己的双手可以得以实现,诗和远方也是需要努力努力再努力,所以,对未来依旧充满憧憬。
谈计划
2020,我要出书。
最后
2019 这一年,总体而言,看似收获满满,但内心深处一颗不安定的心告诉自己:你还差得远。是啊,半斤终究不是八两。
2020,谦卑沉淀务实,继续加油!