重逢会有期,蹒跚又一年

难得疫情缓和,三年没回国,这次回去呆了一阵子。免不了的走亲访友,大快朵颐,直接导致体重暴增 5 公斤!人的情感真是微妙,山水相隔自是思念,但相见后的离别更是让人痛苦,可见“相忘于江湖”虽然显得冷漠,却是真的洒脱。
眼看年底,抽时间去医院做了健康检查,血压高、眼压高都是意料之内,借此正式开始治疗。人过不惑,人生观发生一些变化,一方面庆幸自己多年来工作习惯的刻意养成,以至于没有什么职业病;另一方面,随着生活压力的增大,越发认真思考如何取悦自己,希望接下来的人生可以有一个健康的心理,拖着一个不太糟糕的身体,完成人生的下半场。

工作之中

今年感觉过的特别快,说明工作不仅充实而且顺利。不出问题是难以做到的,但是不出大问题那真的就是幸福感满满了。

注释与文档

曾经,我是坚定的“优秀的代码无须注释”理论的拥护者,觉得可读性强的代码完全可以做到自解释,根据字面语义就可以明白该代码所处理的业务。至于业务逻辑,则认为合理的抽象与封装,可以使得单个逻辑块很小巧,在需要时直接阅读代码即可获知业务逻辑。
可惜,正应了过犹不及的道理,当系统复杂度高了,内部逻辑的组织也变得复杂起来,甚至开始出现读不懂自己代码的情况。这时,代码中那几句贴心的注释越发可爱起来,它或许无法起到举足轻重的作用,但对于后期维护真的是省心省力。
文档也是同理,我是很懒得写文档的,想知道什么,直接读代码呗。但是几个老项目的维护经历告诉我,文档不必多么详细,只需要描绘出骨架大纲,那么这份文档对于该项目的维护与扩展,真的是意义非凡。

可回溯的意义

今年的各个项目由于推进顺利,所以自然而然的产生了大量改进、合并、发布作业,本来这些工作并不复杂,但是随着数量和频次的增加,成了不可忽视的问题。
如何对这些行为进行跟踪与回溯,成为今年内的一个重要课题。
对于源码的管理,由于一直使用版本管理系统,因此在此基础上,使用一个文档作为分支合并与发布的摘要说明。确实,当前的自动化开发流程里,这个步骤其实是可以实现自动化的,但是我们团队的水平无法实现这种流程的落地,不得不因地制宜,土法炼钢。
对于产品原型的改进,一直以来只能进行结果的展示,对于逻辑复杂的系统,很多中间环节只能靠口头说明,体验不是很好。之前为了应对这种场景,也引入了类似事件通知的机制,某些希望展示的环节,通过向对外暴露的事件接口注册响应函数,从而可以获取一些细节数据,然后在画面上实时展示出来。这种机制很显然很难满足需要——它太繁琐了,时间的订阅形成了强关联,更多细节的订阅会带来大量的工作,并且难以维护;同时,这种跟踪是实时的,一旦过程结束,无法向前回溯。因此,花了一些精力实现了跟踪机制,细节处只需要向跟踪器输出一条足迹信息即可,而展示侧收集到这些信息就可以实现处理细节的任意前后流转,这个实现很像日志的工作原理。
对于发布成果物的管理,最开始也想到了版本管理,但是里面基本都是二进制文件,同时某些脚本文件进行版本管理的意义也不是很大。这个问题还在思考中,目前倾向于做一个简单的工具去管理他们,无他,也是考虑到回溯的问题。
综上所诉,工作成果的可回溯显得如此重要,可以项目的后期维护变得丝滑起来。

工作之余小工具

今年搞了几个小玩意儿,不是什么惊人的东西,但是满足于自己的勤快。

CalculationPractice

这是个小学低年级数学题的自动生成工具,家里娃需要,趁自己勤快,就动手造了个轮子。
从最开始的加减法口算,到后来的乘除,横式、竖式,假分数、带分数、约分,立体方块,慢慢的也迭代了一些,算是今年做过最想样的小玩意儿吧。

TreeGridView

这是一个 C# 中 DataGridView 的扩展版本,以树形层级表格的形式展示数据,原始代码来自微软的某份社区代码。之前写过的一个工具里用到过,今年勤快稍微重构了以下。看看似乎也没人做这个,于是也发布到 NuGet 去了。

ImagesToPdf

也是源于娃的学习需求,其实功能很简单,就是扫描了一堆 A4 的文档,我只想把他们合并成一个 PDF 文档。结果去网上一搜,基本都是在线工具,还都有这样那样的限制。而桌面软件则作为功能之一提供,价格不菲,为了这么一个不起眼的功能,我买一个不大用得到的软件实在有点委屈。索性自己写了一个小工具,这下安逸了。

PlanMe

这其实是个 ToDoList 类型的工具,正应了“程序员写的第一个作品不是笔记就是 ToDo”的说法。其实写这个东西的动机,一方面是想学习 Avalonia UI 的开发,另一方面有一些自己想要但是既存软件往往没有提供的功能。它的目标是 ToDoList + Project Management,似乎也已经有现成产品了呢哈哈,所以说这个项目主要还是学习 Avalonia,顺便产出一个自己用的工具。

夭折的网站

之前那个 React 处女作顺理成章的夭折了。倒下的原因有很多,在没有真正动手去做的时候,很难想象到。
其实这种小项目的甲方很容易抱有比较高的期待。本来是没有自己的网站的,随着业务的上升,想做一个网站,可以让自己的事业更上层楼。但是网站上线了,发现与想象中落差太大。
如何推广,如何引流,没做过 SEO 的团队真的无从下手,付费给搜索引擎去推广吧,客人来了,如何保证存留也是大问题,主页如何展示、交互是否合理、引导是否友好,稍有疏忽,人家何必在这种用着不舒服的网站浪费时间呢?这次遇到的问题就是尽管网站接入了支付,但是客人那边就是一直失败,后来发现原来引入的支付系统只支持境内支付,这对于目标客户其实是境外的业务简直是南辕北辙。
所以这种网站的成败不仅对技术有要求,技术之外的运营也是大学问。同样,这种业务,个人开发者的作品,也确实很难和深耕多年的专业团队一较高下。任何的傲慢都会遭到反噬。

书影音

今年看了 20 部电影(按照我自己的统计方法,没写观后感的就不计算在内),8 本书(成套出版的计作一本)。相比去年是略有进步的,这还是在兼顾了学习和游戏的前提下。可见只要有效利用时间,能做到的事情还是很多的。
音乐方面,今年听古典比较多。想放松的时候,流行、爵士、古典俱佳,工作时和入眠前则只有古典,特别是需要力量时,古典音乐音乐既可以如涓涓细流抚平燥动,也可以如熊熊烈火鼓动心旌。只有年末这几天,突然有点伤感,听了一些民谣。

游戏

通关了3款游戏,《吸血鬼幸存者》、《封神榜》、《腐烂过度2》,投入了时间不少,但没有追求全成就,单纯是为了放松。现在的游戏品类真的很多,各种新奇有趣的玩法让人着迷,但游戏带来的享受确实不如 3A,来年争取再认真玩个 3A 吧。

学习

今年真的很上进,去参加了软考。其实这是一直以来的愿望,虽然工作已经不要求我必须去考认证了,但是作为从业者,还是希望以考取认证的形式来鞭策自己学习,同时验证自己的能力水平。很可惜的是,并没有考过,是我自己的原因,如同学生时代,没能安排好学习于娱乐的计划。

新年展望

身体健康是一切的前提,所以健身会成为首要目标。观影量怎么都不会太少,但读书希望多一些。至少通关一款 3A 级别的游戏。把 PlanMe 推进下去,并用在自己的工作和学习中。驾照拖了几年,要下决心落实下来。再次挑战软考,拿到一个认证。
瞧瞧,人到中年,反而比年轻时还努力,这也算是中年危机的一种体现吧?
重任在肩,时不我待。功不唐捐,玉汝于成。

作者:高云鹏出处:https://gaoyunpeng.cnblogs.com/
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。