转【程序员七问】
程序员七问
有不少人向我抱怨说工作中都是写业务代码,刚开始还有新鲜感,熟练了以后就觉得无聊了。
这样的问题多了,也促使我去思考和总结,我总结了一个自检的列表, 如果你已经确定在一个公司发展下去,不妨对照着检查一下,看看差距在哪里,估计就不会无聊了。
1. 我是否对系统的业务有了整体的了解?
我能不能对其他人(例如面试官)描述下该系统实现的业务:
-
系统有哪些角色,这些角色如何与系统交互;
-
系统有哪些主要流程,次要流程,都有哪些角色参与其中。
2. 系统的整体架构是什么样子?
系统都分为哪些组件,这些组件是如何部署在服务器/客户端的?
它们之间是怎么交互的?用的什么协议?
3. 系统用到了哪些技术和框架,我是不是都已经精通了?
例如Spring, Redis, Nginx......这些框架和软件的原理都搞清楚了吗?
4. 我是不是已经精通了多个模块甚至整个系统的代码?
对于一个bug, 我能否迅速地定位到bug的源头?
对于“烂代码”,我是否有能力,有勇气去重构它?
5. 对于系统的非功能需求,我是不是已经掌握了?
安全是怎么做的?
如何做的性能测试?
高可用性、可扩展性是怎么实现的?
......
6. 我是不是已经了解、甚至掌握了系统使用的工程实践?
系统怎么做的build ? 用到了哪些工具?
系统怎么做的测试? 如何自动化?
系统是怎么部署的?
系统是怎么监控的?
现在还有什么问题? 我能不能改进它?
7. 我在团队的地位如何?
大家有了业务或技术问题,第一时间会不会想到找我来帮忙?
我能不能在团队的讨论中发出自己的声音和见解, 并且被别人尊重?
我是不是经常可以给大家做技术分享?
列举出这些,就是让我们去脱离自己的“一亩三分地”,aim higher,慢慢地成为一个有影响力的Leader。
大家肯定能看出来,要成为这样的人,肯定得付出比常人更多的努力才可以,没有人能随随便便就成功的。