数据科学家:大器晚成,是软件工程师成功的唯一捷径

结合自身16年的软件研发经验,谈谈程序员在职业规划中不同阶段的职责和责任,欢迎大家批评指正。

  • 程序员(0-3年)

    这个角色职责是把需求或产品实现为用户可用的软件产品。此职位为执行级别。另外因为经验较少,一般需要求助别人,此阶段大概要经历3年,程序员的职责如下:

  1、负责公司运营系统的设计与开发工作

  2、运营数据处理和分析

  • 高级程序员(3-5年以上)

    高级程序员就是我们说的工程师。此时你的能力开始增强,这与你平时的学习积累是分不开的,开始注重代码的质量,能够写出工业级的代码。你的经验可胜任模块级的系统设计,承担完成较为复杂的技术,能有效的自我管理,有帮助别人快速解决问题的能力。此阶段你需要经历到7、8年左右的体验,中间要经历一段深刻自我历练的过程。一般人在5年前后遇到一个门槛,碰到天花板,或者你打心眼里不在喜欢编程,可尝试转为其它角色,如产品经理,售前售后支持等岗位,也不失为好选择。当我们熬过这段儿,就会渐入佳境。高级程序员定义软件功能、做开发计划推进和管理。可以带几个帮手把产品规划的功能实现,你是团队中的骨干,遇到难题也是你亲自攻艰克难。一个高级程序员,他的职责很清晰:

  1、负责产品核心复杂功能的方案设计、编码实现

  2、负责疑难问题分析诊断、攻关解决

  • 项目经理(5-8年以上)

    人生就是不断上升的过程,你已经到达经理的层次了。如今的你,需要不断提高领导力,需要定期召开团队会议讨论问题。首先我们要更加自信,在工作中显示自己的功力,给讲话增添力量。如:“本次项目虽然有很大的困难,我们也需苦战到底。项目经理有时候也可能叫系统分析员,一些小公司可能会整个公司或者部门有一个技术经理。项目经理承担的角色主要是系统分析、架构搭建、系统构建、代码走查等工作,对于项目经理来说,着重于技术方面,你需要知道某种功能用哪些技术合适,需要知道某项功能需要多长的开发时间等。同时,项目经理也应该承担提高团队整体技术水平的工作。你需要和大家站在一起,因为人们也都有解决问题的能力,更需要有以下的能力与责任:

  1、任务管理:开发工作量评估、定立开发流程、分配和追踪开发任务

  2、质量管理:代码review、开发风险判断/报告/协调解决

  3、效率提升:代码底层研发和培训、最佳代码实践规范总结与推广、自动化生产工具、自动化部署工具

  4、技术能力提升:招聘面试、试题主拟、新人指导、项目复盘与改进

  • 技术总监(5-8年以上)

    如果一个研发团队超过20人,有多条产品线或业务量很大,这时已经有多个技术经理在负责每个业务,这时需要一位技术总监。

技术总监的职责:

  1、组建平台研发部,与项目经理共建软件公共平台,方便各条产品业务线研发。

2、通过技术平台、通过高一层的职权,管理和协调公司各个部门与本部门各条线。现在每个产品线都应该有合格的技术经理和高级程序员。

  • 首席架构师(7-10年以上)

    需要分离管理族和专业族了。你会发现,这个阶段你的研发团队已经超过100来人了,需要有人专注来做架构规划、设计、日常维护。不能让技术总监和项目经理又做管理又做技术一股脑都扔给他们,你就等着总结果产出。这是不对的。需要从技术总监和项目经理身上剥离职责了。让技术总监和项目经理偏项目管理(管理族),把各个模块之间的架构设计工作,独立出一个岗位,就是架构师,来负责。每个产品线都有架构师,在技术平台部门也有技术平台的架构师。那么,技术平台和业务产品线的架构互动,就是首席架构师在衔接了。让技术平台架构能够和产品业务系统的架构互相促进和支撑,就是首席架构师的份内之事。架构师的职责是:

1、架构分析:从功能性需求中识别出需要增加的非功能性需求,好满足性能、可扩展、解耦/集成、安全、可运维、高可用、易部署、易更新。并且识别完非功能型需求,还要做技术选型、技术架构风险识别、技术实现工作量评估

2、架构设计与实现:非功能性模块的架构设计、接口设计、代码实现。所以需要的是有代码实现能力还要有架构思维的工程师,不需要画PPT的工程师

3、业务架构设计与实现:需要对跨系统的接口进行识别、实现、维护,需要对能写成公共代码类库的进行分析、识别、接口设计、实现、变更维护。

4、重构:架构师需要经常做问题分析、非模板性和公共类库代码检查,以发现代码腐烂程度,以发现还有哪些代码没有做很好的架构与精心的代码设计。

  • CTO(10-15年以上)

    首席技术官,英文名 Chief Technology Officer,是技术和业务融合的领袖。国内与国外对CTO的定义有些许不同。美国对CTO的职责是设计公司三年内的产品和服务的技术发展方向,较少参与技术团队的日常管理和项目管理事务。基本是前瞻性的策略思维,比如Google的谢尔盖.布林一直保持对技术方向的敏锐,比如无人驾驶汽车,人工智能等走向。

    在国内,CTO大部分则偏重于研发管理,相当于技术总监的Plus版。它相当于美国互联网公司常设的工程师副总裁+CTO的工作并集。但总体事情比美国的CTO层次低,大部分CTO的是领导技术团队开发各类产品,解决技术问题,管理不同的项目,排期交付。还有一部分的职能类似于首席架构师或总工程师,作为技术侧的权威,为下一步的发展方向 做研究探讨,为CEO提供建设型决定参考。

CTO的职责如下列表:

  1、技术愿景:识别新技术、利用新技术、整合新技术、驱动新技术。驱动商业战略、驱动产品战略

  2、技术架构:建立主营业务中的技术架构与实施模式,建立技术体系标准

  3、流程制度:建立高质量,高效率的技术团队。健全的项目管理体系;完善的员工能力发展体系

  4、知识培训:建立以研发内容为主的知识库管理体系、技术分享与技术文化的体系

  5、业务支撑:与其它部门的沟通协作,如HR、市场、BD、财务、客服等提供技术管理接口;在产品技术层面能够领先于业内同行

  6、影响力:在公司内部与行业中具备一定影响力与口碑

  7、视野&格局&执行力:看待问题全面,具有强大的学习力,具备技术前瞻力,敏锐的市场嗅觉,战略落地的能力

总结一下

每个人的成长路径都不同,但无一不是兴趣与使命驱动——无论你是程序员,项目经理,还是在 CTO 的角色。大家一起发挥潜力,去迎接不期而遇的挑战与胜利后的美妙风光。

 

你可能感兴趣的:(技术管理)