开发到了一定阶段,都会面临继续专研技术或者做技术管理的两条路,但是不管多钻研技术,总是有些工作需要带领小团队一起完成。最近也是头疼没有一套方法论来支撑工作。节奏和方法都杂乱无章,需要思考的点太多没有主次。技术需要up,同样的管理的方法论也许要自我充电。
放张老婆的图镇楼
技术领导的核心竞争力
不仅要把控技术、组织协调能力、主观能动性、推动项目组成员一起成长,保证团队的稳定性。
技术管理者的发展方向
某一领域的技术深度,拥有技术广度,通过自己的技术能力带领更多队员一起进步,目前都会遇到这几个情况
1)队员工作没有自己做得好,花时间去沟通还不如自己去做。
2)感觉自己的技术在退化,长期不写代码觉得自己没有价值。
3)发现自己不懂的东西越来越多,觉得把管理做好不太容易。
4)上面有领导催活要项目进度,下面有开发要方案提供技术支持,需要评估客户的项目难度和耗时,并对需求进行扯皮,夹在中间心累。
需要提升沟通能力,个人定位能力(是否需要分配代码量给自己,或者充电),技术+管理双向充电。
技术还是王道
为什么对自己没有信心和一丢丢害怕,究其根本就是不了解,对技术、人员、项目的不了解,其中技术占有很大部分。只有拥有了相当的技术广度和深度才能给团队的技术指明方向,在团队成员遇到难题时能加以引导。
工作品质
从说话做事就能看得出工作品质如何,要透露出工作的专业性。分析->执行->总结。才会让大家觉得这这个人很专业,分析、执行力一气呵成。
1、成熟
重视承诺,不拍脑袋,懂得为人处世。任何不清楚的事情不能拍板太快。比如评估工作量和项目进度,若有未知风险或者模糊之处不要马上评估,汇报时要加上如果xx是用xxx方法来做的前提。
2、勇敢
作为团队负责人,遇到困难时,不必要惧怕外在的威胁,团队成员都在看着你,不能懦弱要勇敢。当团队遇到问题了要主动站出来承担责任勇于接受挑战。你就是成员的门面一堵墙,要自信,一旦有了决策,就要落实,不必要拖泥带水(如果自己都不确定,成员就会觉得这次做了会白做?所以决策时要再三确认,一旦确认就去做)
3、勤奋
在软件行业。没有在专业上的持续学习和成长是不会成功的。技术变革如此迅速,如果不坚持学习很快就会被淘汰。
4 逻辑能力
为什么有的程序员能够很快解决Bug,有的则不能?首先,你需要对整个事情的全局情况有深入的了解。知识储备够了才能迅速找到问题所在。有时评审方案时,可能稍不注意就被下属的错误逻辑给“忽悠”了。一个人的逻辑能力属于软实力,它是决定你是否可以承担团队领导职责的关键因素。
5 一线作战能力
无论多么忙,都要不断地抽时间和大家一起讨论架构、业务流程、技术难点、技术方向,这是你的职责,而不是让团队处于流浪状态。简而言之,既然你直接管理团队,就要以身作则,让大家看到这个团队和项目是有人在积极推进的。
管理人才的决策能力
1 会议能力
抓住会议主干线,推动项目进程,解决项目堵塞点,报出项目风险。当下属讨论的细节层次不在议题范围内时,要及时打断,会后在谈。并总结会议的重点,指定推进。时刻抓住会议的目的,保证高效。如果是和业务开会则应在会后发出纪要避免扯皮。
2 判断能力
方案需要决策时,要克服从众心理,要有自己的底线(比如编码规范)。快速的决策通常错误率较高。决策的目标应该是明确的,决策的结论应该是简单而清晰的。
3 自信心
面对困难,不要去逃避,方法总比困难多。培养自己的责任感和义务感,跳出个人的小天地,如此你的自信才能坚实可靠。另外平时交往注意要选择那些有自信心、敢作敢为的人,时间长了,看得多了,你必然会受到积极的影响。
技术调研
1)这些技术分别是什么?
2)技术调研方案、用例分别是什么?
3)各个技术或框架之间的区别是什么?
4)各个技术在通用场景下的优缺点是什么?
5)各个技术在用户提出的特定业务场景下的优缺点是什么?
6)根据得出的测试数据,为什么会有这样的结果?
介入新团队项目开发
- 人员组成,开发能力,周期评估
- 核心功能流程图理解
- 了解历史来源,上下游影响,各个模块的关联关系
- 需要定位增加的需求风险点,提前调研关联影响
- 项目核心价值,定位。走什么方向能体现出的团队的价值(继续做业务需求或者提升现有性能),业务提的需求的实际应用型
- 不合理的设计能否在版本内进行重构
版本约定
1)每个项目都应该有自己的版本和时间点,这样对于团队每个人来说才会有个标杆是否需要加班完成。
2)开发、测试、SIT、UAT、生产演练都需要明确。火车一旦启动,就不给插队。
架构约定
这个又是一件费脑袋的事情,我们需要架构师来回答以下问题,当我们启动项目时都应该明确。
❑ 我们这个系统的边界是什么?
❑ 我们系统由哪几部分组成?
❑ 各模块之间怎么通信?
❑ 选择什么样的基础技术?
❑ 为什么要这样选择?架构设计是否能满足业务需求?
❑ 技术方案未来会遭遇哪些坑?
❑ 我们的备选方案有哪些?
❑ 从技术角度这个应用将来如何持续扩展功能?
工作中优秀的同事复盘
不愧是管理大厂,管理方式一套套的,首先要有想法+主人翁精神+有能力,然后要有高执行力,并且严格要求自己和他人。
1. 勇于培训
首先自己的技能需要到一定深度,可以根据团队大部分人的薄弱点进行专项培训,比如普遍git用的不够6,那就急需培训。或者可以收集团队成员所需要的知识进行分享。轮流分享,增加团队的紧密性。
2. 制定开发规范流程并严格执行
- 比如git提交时,必须写清相关的业务意义,不能张冠李戴。
- 业务不能直接指挥开发进行修改,需要通知leader,评估改动风险和方案可行性,避免失控
- 提交给自己的代码,作为commiter,需要根据重构等方面提出建设性建议。
3. codereview很重要!
- 制定编码规范
- 定时定期全组进行此版本的code review,增强代码质量和编写高可用代码的意识
- 归档错误案例,不在同一个坑上跌倒
4. 概要设计评审
- 确定方案的可行性和设计,在不合理的概设中提出建议。让人信服,哇 这人真厉害,羊哥牛逼。
- 关联点,测试用例设计。模块中很多都是互相影响的,这块需要知会到测试进行合理回归