程序员职业晋升

程序员从初级走向资深的过程中,会面临两个支路。

  • 技术主管
  • 架构师

技术主管

技术主管,有些公司可能又叫「技术经理」,一个人的工作角色中至少有百分之五十以上的时间是花费在管理事务上,那么他的角色才算是一个经理(Manager)。所以技术主管(经理)类似产品经理属于以经理命名却是非经理的角色。

「技术主管」是开发团队中的某位程序员需要对一起创建系统的整个开发团队负责时所承担的角色。通常他既要对最终交付的软件系统负责,另外也会像一个程序员一样去开发实现系统。一个技术主管的 60% ~ 70% 的时间可能花在了开发任务分解分配、开发实践、代码审核和风险识别上,而余下的 30% ~ 40% 的时间则花在为了保障系统按时交付所需的各种计划、协作、沟通、管理上。和团队管理者不同的是,技术主管的大部分管理工作都是针对具体研发任务和技术事务的。

技术主管实际相比团队里的其他程序员对系统的视角更开阔,以更有策略和长远的方式来考虑问题。他们即使拥有比团队里所有其他程序员更高超的开发实现技能,对所有开发任务拥有最强大的实现自信,也需要转变为另一种「借助他人使之实现」的能力和自信,因为技术主管是一个承担更广泛责任的角色,必然导致能够专注有效编码的时间会相比以前减少很多,而这一点正是优秀程序员转变为技术主管的所面临的最大挑战之一。

总结下技术主管的职责要求:

  • 技术职责
    • 研发任务管理
      • 工作量评估
      • 任务分解、分配
      • 代码审核
      • 风险识别
    • 技术能力提升
      • 代码规范制定和推广
      • 生产力工具研发和推广
      • 最佳实践总结和推广
    • 关键代码实现
  • 组织职责
    • 协调沟通
    • 招聘面试
    • 教练指导
    • 复盘总结

架构师

和技术主管一样,架构师也是一个在业界拥有著名的称谓,但在绝大部分公司却不属于一个职位序列。

除了技术主管的技术职责之外,架构师还需要站在更高的纬度去做关于软件系统的抽象和封装。如果技术主管的抽象和封装层次更多考虑的是语言函数、设计模式、代码结构等这一类的事务,那么架构师是站在整体软件系统高度,考虑不同子系统之间的交互关系、技术的合理性、需求的完整性、未来的演进可能性,技术体系发展与组织、产品商业诉求的匹配度。

架构师还承担着在技术团队和非技术团队(例如:产品设计等团队)之间的接口作用,明确产品的边界,勾勒技术蓝图,协调不同技能的技术团队协作,完成最终的软件系统交付。这时架构师的角色就像服务化架构中的 API,定义了协作规范、交互协议和方式,但并不会聚焦在具体的实现上。

架构师的职责要求:

  • 技术职责
    • 继承技术主管的职责
    • 高纬度的系统设计、抽象和封装
    • 产品技术蓝图绘制与关键技术决策
  • 组织职责
    • 继承技术主管的职责
    • 跨技术和非技术团队的接口协作
        • 文章来自:https://juejin.im/post/57e7e1080e3dd9005823ad16
posted @ 2017-07-29 10:24  李大白程序员  阅读(383)  评论(0编辑  收藏  举报