成为一个牛逼(awesome)的工程师
Understand why we build stuffs
great leaders start with why
当我们了解了我们所做事情的意义后,我们往往更加充满斗志,更加愿意投入 blood,toil,tears and sweat。事实上,如果你仔细回味,人的一生,值得铭记的事情往往和 blood,toil,tears and weat 相关。很多时候,我们一事无成,并非我们无能,而是没有找到一件有意义的,能让自己愿意毫无保留地挥洒热血的事情。
Have a strong sense of ownership
像对待自己的孩子一样的ownership,舍我其谁来承担责任的ownership。
注意不要混淆主人翁意识和宗教意识。宗教意识是会无理由反感,驳斥甚至谩骂一切对自己所呵护的东西的批评。对于批评,拥有宗教意识的人会认为这是一种「亵渎」,即便这批评有理有据;而主人翁意识则往往爱之深责之切,有则改之无则加勉,就像真正合格的父母对待孩子那样。
Really finish stuff
很多时候,我们所定义的「完成」真的算是完成么?做一个 feature,code complete 算是完成么?bug-free 算是完成么?caller-friendly(比如说代码有完善的文档)算是完成么?deployed to production 算是完成么?
我为啥那么执着于 build - measure - learn?编码结束,才仅仅是个开端,学到了些什么,才是循环的一次结束。
deliver with full fledged solutions
提交完全成熟的解决方案
zero tolerance to shit in products
牛逼的程序员眼里容不得沙子,不会得过且过。
在程序猿的世界,偏执狂的成长曲线更优美。日子是问题叠着问题过的,牛逼是汗水覆着汗水熬出来的。
zero tolerance to recurring tasks and bugs
牛逼的程序员不会做重复性的工作 —— 不是不屑于,而是他们会找到方法去减少甚至消灭重复。
- 代码的重复靠重构来解决。最好在写代码的那一刻就避免重复。
- 代码的 boilerplate 靠 snippet 来解决。撰写代码的时候,同时也维护和更新 snippet。atom / vim / emacs 都有很好的 snippet 工具。
- bug 的反复靠 test case 来捕捉。
- task 的反复靠 makefile,script,cronjob 等工具完成。
Being experts but open minded
在合适的地方使用合适的技术。
Always make your team a better team
牛逼的程序员让周围的人更好。
莫道前路无知己,天下谁人不识君!