飞逝的一月

时间这个维度,最让人无可奈何的是它只有一个方向。谈不上留念,一月就在冷风和冰雪中飞逝而去。

2018.R1算是基本完成了,除了几个做不了的和自己不会的。这个迭代给自己定的目标很小,这样的好处是 不会觉得有太大压力,就是是懒神附体不想做事也能在短时间内补救回来。

从去年年底到R1,技术上主要用到的是bash和grunt。虽然对这些东西不是很精通,但还是完成了任务,自己能够释怀。 愚笨如我,也慢慢理解了在这个快节奏的时代,学习的模式也变化了,也不能期待如同以前在校园或刚刚毕业的时候那般系统化地啃 书,把所有的知识点都掌握住。

另一点感想是制定目标的时候,要遵守SMART原则。如果一个目标定得很大很高,很难分解完成。首先看到目标心里就有了担心,就会焦虑。太大的目标,也不容易追踪进度,容易为了赶进度偏离轨道。目标该多小呢?因为项目本身是个人兴趣类型的,投入的时间无法保证。可能一个星期都没空,也可能连续几天每天几小时。我认为一个任务最好小到一个小时能够做完。如果是写代码类型的任务,一个小时真的做不了什么,所以更能够凸显“基础设施”的重要性。想一想,如果只有一个小时,需要做的事情有同步代码,写代码,本地手动测试,调试,部署,线上测试,再调试,再发布,整个过程如果没有好用的自动化脚本会很惨。

自动化的好处,强调一千遍都不为过。手动的步骤很容易忘记,也容易出错。很庆幸之前花了大量时间做的grunt脚本和deploy.sh很给力,把打包部署的事情都自动化了。还有一点很赞(自己)的地方是脚本里边有好几个aliases,例如"deploy:local", “deploy-local”, 再也不担心自己记不清命令了。npm run支持的命令也覆盖了grunt的常见命令,所以不管是用npm还是grunt,都能够在不给大脑负担的情况下把事情轻松搞定。

“基础设施”中另外一个极其重要的部分是自动化测试,包括单元测试和功能测试。以前项目开始的时候一味追求速度,单元测试没有做。现在不着急赶进度了,要把单元测试都加上去,代码里边不合理的地方例如BL和DAL的耦合也需要解决掉。还有功能性的测试,没有自动化测试,smoke test都没法做。部署之后只能手动点几个页面看看。

还有一点感悟:多做减法,多换位思考。

以前总想把东西做的大而全,什么功能都想自己来实现。其实一个人的时间精力真的很有限,能够利用外部资源合理运用也是极好的。古人曾经曰过:君子性非异也,善假于物也。例子就是网站的评论功能和分享功能,现在有专业的公司做的社交化评论例如网易畅言做的很好,能够减轻小站长或小公司的开发代价。百度共享和bShare这样的工具对于普通的网站分享需求,也足够了。

有一些功能,想起来觉得很好很有用就想去实现,其实这里犯的错误就是太主观,思考角度不对。一旦陷入了程序员思维,就觉得很多功能要做出来,其实用户不怎么需要的功能就算做得再好也不过是开发者的自High而已。

多做减法,才是正道。说起来容易,真正开始砍掉一些现有功能或舍弃一些想法的时候,还是会有些犹豫和不舍。按照20/80法则,80%的功能都能够砍掉,要做到这点需要很大的勇气。到2018.R2结束,舍掉的东西会有Commenting, Sharing, EDM, Admin v3, 也许还会更多。

![Image of 2018-01-31]({{ “assets/img/2018/IMG_20180131_121042.jpg” | absolute_url }})