从一片混乱到 ETO 诞生:我怎么把事情理顺的
我这个人,以前干活就是个典型的“差不多先生”,尤其是项目管理这块。你给我一个任务列表,我能用 Excel 搞定。但一到跨部门协作,Excel 那玩意儿就开始崩盘了。我手底下管着三五个小的活儿,每个人进度都不一样,每天早上起来第一件事就是给那张神仙表格打补丁,生怕哪个单元格公式错了。
那阵子我真是火大,感觉自己不是在管理项目,而是在维护一个随时爆炸的雷区。
我受够了。我就拍桌子了,必须搞个工具把这些流程给捋顺了。外面那些商业软件是但动不动就要钱,而且功能臃肿,好多东西我根本用不上。我就决定自己动手,丰衣足食,拉着一个跟我关系铁的哥们儿,开始了我的 ETO(姑且就叫它“效率提升组织者”)的开发之路。
第一次实践:ETO 1.0 的硬编码折磨
一开始的想法很简单,就想搞个本地脚本,能把不同平台的进度信息统一拉到一个界面上。我先是选了咱们常用的那个脚本语言,花了一个星期的时间,把基础的数据抓取功能给跑通了。但是,光抓取不行,得能改,能留痕迹。
我发现自己硬生生给自己挖了个大坑。为了让数据持久化,我开始研究嵌入式数据库。那几天晚上,我真是头发都要薅光了。不断地测试,不断地重写查询语句。1.0 版本出来后,虽然丑得要死,界面设计简直是上世纪的风格,但它跑起来了。它能把我的任务分配给几个人,然后追踪他们的状态,自动生成一个简单的日报表。
我把这个初版发给了几个同事试用。大家一开始是抱着看热闹的心态装上去的,结果发现,虽然粗糙,但真能解决问题。他们开始提各种奇葩要求:要颜色区分、要附件上传、要提醒功能。
更新日志:V2.0 版本的大手术
这些反馈就像雪片一样砸过来,我知道 1.0 版本撑不住了。最要命的是,1.0 版本的核心算法处理跨项目依赖关系时,经常出现死锁。为了解决这个痛点,我决定进行一次大手术。
-
核心重构: 我把那个自己搭的数据库给扔了,换了一个更专业的轻量级数据库,保证数据操作的原子性。光是数据迁移,就折腾了我整整三天,生怕哪个数据对不上。
-
功能扩充: 紧我按照同事的要求,把提醒功能给加上了,用的是一个简单的邮件推送服务。又花了大力气,把界面的样式美化了一下,至少看起来没那么像病毒软件了。
-
打包部署: V2.0 最大的难点在于部署。1.0 版本我就是把代码文件直接塞给他们,他们自己跑环境。V2.0 我决定给它打包成一个可执行文件,这样小白也能直接用。研究打包工具又是一段血泪史,各种依赖缺失,各种环境冲突,我硬是把所有运行库都捆绑进去,才算搞定。
搞定 V2.0 的那天晚上,我对着电脑屏幕愣了好久,感觉身体被掏空了。这哪是写一个工具,这简直是在搞第二次创业。
关于“下载地址”和持续维护的苦恼
V2.0 出来后,下载地址成了新问题。我就是把那个几百兆的安装包扔到我们部门的共享盘里。但共享盘那玩意儿,隔三差五就抽风,不是权限不够,就是速度慢得像蜗牛。
后来我琢磨了一下,为了方便管理更新,我得有个集中的地方。 我没有搞什么高大上的官网,成本太高。我选择了一个相对稳妥的文件分享平台,每次更新,我就把最新的版本扔上去,然后把链接直接贴到我们的内部群里。
这个“下载地址”不是一成不变的。因为平台策略变动,我每隔几个月就得换一次地方,每次换地方都得通知一遍。更别提更新日志了。V1.0 的时候我就是随手在代码里写注释,V2.0 开始,我要求自己每次提交一个大功能,都得像模像样地写下来,包括修复了什么 bug,增加了什么功能,这样用户能清楚知道自己下载的是个什么东西。
现在 ETO 已经到了 V3.1 版本了,虽然还是个内部自用的小工具,但它已经稳定跑了一年多,帮我把手上的项目管得服服帖帖。我从中学到的东西,可比那几年看书学到的理论知识要扎实得多。实践出真知,这话一点不假。现在虽然每天还是要花点时间维护它,但看着它每天自动跑起来,把所有进度汇总给我,心里那份踏实感,是以前那个天天修 Excel 的我无法想象的。