引言

时间如梭,娃都可以打酱油了。

转眼间第一个五年计划,已过了一半。

年终总结是个打脸的好地方,曾经夸下的海口,有的真的成了海口。

所幸,一切都在按好的方向发展。但乐观背后容易忽略潜在的问题,所以,在2020来临之际,是时候对2019做个具体的回顾,并对来年做个具体的展望。

谈成长

那就先从收获开始讲起吧。

  1. 成功续任微软最有价值专家。

  2. 离开工作4年的老东家金蝶,前往自己看好的物联网行业发展。

  3. 码字3万+,写博10篇。

  4. 开始尝试进行架构设计,并应用微服务技术栈

  5. 第一次受企业邀约,前往厦门做技术分享

  6. 作为讲师,参加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,谦卑沉淀务实,继续加油!

Goodbye 2019,Welcome 2020 | 沉淀 2020的更多相关文章

  1. CoachAI 2019年12月~2020年3月实习总结

    CoachAI 2019年12月~2020年3月实习总结 一句话总结: 方向对口,大有所得. CoachAI公司简介   CoachAI是一家做在线健身的公司,目前在手机端和IOS端都有自己的服务,并 ...

  2. IDEA 2019.3.3 + Pycharm 2020.2.1 安装包及破解步骤

    IDEA IDEA的破解流程就不用再说了,免费试用,添加VMOptions参数,选择破解jar的路径,重启IDEA. 下载地址:链接:https://pan.baidu.com/s/1aTRATVTL ...

  3. 我是如何一步步裹挟老板从.net 转到 java 阵营的

    我是如何一步步裹挟老板从.net 转到 java 阵营的 仅记录从 .net(C#) 转到 java 的一些心路历程 时间点跨度 2016 — 2017 一.前 xx 公司同事群的一次聊天 前公司同事 ...

  4. 我的 2020:出书、办签售会、发展 VS Code 中文社区、成为开源先锋、全网 10 万粉丝、10 场演讲、内推 21 人、955.WLB 发扬光大

    感觉写 2019 年终总结还是在不久之前.转眼间,2020 已经接近尾声了.是时候来写写 2020 年的年终总结了. 出书 今年最高兴的事情之一,就是出了全球首本 VS Code 中文书 -- < ...

  5. 资源:Intellij IDEA 最新旗舰版注册激活破解*附注册码(2020年亲测)

    永久激活 1. 下载jetbrains-agent.jar包(2020.03.22亲测) 链接: https://pan.baidu.com/s/1BFXPwlROEF03BkhGzGIgEA 提取码 ...

  6. Amazing 2020

    Amazing 2020 Intro 2020 转眼即逝,2020 是比较艰辛的一年,因为疫情原因,很多人的工作以及生活都多多少少受到了一些影响. 引用网上盛传的一句话--2020 实"鼠& ...

  7. JVM Ecosystem Report 2020 (2020年JVM生态系统报告)

    本文翻译自SNYK于2020年发布的< JVM Ecosystem Report 2020 >,全文使用机器翻译自动生成,人为将翻译的离谱和翻译明显错误的地方修正到勉强能看懂的程度. 英语 ...

  8. 2019最新idea注册码

    2019最新注册码到2020年1月7号 N757JE0KCT-eyJsaWNlbnNlSWQiOiJONzU3SkUwS0NUIiwibGljZW5zZWVOYW1lIjoid3UgYW5qdW4iL ...

  9. [更新] Jetbrains IntelliJ IDEA 2019 的许可证密钥

    亲测有效.转载目的:提供一种方法,当然可以看一下原网站的更新及其他方法.转载:[更新] Jetbrains IntelliJ IDEA 2019 的许可证密钥(100%工作),By Gideon    ...

随机推荐

  1. Mysql操作之查询语句

    查询语句: select 查询列表 from 表名 where 筛选条件; 去重:select distinct 查询列表...... 选择全部:* 起别名:select 查询列表 as 别名 fro ...

  2. 利用Spring AOP的通知类型以及创建通知

    写在最前端 1.SpringAOP中共有六种通知类型,只要我们自定义一个类实现对应的接口,它们全都是org.springframework.aop包中的. 2.AOP的连接点可以是方法调用.方法调用本 ...

  3. 4k图片爬取+中文乱码

    4k图片爬取+中文乱码 此案例有三种乱码解决方法,推荐第一种 4k图片爬取其实和普通图片爬取的过程是没有本质区别的 import requests import os from lxml import ...

  4. HTTPS工作流程(入门)

    1.CA(为服务器做担保的第三方机构)将包含CA[公钥C]等信息的[证书C]发送给浏览器: 2.服务器将其[公钥S]和网站信息发送给CA: 3.CA用CA[私钥C]将这些信息加密得到了签名后的[服务器 ...

  5. 如何使用Git命令克隆仓库代码

    今天我的电脑装了新系统,刚装了Git到电脑上,突然有一个大胆的想法,以后不适用可视化工具了. 要逐步锻炼我的命令的操作能力,不能太依赖可视化工具. 今天先记录一下如何使用git命令克隆仓库代码 git ...

  6. 在文件夹下所有文件中查找字符串(linux/windows)

    在linux下可以用 grep "String" filename.txt#字符串 文件名grep -r "String" /home/#递归查找目录下所有文件 ...

  7. unity3D 游戏物体同时绑定单击、双击事件

    前言 在unity中我们常用的获取鼠标点击的方法有 在3D场景中,一般用在Update方法中,每一帧调用 void Update(){ )){ Debug.log("鼠标左键点击" ...

  8. 基于webpack实现多html页面开发框架四 自动写入多入口,自动插入多个htmlWebpackPlugin插件

    一.解决什么问题      1.手写页面多入口,一个一个输入太麻烦,通过代码实现      2.手写多个htmlWebpackPlugin插件太麻烦,通过代码实现 二.多入口代码实现 //读取所有.j ...

  9. Undefined symbols for architecture x86_64"_OBJC_CLASS_$_QQApiInterface 怎么搞

    今天上午报了一个这样的错误 解决办法 如此如此 ~~ 然后编译 看看报的什么错误 还是不行的话就重新导入三方库 添加依赖库 结果build success

  10. 升级xcode10.0, 终端运行 运行报错:Print: Entry, “:CFBundleIdentifier”, Does Not Exist

    目录 问题原因 解决方法 终端解决 Print: Entry, ":CFBundleIdentifier", Does Not Exist 第一步: 去官网GitHub下载对应包就 ...