全栈工程师成长记

编程重新定义人生

第二周遇到的“完美”大坑

本周最大的坑:追求完美和洁癖浪费了一天时间(周三和周四做重复工作)。

周三开始做JDstore项目,当天就已经完成epic1和story1了。然而因为对git、migration、rake db的各自概念和相互作用等方面还不是很理得清,经常是git pull或者git revert烂掉,要不就是migrate烂掉。但这不是关键,关键是我的完美心态和洁癖心态导致某个步骤做烂了又砍掉完全从头开始。什么叫从头开始,就是从最初的套用bootstrap开始……

事后回想,自己虽然重新做了几次bootstrap开始的步骤,但是因为着急着要回到之前烂掉的那个步骤,所以这个过程是不会太用心的。git既然是个时光机,应该利用它回到最新的保存节点才是正道。就像打游戏一样,如果打到第15个关卡挂掉了,应该做的是从第14个关卡的结尾存档开始玩起,如果要重新从第1个关卡开始再打,其实是很恼人的。

周四中午的时候,我终于想通了,先让git rever和git reset一边呆着,我暂时不要去研究它们。那怎么解决烂掉重来的问题呢?笨人自有笨方法。用git checkout -b 来新建一个小小小小的分支,因为单纯的commit已经解决不了我的需求。比如做story2,我不是直接建立一个story2的分支,我会先建一个admin panel的小分支用于做下拉菜单,通过之后再checkout -b 一个user panel的分支来做用户管理后台。用户管理后台还要再细分,比如建立以个is_admin的分支来做一个改变用户权限的按钮。

这样,当我的is_admin分支做烂之后,直接checkout到上一个分支,把这个烂的分支删除掉,再建立一个新分支来重做is_admin按钮,仅需要一分钟就可以又是一条好汉了。等我把sotry2的功能都做完之后,再直接checkout -b story2,这样story2分支里面该有的功能就都有了,git log 也能查看之前做的每一次commit——完美!

事实上,当我用了这种“有恃无恐”的方法之后,反而不再犯那些git pull或者db migrate之类的错,遇到bug也是在本branch直接解决,这种变相增加的“余闲”让自己的大脑开始够用了。因为之前只要烂掉一点我就想重做,那样会给自己造成很大的时间稀缺压力。

虽然周四在重复的做epic1和story1的工作,但是鉴于引用了新的办法给自己带来的成就感和信心,我觉得周五要把sotry2和story3完成,这样周末才有时间练习我的英语口语。事实上,周五的story2和story3完成的不错,到周五下午3点就完成了Must Have,接下来还有时间学习对页面进行调整。要不是周四浪费时间重做,那周五其实可以开始做购物车功能了。不过往好了想,至少也还是有进步的。