开篇
根据个人工作经历,划分为三个阶段,说明工作中遇到的问题以及如何思考和解决,希望对大家有帮助。
第一阶段(1-3年经验)
初入职场,虽来到或大或小的互联网公司,但因为自身经验和经历不足,需要快速充电和汲取,遇到问题时也会有些担忧或者手忙脚乱,所以此时最希望的是旁边有一个很厉害的师傅,可以随时请教棘手的问题,所以此阶段主要从问问题和学习方面做出总结。
-
不要什么问题都问,大部分都可以通过思考和谷歌解决,如果无脑的问问题,对方虽然仍耐心解答,但心里肯定会对你有不好的评价和印象,甚至反感。
-
记得有一次上班早上去的比较早,所以就看起书来后忘了时间,被领导看到后,批评几句,说公司让你来时工作的,看书学习回家看去。虽然当时心里不是滋味,但是也有道理,站在公司和领导的角度考虑,公司付你工资,是让你来产出的。
-
多分享多沟通是好事,但是不要口无遮拦,什么都说,有时少即是多,适可而止。试想,谁会喜欢爱炫耀的人,谁会给爱传话爱八卦的人掏心掏肺。
-
关于学习方式:
- 工作上遇到的技术点,可以主动学相关的技术点,还要找到自己感兴趣的方向,纵向深度和横向广度同时发展。
- 可以记录博客,理解了,再写出来让别人也理解,才是真的理解了
- 定期内部分享,这个大部分互联网公司都有
- 用脑图软件画自己的知识图谱,大脑对结构化的知识最容易记忆,所以我们要不断在大脑里完善和扩充自己的知识图谱和体系,让自己学到的知识能够关联或者串起来,形成一个体系,采用冥想回忆也是一种好方法。
第二阶段(4-6年经验)
经过了几年的磨练与摸爬滚打,此时工作起来已经得心应手,90%的问题都可以自己解决,甚至还可以解决同事解决不了的问题。但是偶尔还是会出问题,答应的事不能按时完成然后加班,或者沟通出现问题,所以此时主要从解决问题上给出总结。
-
不仅要了解自己做的模块功能,还要了解相关的系统或模块,这样在出问题的时候,可以更快定位解决。在设计方案的时候,才能考虑的更全面,赢得领导和同事的认同。
-
关于解决bug的思路:
- 搜集相关信息,确定是使用问题还是确实是软件bug
- 是否可以重现,是否是数据问题
- 查看最近的代码提交记录
- 查看日志数据或者调试跟踪
- 明确何时放弃,给自己定一或两个小时,换思路改方法,求助相关人员
- 提出假设,进行验证
- 增量集成法,一一排除
- 二分法,依次缩小范围
- 有时候会发现一个问题解决了半天或一天,各种方法都尝试了,头晕脑胀的,等回家路上思考下,第二天竟然轻松解决了,所以合理巧妙用脑,有事也能事半功倍。
- 当然最后,如果是线上bug,在保留现场的情况下,止损和恢复是最重要的。
第三阶段 (7-8年经验)
此时,大都经历了多家公司多个项目,接触到了企业级开发的方方面面,除了具体的开发技术,也开始了架构,设计,管理方面的知识储备,在公司也开始做核心的项目设计和开发,以及带领小组,需要兼顾开发和管理,此时面对的更多的是沟通协调方面的烦恼,但是有了相关知识的储备,加上多动脑思考总结,慢慢地也变得得心应手了,能够按时保量地完成更大的任务了,所以此时主要从沟通协作方面做出总结。
-
此时应该站在更高的角度看待需求和问题了,多考虑需求和问题的本质,一件事情的各个相关方的利益。
-
分配任务时,考虑各个人员的能力参差不齐,以及以往的任务完成情况,并且在人员变动或者无法完成时,要有兜底方案,正常在每个小阶段及时反馈的情况下,是不会出现这种情况的。人性中每个人对自己评估时偏向积极乐观,所以我们要尽量按照科学的方法和以往经验的反馈去给出尽量准确的结果。
-
沟通或者会议前,要有自己明确的观点和预期(时间以及结果),如果是讨论可以先简单记录下来,再去找人沟通。如果是会议,可以先将相关议题或者文档发给相关参会人员,给别人思考问题的时间。
-
在讨论方案时,分歧有是时不可避免的,我们虽做到自己当时能写出的最好的方案,但是由于经验、时间、认知等各种因素,难免遗漏,甚至方案不合理,错误等。如果同事提出各种异议,其实是好事,是我们学习和改进的好机会,这时可以抛砖引玉,虚心请教。
-
关于如何快速接手一个系统
-
刚进入一家公司,或者同事离职,部门调动等,我们经常需要接手一个新的或遗留的系统,从零到一开发一个系统的机会反倒很少。所以如何快速熟悉一个系统的架构设计。如果有文档或者相关交接当然是最好的,不过偶尔也会遇到只有源码和线上运行的系统,对于这种情况提出自己的几点思考。
-
面向对象的好处是让我们可以站在更高的抽象角度思考问题,避免陷入细节
-
先了解项目背景,关键需求
-
从上往下,梳理系统的模块和功能,画出对应的项目结构图,关键流程图,逐步熟悉从功能模块到数据库字段的设计。
-
至下而上,从数据模型开始,梳理出关键的ER图,然后往上逐步梳理核心模块功能,周边模块功能。
-
-
结语
平时遇到问题,将解决过程记录下来,经常复盘,看哪些地方可以改进,很多时候不是我们做不到,只是方法不对或者方向错了,不断的总结摸索思考,观察学习身边优秀的人如何思考如何解决问题,只要不断进步,总有一天可以达到自己想要的高度。