角色是规定一个人活动的特定范围和与人的地位相适应的权利义务和行为规范,是组织对一个处于特定地位的人的行为期待。角色定位需要认清自己以及竞争者的位置和职责,正视自我,同时以强烈的职业意识给自身的事业和未来发展确定一个方向。我们从所从事的活动、定位和所需技能对技术管理者这一角色进行全面剖析。
1.技术管理者的活动
技术管理者是负责规划、设计和实现技术能力,从而完成组织战略和运营目标的人。通常,这个角色需要完成以下几项活动:
(1)技术预测
技术预测的需求来自于行业和业务的快速发展。根据业界成熟的技术实现体系,能够在一定程度上预判未来几年的技术发展趋势,是技术推动和反哺产品演进的一个重要方面。当然,技术预测的前提是对当前所从事行业的深入理解,能够设计和实现业务的技术解决方案。
(2)产品研发
产品研发同样关注于业务体系,通过对业务体系的了解建立业务架构,并发挥技术在实现业务决策上的能动性。另一方面,明确产品发展策略,通过建立技术平台推动产品平台和产品线,并基于项目化手段实现产品研发,这点可以说是作为技术管理者的主要工作。
(3)技术创新
技术创新存在两大主要分类,分别是内部创新和外部创新。旧技术的新应用以及现有技术的自我演变是内部创新的主要方式,而对于外部创新,通过技术合作和跨业创新同样可以达到技术创新的目的。技术管理者无疑是技术创新的主要推手。
(4)技术标准
技术标准的范畴可以很广,在软件行业,现有技术的应用方式、软件的交付质量、版本的发布模式等都可以算是组织级别技术标准的一部分。技术标准的制定需要同时考虑技术、管理和组织等几方面因素,技术管理者需要根据自身团队的特点追求适合当前环境的标准化体系。
(5)过程建设
软件开发是一个系统工程,设计软件工程、项目管理、系统交付等多个维度,也需要对软件过程模型进行裁剪,并应用过程改进思想和工程实践不断推动过程体系的合理化发展。在现代软件开发过程中,技术管理者需要建立合适的、轻量级的过程体系并实现过程资产建设。
(6)组织交流
在一个组织、尤其是大型组织中,技术团队与市场、销售、产品、运营一样同属于组织的一个组成部门,很难说技术可以独立于其他团队进行自我发展,因为技术服务于公司的战略目标、服务于业务和产品发展需求。从这个角度讲,技术在组织中的地位通常不会太高。通过各个团队之间的有效沟通和交流,可以让其他团队更好的认识以及理解技术团队的工作方式和能力范畴,避免交流不畅所形成的团队壁垒。另一方面,技术团队内部同样需要交流,技术分享和培训、绩效沟通等也属于这一范畴。
(7)日常管理
除去以上六点主要工作内容,技术管理者的活动还包含各种日常事务的处理。日常管理的接口可以是对外、对内,也可以是对上、对下,同时针对技术管理者自身的自我管理也是属于日常管理的一部分。
2.技术管理者的分类
(1)管理者角色
管理学大师亨利·明茨伯格(Henry Mintzberg)研究发现管理者扮演着十种角色,这十种角色可被归入三大类:人际角色、信息角色和决策角色。人际角色归因于管理者的正式权利,管理者所扮演的三种人际角色是代表人角色、领导者角色和联络者角色。在信息角色中,管理者负责确保和其一起工作的人能够得到足够的信息。而在决策角色中,管理者处理信息并得出结论,管理者负责做出决策,并分配资源以保证决策方案的实施。管理者十大角色分类详细描述参考表1-2。
类型
(2)技术管理者的角色分类
技术管理者显然符合上文中的通用管理者的角色和定位,但结合软件行业的特征,我们发现还是可以把技术管理者所扮演的角色进行分类,这些分类实际上也是对技术管理者角色的一些认知,包括但不限于:
规划型
明确公司整体战略,能根据整体战略目标分解到技术团队的职责和目标,并根据目标制定具体的执行计划和实施方法。
执行型
对于已经确定的目标,明确团队及各岗位成员的职责,并传递给每一位执行者,研发执行技术标准,并能履行岗位职责。
问题解决型
针对执行层上报或通过自身观察所得到的问题,分析、查找问题根源,解决方案并申请所需要的资源。
监督型
不断建立和完善技术研发体系,严格执行研发过程。对过程和结果提出自身的理解和判断,从事情出发追求结果。
领导型
具备良好的领导风格和个人魅力,通过自身思维影响并决定团队的思维,通过自身的风格影响并决定团队的风格。
教练型
促进团队成员知识和工作能力的不断提升,善于针对每个人以及整个团队找到瓶颈所在,并培养团队成员发现问题和解决问题的能力。
通常,一个技术管理者会同时属于上述几种分类中的多种或全部。本书所阐述的技术管理者角色从也会同时包含所有这些分类所具备的基本属性。
3.技术管理者的技能
做为一名合格的技术管理者,完备的技术领域知识是必备的技能,同时也应该包括在1.1.2节技术管理演进理论中提到过的各个不同阶段所应具备的各项技能。我们对这些技能进行再次分类和梳理,可以抽象成以下三个方面:
(1)业务和行业理解能力
在软件应用系统开发过程中,业务架构驱动技术架构现象非常普遍。提升业务领域知识和提升技术领域知识一样,都对产品研发有直接的影响。从这个角度讲,技术管理者同样需要深入特定行业和业务体系,具备从业务到技术的正向跨领域的技能。
(2)技术实现和创新能力
技术管理者管理的是技术,技术可以分成技术应用和技术创新两种主要方式。技术管理者在应用主流的技术体系之外,还需要考虑结合业务和产品的技术创新。从这个角度讲,技术管理者需要从技术反哺业务,具备从技术到业务的反向跨领域的技能。
(3)组织管理能力
无论是传统型软件还是互联网应用,当前的开发模式已不再崇尚靠能力出众的个人来决定系统的产出,而是要靠团队。技术管理面临着项目计划同步、第三方服务集成、外部团队协作等团队性活动需求,很多场景下管理者需要与内部团队、外部团队统一协作才能设计出适合业务发展方向的产品。从这个角度讲,技术管理者应该具备跨越多个团队的技能。
如果对文章感兴趣,可以关注我的微信公众号:程序员向架构师转型,或扫描下面的二维码。
我出版了《系统架构设计:程序员向架构师转型之路》、《向技术管理者转型:软件开发人员跨越行业、技术、管理的转型思维与实践》、《微服务设计原理与架构》、《微服务架构实战》等书籍,并翻译有《深入RabbitMQ》和《Spring5响应式编程实战》,欢迎交流。