工作原则
第一原则:千万不要期待别人帮你解决问题。
脑袋里一定只能想着自己解决这个问题,一旦产生了有退路和靠山的想法,人的思考力就会大幅度的下降。
第二原则:心思细腻。
对于一个功能的实现,不要有一枪爆头的想法,对一个功能的流程要在脑子过三遍,对于具体要反复揣摩和测试,因为一旦你的犯错率过多,别人不会再信任你。要把错误死守在自己的范围内。
第三原则:洁癖&反复思考还有什么漏洞。
对于代码要有一定的洁癖。简洁的代码有利于团队合作,也有利于性能。
正常情况的代码谁都会写,能考虑到正常情况之外的事情触发和防范才是一个开发的过人之处。
第四原则:狗一样的工作,绅士一样的玩。
效率至上。工作是一件很严肃的事,对于一些比较核心的事情,不要听音乐,不要聊天,不要拖,让自己的专注再飞一阵子。
如果氛围很差,影响工作,看能不能去一个稍微安静的地方工作,有情绪的工作会大幅度的降低效率。不要试图去说服任何人,杠就是你对,一切结果导向。
第五原则:倾听与沟通。
在和别人交流的时候,不要去打断对方的话,认真去了解他想表达的事情。
避免“心灵感应”,也就是我们常说的“我以为你说的是我想的”情况,所以当对方讲述完之后,我们再复述多一遍,再询问一下我说的是不是你想表达的内容。
沟通的时候,杜绝用任何技术名词,讲人话,并不是每个人都是开发。
如果沟通欠缺,可以先用纸列1-2-3,这样子在讲的时候至少是有条理的。
工作流程
需求确认阶段
1. 了解业务的时候,不要含糊,不知道不懂的内容就说不知道不懂,不要含糊其词,不要怕丢脸。主动思考,理解整个业务流程和闭环。
可参考《学会提问》一书中讲到的批判性思维方法
1.1 什么是论题 结论是什么
1.2 理由是什么
1.3 哪些词句有歧义
2.了解完之后,复述一遍给对方,主要是避免“心心相应”的问题,确认逻辑。
开发阶段
1.开始写代码之前,先做好系统设计,最好的方式是画图(流程图,架构图,类图),不要怕浪费时间,前期的设计和思考能为后期省下很多时间。
2.任务拆分,把颗粒度分解到最低,在wiki描述一下流程的业务逻辑。
3.开发的时候 要先缕好思路,再动手,可以先用纸列1-2-3,要坚信开发其实就只是一个翻译工作,对于设计和解决方案才是工作的核心,如果在开发花费太多时间,即证明逻辑思维并不清晰。开发的时候好好思考用什么数据结构和设计会比较好,不要盲目去实现。
4.反复测试,要相信自己的质量没那么高,但要有一颗没有bug的心,你的行为你的质量都会记录每个人的眼里,越是多的bug在自己这关过不去,越是能提高技术威望。
5.反人类思考,我们所思所想都是正常的逻辑线,肯定会有其他分支的逻辑流程没有考虑到,用户都能想出薅羊毛的思路,自己也肯定能提前预料到一些额外逻辑分支,反人类思考是提高自己的代码稳健性的途径之一。
6.打日志,日志是出现bug之后救你的唯一途径。
7.对于核心设计和更改,发群让大家帮忙review,不要怕打脸,你是为了最后的胜利,不是为了此时此刻的面子。
8.命名规范,不要瞎取名。
解决问题思维
1.出现bug之后先定位是前端问题,还是后端问题,二分查找。
2.通过日志排查定位,看问题的点是在哪里。
3.发现问题之后,要去了解影响面是个体还是整体。如果是整体,解决方案是什么。
4.如果需要改代码,不要只单纯改目前的一部分,要去思考这个模块下,改动会影响到什么,如果实在考虑不到,最好的方式就是整个模块继续测多一遍,不要自信,要谨慎。
工作方法
1.对于工作进度,要主动汇报,因为上级能知道的信息仅来源于你,如果自己都不主动汇报则上级更无法定夺。
2.对于工作如果有风险,要提前汇报,不要最后一刻才说明白。把整个工作状况都控制在人家知道的范围内。
3.及时汇报,及时反馈。