iOS 团队管理
团结第一,软件尤其明显, 软件团队不需要个人英雄主义 需要的是团队英雄主义
管理团队
管理团队主要是做什么事情呢?我认为主要是两件事情:招人和带人,所谓的搭班子和带队伍。
招人
招聘这事情必须要团队负责人参与。人才的招聘除了从公开的渠道收取简历、从猎头或同事那里得到推荐以外,还包括定向的找一些自己熟悉的前同事。内推总体来说比较靠谱
带人
人才招进来了,能否顺利融入团队,团队负责人以及这个人的导师非常重要。需要做的事情包括:
- 平时多交流沟通。
- 在新人遇到问题时,热心地解答。
- 引导新人熟悉公司的工作方式
一对一沟通最主要的意义是:可以使得信息从下而上地传递。从而获得在其它渠道不易获得的信息,保证透明。
适合一对一沟通的内容有很多,包括:
- 不成熟的看法
- 迫在眉睫的问题
- 精彩的想法
- 倾诉焦虑
- 抱怨
培养有潜力的人
认清团队成员情况
- 独当一面(应急)
- 打下手辅助(工作量太大)
- 新技术和难点技术研究(学习能力强)
- 效率高(开发速度快)
要确保团队中有这样几种人:
- 有担当的人
- 踏实肯干的人
- 有冲劲儿的人
- 有坚决执行力的人
- 开心果儿
要学会妥协,用最小的代价换更大的收获
要让每个人每天都有事情做
出办公室不谈工作,不分大小
沟通
在项目实施中,需要结合产品沟通,下发到小组内部开发解决需求。可以每周开周会的形式,或者文档方式都可以保持需求消息同步。实时通知到每个人。
- 周会:任务分配、当前进度控制、任务的问题所在、本周计划。
- 邮件:消息同步(上到高管、老板,下到开发、测试)、备份记录。
一些适合用来引导的问题:
- 当前产品还有哪些可以提高的地方?
- 我们部门的最大问题是什么,为什么?
- 如果有,你觉得工作中有哪一点令你感觉不舒服?
- 你觉得谁的工作最优秀,为什么?
- 我们的产品哪方面不尽如人意?
- 我们错失的最大机遇是什么?
- 哪些是我们应该做而没有做的?
- 你自己希望未来在哪些方面能有提高?
- 有什么我能为你做的事情?
一对一沟通的另一个核心要素是要坦诚. 坦诚的沟通方式是:所有问题都真诚的回答,不掩饰问题,也不回避问题。如果沟通双方能够做到坦诚,即使是一个棘手的问题,那么双方也会从「解决问题」的角度,尽量寻找可能的办法。
定期组织一些团队活动,让团队每个人之间建立友谊
什么是领导力
所谓领导力,就是创造这样一个环境,每个人都能在其中发挥出更多的能力。
管理技术
每个平台的技术管理可能都需要更多的「授权」,因为具体做事情的人,会比技术管理者更清楚地了解细节。而对细节的深入了解,才是改进技术架构的方案来源。所以,尽量招靠谱的人,那么在管理技术上的工作就只需要遵守「尽量授权」的原则来就可以了。
框架搭建和技术支持,难点问题解决
在框架搭建中,要将需求文档吃透,最好整理出来一个功能文档,之后可以得到,技术难点和工作量,从而方便人员工作分配。
- 基础框架的搭建
- 公用的代码库封装, 由专门的人负责
- 帮助同事解决充电难点问题突破
- 预研在项目中用到的新技术
- 知识点的储备
Code Review 以及代码质量
- 能让别人看懂的就是好代码
- 代码规范:命名驼峰规则。类名TB前缀
- 使用Code Review保证代码质量规范
- 遵循框架的开发方式,不要打破框架规则。
Code Review 也是一个需要推动的事情,我们使用 Git 和 Gerrit,做到了所有的提交必须 review 通过之后,才能 merge 进代码仓库。另外我们也在 wiki 上规定了详细的代码风格要求。Code Review 如果做得好,不但可以在代码风格上达成一致,还能让新同事从中学习到一些良好的编程习惯,一些潜在的 Bug 也可能在 Code Review 中被发现,实在是值得坚持的事情。
学习新技术
推进 iOS 端的技术分享
学习新技术,是对我们的程序员,一个提升的方向,时刻关注着技术行业的新技术,在我们团队中,可以尝试使用新技术,但是有风险,为了安全起见,建议在初步使用时,不做为正式项目中,而是将已有的项目用新的技术去尝试。等熟练了,可以在新项目中或者后期更新中加上。学习新技术,不能让我们这个团队废弃掉。对吧,我们作为TeamLeader不能让队友停滞不前吧。
自我营销
- 写技术博客
- 发技术微博
相关文档规范的输出
在开发中,会使用一个写账号、地址、记录、版本等等情况,我们需要将其记录下来,整理成一个文档,并保存到公司服务器上。很多公司不注重这个,导致开发人员痛苦。工作起来不知所措。如果日后有人离职,接手的人也会很容易上手,大大提高了效率。时间过久,也会忘记,也会带来不必要的麻烦,如果公司需要申请资质问题,也有更好的交代。
管理业务
业务的管理工作主要是围绕着一个具体要做的技术开发功能点展开。具体包括:
- 任务分解和分配
- 制定大概的开发排期
- 每天了解开发进度
- 讨论和跟进各种具体的技术问题
- 协调一些产品需求变更
- 响应一些市场同事的需求
- 跟进相关功能上线
开会
- 计划会议: 比较合理的安排开发排期、分配任务。
- 每日站会: 每天了解开发进度,会后讨论和跟进各种具体的技术问题
- 评审会议
- 回顾会议
在每周的工作中,管理业务的工作大概花费是 2 天左右。
工作分配
在团队中,每个人的能力不同,侧重点不同,可以根据每个人的特长进行工作划分。当然对应的任务也是不同。
认清团队成员情况
- 独当一面(应急)
- 打下手辅助(工作量太大)
- 新技术和难点技术研究(学习能力强)
- 效率高(开发速度快)
评估项目重要性
- 重要着急
- 重要不着急
- 着急不重要
- 不着急不重要
时间进度评估
时间进度评估,我们将项目划分成一个个的活动,每个活动有先后顺序或者同步进行,可以用图表的形式进行划分。还有资源估算,在资源齐全的情况下,根据图表的进度排期可以得出一个最长时间和最短时间。一般我们回报就回报最长时间。给我们一个容错处理的时间。
需要掌握的能力
- 专业技术能力:这是技术管理者的立身之本,肯定需要不断精进,如果技不如人,是无法服众的。
- 业务理解能力:对业务有正确的理解,甚至能理解到业务的本质需求,才能让技术实现价值。
- 任务分解能力:技术主管承担着开发任务分解分配的职责,如果分解不当,漏掉了一些环节,就会导致任务的延迟、质量的不可控,为项目带来了风险。
- 时间管理能力:管理者需要在有限的时间里高效地管理多种事情,自然就需要提高时间管理能力。
- 团队建设能力:管理者的核心价值就是打造出一支优秀的团队。
- 向上管理能力:向上管理没做好,会影响职业的发展,但切记,向上管理并不是拍上级的马屁。
- 领导力:领导力不同于管理力,不能靠职权,而是靠个人魅力,建议尽早培养。需要明白一点,大部分技术人员更喜欢被“领导”,而不是被“管理”。