2019 年就要接近尾声,这一年对于我来说,有许多有意义的事件。我成长了许多,并依然保持着对技术的热情。在辞旧迎新之际,我想回顾一下我这一年中有意义的事件与收获,期待与大家一起在2020年继续成就不凡!

微软 MVP 全球峰会


今年3月,我有幸参加了在美国雷德蒙微软总部举办的MVP全球峰会,这是我第二次去美国,第一次去西雅图。我从小就崇拜比尔·盖茨先生及他创办的伟大的微软公司,而去微软总部参观,可以说是“朝圣”,我儿时的梦想之一终于实现,这次MVP全球峰会总算是拔了颗0x14年的草了。

(图:呼吸着微软总部的空气)

微软总部的园区非常大,需要乘坐 shuttle bus 穿梭于各个大楼之间。我们的会场在 Building 33,即 Microsoft Conference Center。4天的大会日程非常充实,可以了解到还未发布的新功能,也可以大量汲取其他MVP分享自己的技术精髓。

会议期间,我十分幸运地见到了两位久仰已久的专家——James Newton King,可能全世界所有的 .NET 程序员都用过他写的库,即大名鼎鼎的 Json.NET (Newtonsoft.Json) ,NuGet 下载量达到了3000万,排名第一,他现在也就职于微软。

(图:汪宇杰, James 和闫晓迪)

另一位大佬是大名鼎鼎的 Scott Hanselman ,关注 ASP.NET(尤其是 MVC)的不少技术从业者都看过他写的书,即著名的红皮书之一。在微软的 Channel 9 视频网站上也经常有他的节目,我刚工作那会儿经常回家后躺在床上看他的节目学习技术,从没想过能有一天能与大佬面基!

(图:与 Scott Hanselman 合影)

说到 Channel 9,此次峰会期间我也巧遇了正在录制 Visual Studio 2019 发布会视频的现场,视频的内容即 VS 的历史版本回顾,摄制组带来了上古时候的 Visual Studio .NET、2003、2005和2008的包装盒。作为 .NET 程序员的我被勾起了童年的回忆,初中时候购买盗版VS.NET 光盘的画面历历在目,而17年后我居然摸到了正版产品的包装盒,它们奠定了我程序员的道路,心里百般滋味。

我工作后自费补票了所有微软及非微软的正版软件。作为 MVP,现在也可以免费使用 Visual Studio Enterprise 版本,神清气爽。

(图:Channel 9 摄制组携带的古董)

国内程序员比较耳熟能详的还有轮子哥、鸭哥这两位优秀的微软专家,这次去西雅图也和他们面了基,一起吃了牛排,倍感荣幸。

微软的员工商店很有趣,里面除了 Windows、Office、Surface 等软硬件产品,还有很多田牌小周边,剁手根本停不下来!

(图:微软员工商店)

Visitor Center 俨然一个微软历史博物馆,比如下面这份95年的陈酿:

微软的第一份代码:

还有上古之神们:

让我感到比较意外的是,微软 MVP 不仅可以在微软员工店、零售店打折购买微软自家产品,居然还能在苹果店里打折买 iPad Pro,正好买了一个给家人,并且装满了微软全家桶!在西雅图这个宜居又文艺的城市,我们还参观了不少博物馆,登上了太空针,品尝了各种地道美国菜。这次微软总部之行绝对是人生中最难忘的经历之一!

博客系统开源


我的博客系统已经有10年历史了,从大一时候边自学边写的 ASP.NET 2.0 VB + Access 一直升级维护到后来的 ASP.NET MVC C# + SQL,到今天的 ASP.NET Core + Azure 架构。期间有不少人问我要过源代码,尽管我一直在博客上分享技术文章,但从没完全开源过博客系统本身。而去年 .NET Core 成熟之后,我也像纳德拉刷新微软一样,使用 ASP.NET Core + Azure 重写了整个博客系统,经过极度精简和优化的全新博客在性能、功能、稳定性上都全方位无死角碾压了之前的 .NET Framework 版本

随着阅历的增长,我也意识到开源并不等于拱手相让自己的心血,尽管国内有很多无良的培训班、淘宝店家喜欢把人家的开源项目拿下来改logo卖钱,但这样的人还是少数。前年开源《Character Map UWP》应用后获得极大的社区帮助,也让我认识到了开源的力量比单打独斗强多了。因此我决定完全开源博客,和博客用到的所有自己写的轮子。于是,2019年,我的 GitHub 活跃度激增,一年后,我终于和路边的花坛一样努力了!

而这个过程,并不只是我的代码对开源社区有帮助,可以让别人部署自己的博客,开源社区对于我的博客系统也提了很多关键意见,寻找了不少 Bug。系统不论从功能、稳定性还是代码质量上都有了明显的改进。

(图:2019年GitHub贡献)

今年和我的博客一起开源的还有我的第一个 UWP 作品《描图》也是代表作之一。这是我早年开发的一款画图软件,达到了百万下载量,曾经获得IT之家、Windows Central 等国内外知名媒体推荐。但是由于精力有限以及 UWP 平台的一些无奈,我无法继续维护这些 Windows 应用,于是决定开源给社区,并退出 UWP 方向。

拥抱开源以来,我的技术成长和收获实现了质的飞跃, GitHub 这个平台及 MVP 组织给了我与世界顶尖高手交流的机会。更重要的是,我懂得了一个道理:无知并不可怕,可怕的是傲慢。曾经的我和曾经的微软一样,认为自己的心血不能白送给别人,也经常嘲讽开源软件的各种毛病,而如今,我重新认识了开源,就像不少人重新认识微软一样,只有放下彼此的偏见和傲慢,才能携手进步。

Azure Global Bootcamp


4月的 Azure Global Bootcamp 由胡浩老师等 MVP 前辈承办,今年我也有幸参与其中,这是我在 Azure 方向首次演讲。我分享的话题正是我博客使用的一个 Azure 明星服务:App Service。尽管从2012年我就接触了微软云(当年还叫 Windows Azure),但由于不是我平时工作所用的技术,熟悉程度不如 .NET,所以我一直对自己没有信心。后来我从微软开发者市场的朋友那边了解到,国内懂 Azure 的人太少了。而用过 Azure的我深知这个平台对于现代公司数字化转型的强大帮助,可以节省大量的人力成本,让程序员少收福报,所以我觉得非常有必要推广这个平台。

我认真准备了我的第一次 Azure 课程,并作为新方向的起点去努力。微软 CEO 纳德拉在《刷新》一书中也表达过不要停留在Windows这种已经成熟的舒适区,现在已经移动为先云为先的时代了,抓住机会才能继续立足这个世界

微软上海Reactor开幕


今年微软在上海开设了中国第一个 Reactor 社区空间。我有幸受邀作为开幕式的演讲嘉宾之一,带来了《Azure, 原力觉醒——云原生应用开发实践》主题的分享。还面基了久仰大名的韩俊老师。

这次的分享依然围绕着我的博客系统,与之前不同的是,我分享了博客在 Azure 云端的完整架构实践,并介绍了Azure 在容器方面的优秀方案,贯穿应用从构建到上线的各方面。

微软云课首播


9月25日,我的第一次线上课程在《微软云课》平台首播了。内容为 App Service 及 Azure SQL Database。介绍微软云 Azure 上的两个 PaaS 服务,结合实例演示 App Service 以及 Azure SQL 数据库相对传统虚拟机方式部署网站的巨大优势,演示如何创建和部署网站,并绑定域名证书、定时备份、自动扩容、使用服务编辑器以及部署槽。

公司招聘宣讲会,入职5年


11月底,我有幸与我司 VP 及人力等同事在某科技园区一同给40多名大学生进行了一次颇有意义的校园宣讲会。这一次我内心里有一些忐忑,因为我将要面对工作经历像一张白纸一样的同学们,他们对技术方向或职场都相对缺乏判断力,我需要保持谨慎,有可能说错一句话都会影响到他人的职业方向。8年前的自己,同样听过校园宣讲会。当年的我怀着对技术的憧憬,选择了一家印度软件外包巨头的 .NET 开发职位作为我职业生涯的起点。

我分享的话题也是.NET技术,我们的消费者产品和银行即服务(BaaS)平台都采用该技术。尽管.NET在世界范围内生机勃勃,但是在国内,使用它比较多的还是外企。这场宣讲会的学生里也有不少我母校的学弟学妹,他们都是Java背景,而我接到.NET宣传任务的时候,有些激动,也有些彷徨。激动的是作为.NET社区的一份子,终于能有机会宣传这个优秀的技术。彷徨的是,又得和 Java 比了,这两者的比较就如同 AK47 步枪和 M4A1 卡宾枪,只有适合的场景,没有绝对的好坏,任何一个阵营的人都能说出对方的缺点和自己的优势。所以我选择说实话,告诉同学们 .NET Framework 的悲剧故事,也给他们展示开源跨平台重生后的 .NET Core 以及 C# 精炼简洁的语法。我想说明的并不是 C# 语法简于 Java 所以选择 .NET,而是 .NET 生产力和云原生等优势对于企业的重要性,也向同学们介绍了我们企业重视生活和工作平衡等巨大优势。

现场的同学们进行了积极的反馈,让我非常惊喜与高兴。虽然我不知道他们未来是否会选择我们公司,以后是否继续用 .NET 技术,但我知道,我们这样的企业可以在轻松的环境下培养一批 .NET 开发者,.NET 在国内一定后继有人。

今年也是我入职 Green Dot 公司的第五年,同时也是公司成立20周年。我见证了公司从几十人挤在一间小办公室,到几百人在崭新的办公室一起为公司庆生的发展历程。非常幸运能遇到优秀的同事们,也期待来年能继续发挥专长,让技术予力公司成就不凡!

编程一小时


12月中旬,又到了年度全球计算机教育周。今年的活动位于上海计算技术研究所,并请来了code.org的课程研究专家Elizabeth Bacon老师进行主题演讲。我们的教材依然是《我的世界》编程游戏,今年的课程有了3D体验,主题为《AI for Good》,指导小朋友对机器人进行训练,让机器人识别易燃物从而达到防火的目的。和小朋友们一起的时间总是短暂而快乐,我们也他们身上挖掘出了许多闪光点,甚至感叹个别孩子的智慧程度远超我们自己的当年。时代在进步,如今的教育水平和设施也有着大幅度的提升,我相信这些孩子们未来一定能成为中国以及世界的栋梁。

收获与感悟


如果要用两个字来总结2019年的收获,那就是“成长”。今年我还参与了纽约大学学生参观微软、微软创新杯培训等其他众多社区活动,同时也保持着博客文章以及开源代码等线上贡献。

我完成了年初的目标——努力克服程序员的社交恐惧,更多参与到线下交互,在微软美国总部的拜访不仅让我大开眼界,了解到更广阔的星辰大海,也让我的演讲和备课经验更加丰富。所以,凡事都不要先急于否定自己,觉得“我办不到,我不适合”,大胆去做自己没做过的事,说不定有意想不到的收获。今年业余时间我更加积极参与开源,也完全改变了我对开源世界的认知。我从几年前的开源嘲讽者变成了开源拥护者,就像许多软黑随着微软开源开放而转变为软粉,只要我们彼此放下高傲和成见,互相学习,取长补短,就能共同进步。

我非常感谢 Green Dot、微软公司以及 MVP 和社区朋友们,没有你们的培养、帮助与支持,我无法成长为今天的我。今年也是我30岁的启程,都说程序员30了,就该转行送外卖挣钱植发了,这个行业确实需要不停的学习,如果没有兴趣,当然很累,好在18年前,我出于兴趣,给自己定了长大从事 IT 行业的目标,而18年后,我依然能在这个行业保持兴趣和热情,我会继续证明,年龄不必成为程序员生涯的终结!

2020 是下一个征程,我的初心不变,我会做好本职工作并积极贡献社区,期待与大家一同成长!