How to Be Awesome

成为一个牛逼(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

牛逼的程序员让周围的人更好。
莫道前路无知己,天下谁人不识君!

0%