先讲个故事
公司里有这么一个小小的差事,某一个月,每天都要把 Excel 的某一列的数据根据某种规则换算以后拷贝到另一列去。
DA(数据分析师)看了以后说,就手工完成吧。反正只有一个月,这件事情每天做 3 分钟,也没有多耽误时间。
TPM 看了以后说,这事情每天做做很简单啊,写一张便签贴在屏幕上,每天就不会忘记了。
Dev Manager 看了以后说,衡量一下这个很小的时间成本,用其它的方式来解决是不划算的,还是手工搞定吧。
……
不过地球上还有一种特殊的物种不同意。它门叫做程序员——这么重复性的劳动难道不能用脚本完成吗?
就是,用 geek 的脚趾头想一想,这还用问?
于是写脚本,调试,测试,整合,两个钟头花掉了。没关系,这是一次性的工作。值得。
用了两天发现 bug,某些数据格式没有 cover 到,修复 bug,一个钟头花掉了。没关系,修 bug 是软件的一部分。
又用了两天,发现数据精度的问题,再修,又一个钟头。呃,没事,看来我需要完善一下 UT。
UT 一写才发现,看似简简单单的功能,原来需要考虑的 case 那么多,面条代码看起来很难受,维护起来又费劲,迫切地需要重构代码啊……这一重构,就是一个半天。
接着发现脚本触发的这个行为,或者说是每天用鼠标双击的那一下,其实也应该自动化,要不然忘记了怎么办?于是写 cron task。
搞定以后,忽然想起来,脚本的执行不能保证成功啊,执行是可以 idempotent 的,应该要有一个机制确保每天都执行到。于是开始写一个简单的任务执行系统。
等等,如果一定时间内没有执行,需要告警啊,这个简单的功能怎么能够没有。于是加入告警系统。
单机状况谁也不能保证执行的成功率,如果机器挂掉了,不管是任务执行还是告警都歇菜怎么办,必须要提高可用性。必须要做集群。光说集群还不够,要做到真正的分布式。
好吧,分布式的情况需要考虑中心节点的问题,是有带有 master 节点的设计(Master-Slave?Master-Master?),还是完全去中心化的设计(2PC?Paxos?)呢?
……(此处省略一万行)
越来越荒唐啊。
一个月过去了,Excel 数据拷贝的活也不用干了,折腾以后,手里多了一堆名叫 “脚本” 和 “软件” 的烂摊子。
看起来是个相当讽刺的负面例子呢。
有程序员跳出来说,看起来是花了好多倍的时间,但是只要写一次,以后再有 Excel 的列拷贝问题,不就直接解决了吗?
可问题是,以后会再有这样的问题吗?这似乎是一个很难发生重复的问题,即便有重复,场景可能也千差万别了吧。
所以程序员傻里吧唧地做了一堆无用功,对吗?
……
我觉得未必。
没有折腾的意愿,哪能有那么多有趣的点子,哪能有那么多便捷的软件?提高效率的东西在最开始总是从降低效率开始的,这是一个烟斗模型。
更重要的是,如此的折腾完全源自自愿,折腾是快乐的源泉!
生命不息,折腾不止。
……
好像有点牵强 +_+
在跟自己说 “管他呢” 之前,忽然想起自己身上发生的两个事情:
局域网备份和私有云
老早就想干这个事情了。家里好几台电脑,照片那么多,如果能够从一台机器上备份到另一台该多好啊。硬盘哪天坏掉的时候,也不会丢东西。
最开始我的做法是手动完成,low 爆了对吧,我都不好意思告诉别人;
后来进步一点,写了一点点 bat 脚本,至少强一点了,证明我还不是废物 ✧(≖ ◡ ≖✿);
再后来更进步一点,用一些稍微方便一点的工具,比如微软的 SyncToy。但是无法自动化这一点始终让我很不开心。难道为了实现它,我真要变成上面那个越折腾成本规模越大写脚本的讽刺故事的主人公吗?
好吧,应该别的有办法,研究研究……
一种方式是备份到云上。可是我不是很愿意把私有的照片放到公网上去。
另一种是搭建家庭私有云,为此花很多钱买硬件设备来解决就没意思了。
还有别的办法吗?
应该有,研究研究……
最后发现了一个软件,Plex 可以很舒服地解决这个问题,手机上的客户端可以自动同步照片到家里的服务器上。
但是光备份多没意思啊,要是能更好地利用局域网的特点,在电脑上的图片和电影,能够流畅地放到电视上播放观看多好啊。
于是开始折腾下面的部分。
闲置的笔记本
我老婆的旧笔记本不用了,闲置也是浪费。我就把它装到电视柜下面,专门买了 HDMI 的线,再准备了无线鼠标和无线键盘,想的是可以坐在远处操作,可以看电影和 YouTube 视频。电影下载,播放,看起来似乎终于把笔记本变成了视频播放器。
可是三分钟热度以后就不用了。
发现用上面提到的 Plex 可以更有趣地解决这个问题。台式机上面下载电影,存放照片备份,Plex 支持以流媒体的方式在远程的客户端观看视频或者图像。于是在 FireTV 这个小盒子里面下载 Plex 客户端,搞定原来旧笔记本的功能了。而且,不只是盒子,在手机上也可以装客户端。
不过,依旧是三分钟热度。o(╯□╰)o
实际上,还是 FireTV 安装的 YouTube 功能最实用(Google 和 Amazon 因为它图标一类的问题争吵以后,YouTube app 已经不能直接在 FireTV 上使用了,现在需要通过一个中间媒介 app,FireFox,再来使用),或者别的视频软件。
我对自己还是有认知的。
而且,似乎平时只有吃饭的时间会坐在电视前看电视,看电影这样长时间的活动,要么电影院,要么电脑,就是没有端坐在电视机前的习惯……
于是折腾一圈之后,忽然意识到,旧笔记本又闲置下来了。
这回怎么办呢?
好吧,研究了一下,可以把它改装成 ChromeBook 一样的上网本,下载 Chrome OS,拷贝到 U 盘里面,备份数据以后安装到就笔记本上……
太聪明啦!
正高兴呢,兴致勃勃地准备动手。我老婆忽然问我,听起来不错,可是装好以后你会经常去用吗?
呃…… O__O “…
老实说,不会。家里有一个 iPad 上网都很少用,上网的事情还是笔记本或者台式机最实用了……
不过,话说回来……
谁在乎呢?
享受折腾的快乐就好,不是么?
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》
虽然知道折腾很快乐,但是现在开始慢慢质疑自己的 “折腾” 了。
就像博主一样,总是设想一些很美的应用场景,但是最终三分钟热度后弃之不用。
快乐是快乐,但觉得很耗时间和眼睛(投入了就忘记休息)。毕竟程序员的 “空闲时间” 都是很珍贵的,觉得是不是应该做些更有意义的事?
我现在临时的解决方法就是,折腾的想法都记下来酝酿和沉淀,但一个季度只从这些想法中选一个折腾。
小项目的单点执行保证、日志、告警是个痛点,要是有平台来解决这个东西就好了。
不折腾的时候就是老了,哈哈哈