如何做好一个软件开发人员?
作为一个软件开发人员,如何能够快速适应并做到优秀?是否有一个通用的套路?是否有捷径可走?个人认为答案是肯定的。
本人在世界500强通信公司,从事大小型软件工程研发6年,软件经理3年,带领过N人以上的软件开发团队,也负责过N个以上并行项目群的管理工作。近期在思考写一些经验总结,从员工和主管等不同的角度思考,精简为如下3点最为重要,且顺序不可颠倒:
第1点:要管理好周边人员或领域接口,即对工作中可能打交道的领域和人员进行梳理和管理,并定期维护更新信息。
这一条是最基本的,也是最重要的。做事就像是运行程序一样,都是由基本的3个部分组成:输入,处理,输出。而第1、3部分都是跟外界接口在打交道,所以要进行梳理和管理,主要思路和方法如下:
- 首先罗列出来周边接口都有哪些?而且要进行排序,并屏蔽其他接口。即需要聚焦哪些人可以给你安排活儿干。
比如直接主管A > 项目组同时B > 其他部门接口C;
- 然后大致列出周边接口传递给你的输入任务一般都有哪些类型?大致进行分类。
比如A给你分配的需求开发任务X,B给你反馈的问题Y,C给你反馈的团队例行事务Z;
- 最后大致梳理出每类任务的入口条件和出口条件,并不断更新完善。
例如开发任务X的入口条件:
(1) 需求范围及澄清接口;
(2) 交付时间及交付件要求;
(3) 依赖资源是否到位等;
例如开发任务X的出口条件:
(1) 高质量的源代码;
(2) 输出相关交付件且评审通过;
(3) 交付时间满足需求。
第2点:琢磨出最适合自己的一套工作流程方法,并不断进行优化和改进。
这一点可以让你有条不紊、得心应手的做事,防止出现混乱、遗漏、反复等异常情况的发生。主要思路如下:
- 对于不同类型的事情,处理流程稍有差异,但大致相同,换汤不换药。
- 例如一个独立模块需求开发任务,在入口条件满足后,可以有如下处理流程:
(1) 整理任务评估,并给出反馈:如工作量、投入时间、完成时间及风险求助等。
(2) 需求分析、方案设计及组织领域专家评审;
(3) 编码、调试;
(4) 测试方案设计及验证等;
(5) 定期发通报,知会利益相关人。
(6) 最后检查是否满足出口条件,并交付。
(7) 复盘,总结出改进点优化当前处理流程,类似于PDCA。
第3点:逐步释放自己,为升职做准备。
在做好了第1、2点后,我们需要向更高的目标挑战:升职。主要思路如下:
- 定期做技术储备:无论后续是做管理者还是资深技术专家,技术是跑不掉的。不断学习新技术,拓展知识面,重点是一专多长。
- 不定期展示自己:向上级、周边展示自己的工作成果、输出,扩大影响,逐步形成自己的品牌形象。
- 逐步释放自己:工作越来越顺手后,梳理出可固化、可授权的非关键事务,授权给他人批量处理,或者适当利用工具自动化提高效率。逐步节省出时间投入到更复杂、更高级的事务。
- 开始“越俎代庖”:把自己的本职工作做好后,释放出自己的时间去做“越俎代庖”的事情,一般是直接主管的事情,包含项目管理、周边沟通、进度协调等事务。当你把直接主管的事情都做了的时候,你也就顺理成章的替代他了。即使不能升职,工作能力也肯定上了一个台阶,也利于后续的跳槽加薪。