工程师修炼之道:从能做到做好
引子
半夜,突然在钉钉群中看到团队内的开发同学告诉测试同学明天测试一下XXX接口,自己研究出一个超长的SQL搞定了接口的性能提升。看到这个事情,第一想到的是方案可能又走偏了,第二天以了解果不其然。大部分的研发同学,拿到需求第一时间考虑的能怎么去做,很少去考虑需求的合理性,解决方案的整体性。一个需求能做和做好一个需求在本人理解其实是两个事情。
能做和做好
首先,我们聊聊能做这个事情。对于开发同学来说,所有的需求,其实都是能做的,技术都可以去实现出来。
例如:需要一个接口,一次获取10万条数据返回给上游业务系统
这个事情能不能做呢,在技术实现上是可以做的,写这个接口也很快就可以出来。
其次,要考虑这个事情如何做好呢?我们就要从多个维度去思考方案的合理性和可行性了,具体到这个问题,我们首先要考虑这个接口需求合理吗,场景性能的诉求能否满足,是需要深入了解和评估的。回到本身的这个具体问题来说,我们需要考虑三个方面的问题:
- 首先,对于一个线上的底层服务,具体的每一个接口的性能一定要控制在合理范围,这样整个系统的链路的时间才可以保证,这是前提;
- 第二考虑的是一个接口的实现复杂和低效会不会将整个系统的搞崩了,发送蝴蝶效应;
- 第三上游为什么需要这个接口,在做什么样的功,有没有更好的方案去实现这个功能。
如何做好
真正的要把事情做好,背后其实是包含着两层意思:
- 做正确的事情
- 事情做正确
大部分情况下,我们更多的将精力投入到第二阶段及将事情做正确的层面上去,而忽略了第一个阶段的判断事情的正确性上。
一个优秀的工程,在接到任何需求的时候,都需要从三个方面去思考,保证事情的做对和做好:
- 首先要考虑的问题是需求的合理性,也及判断做的事情是否正确。这个过程中就需要我们去深入沟通和了解需求的上下文信息,包括使用场景、用户是谁,解决什么问题等。
- 其次,对于不合理的需求,我们要有原则,坚持原则同时也要提供建设性的建议,避免陷入简单的0和1的困境。
- 第三,面对任何问题,不能只是局限在单一维度上,要全局,多维度去考虑,寻求最合适方案。
总结
能做和做好是两个事情。能做和不能做是一个0或1的选择。做好是一个从0到1的过程。简单的做事只是码农思维,能够选择去做正确的事情,同时并将事情做正确才是一个真正优秀工程师。
关注 熵减黑客 ,一起学习成长
![熵减黑客](https://files-cdn.cnblogs.com/files/peida/shangjianheike.bmp)