对技术 Leader 来讲,团队的开发模式多以项目制或敏捷迭代为主,不论哪种方式,项目管理都是最主要的工作之一。在互联网公司中,日常迭代和重点项目的同步进行几乎成了常态,你也会遇到一些特殊的项目,比如“一号工程(老板项目)”“技改项目(核心系统重写)”“倒排期的重大业务(1111 和 618 的大促、新业务新产品研发)”。这些项目我统称为“大项目”。

大项目因为时间投入大、人员规模大、系统更大,和日常迭代项目在“项目管理”和具体做法上存在很多不同,在成员的协同、事务的推进上也存在困难,而你要具备解决这些困难的能力,有两个原因。

  • 公司基于战略规划等目的,一定会启动大项目,你必须具备处理这类项目的能力,并不断抽象与思考,形成自己的方法论。这是环境对你的要求。

  • 我观察后发现,一些公认出色的同学,往往是在大项目中脱颖而出的(这个因果关系在我所经历的互联网公司中近乎100%)。优秀者一般都会重点参与或主导几次重要的项目来证明自己,进而在未来得到更大的发展空间。

由此可见,大项目在技术工作中很重要,今天我想结合自己的一些经历与思考,具体聊一聊这些特殊的大项目中,你要重点注意什么,怎么去解决问题。

认清异同,做到心中有数

想解决一个问题,先要定义清楚问题,一般而言,要想认清大项目,我建议你以常规项目为参照物,通过对比二者特征总结差异点。一般项目迭代的常规流程如下:

常规项目迭代流程

这个流程并不复杂,大多是自上而下敲定需求内容和优先级,做好时间预估后就进入开发流程,有时受开发周期的影响,会压缩一些环节上的时间(比如方案设计、开发自测等),将大部分时间花在业务逻辑的实现上。在这个常规流程中,技术团队的重心是把执行做到位,你要更关注过程管控,确保系统交付。

大项目与常规项目的核心差异点,我认为主要在于这个“大”字上,你可以从三个方面去理解。

  • 出发点不同,业务期望更大

在大部分互联网公司中,产品研发模式侧重敏捷迭代:项目小步快跑,尽早试错、及时调整,通过逐步完善系统实现量变积累质变。大项目完全相反,不再小步快跑,而是“蓄力憋大招”,希望以此建立公司的竞争优势。

以双十一为例,阿里相关团队要提前 3~5 个月进入双十一专项(最核心的团队半年前就会 ALL IN )。这类项目投入巨大,自然有极高的业务目标,比如双十一和 618 主打 GMV,历史新高的 GMV 映射到产品技术上,就要有更多、更复杂的营销玩法,系统也要有更强的负载能力。

  • 规模不同,复杂度更高

日常迭代项目一般以周为单位,以小组为执行单元,需要跨部门协作的往往是单点的需求(比如某个接口需要大家一起联调)。又因为需求和交付产物拆分得足够小,关联性也不强,即使在迭代周期内遇到一些意外情况(比如开发人员突然短缺、需求紧急变更)也只会让一小部分业务受阻,不会影响全部的项目。

而大项目往往是重新建立一个产品或体系,以月为单位,涉及的人员跨多个部门甚至整个公司(协作者会变成几十甚至上百人)。需求拆分的粒度并不细,并且随着项目推进可能会持续识别到新的需求,这就让整个项目处于动态变化的过程中,增加了系统复杂度和项目难度。

项目规模变大后,会放大很多问题,比如你会发现跨部门沟通协同比系统 Bug 难处理,开会汇报项目进度比写代码更花时间。除此之外,项目往往会倒排期,开发资源永远不够,组织与组织间协同效率低下等问题在大项目中极其常见。

  • 结果评判标准不同,影响更大

在日常迭代项目中,我们往往只关心交付的时间、质量,无法在短期内判定业务上的效果。可对大项目来说,最初立项就是奔着业务效果去的,所以相对而言,它可以容忍项目过程中的一些不顺利,但看重业务目标的达成情况。如果没达成业务目标,会浪费之前投入的资源与时间,从而在竞争中处于劣势,所以很多公司是把自己“折腾”没的。

除了业务层面的宏观影响,项目的交付直接影响相关人的绩效 KPI,也间接影响年终奖、晋升。

总的来说,大项目对你的要求与常规项目有很大不同,除了把项目管理的基本功做到位,还要考虑如何达成业务结果,如何协同人与团队,如何解决各种突发问题。最关键的就是你要脱离系统交付的角色定位,站在团队实现业务结果的角度去考虑问题,认识到系统的交付并不等于项目的结果,要在业务的思考上迈出一大步。

把握关键点,谋定而后动

前面我提到,大项目中系统的交付固然重要,但更关键的还要看项目目的是否达成,关注效果更重于关注交付,这是大项目的核心特征。

以核心系统的重构(重写)项目为例,要想重写,就要投入大量时间,承担极高的系统风险,为什么要重写呢?答案可能是“系统是其他团队开发好交接到手里的,不好维护。”或者“最早的设计实现有问题,必须大改。”这时,你要明确重构到底是目的还是手段?是否一定要做重构?

在我看来,重构除了解决过去的问题,更要预防未来的问题,这样才能平衡好投入产出比。如果单纯考虑解决过去的问题,忽略系统未来的演进方向,过不了多久就会回到原状。不要为了重构而重构,要知道你要的结果是什么。

为了确保大项目成功,关键点应该是制定完备的计划,因为想清楚比做到位更重要。从我的经验来看,大项目的失败存在一个共性的问题:围绕业务结果的思考、计划不足,目标的定义不清晰或没有充分同步给所有相关人,项目同学知其然而不知其所以然。连目标都没有共识,何谈执行到位,项目成功?

所以我认为越是重大的项目,在计划、设计、准备上投入的精力就应该越多,谋定而后动。 我建议你围绕业务、技术、团队等几个方面,把 WHY、WHAT、WHO、HOW 问明白,想清楚。

WHY(项目为什么做)。 很多 Leader 因为习惯做执行和交付,或者觉得即使有不一样的观点也无法改变什么,所以并不热衷去探究项目背后的 WHY。不清楚 WHY,当你要解决困难时,就会缺少核心的逻辑依据,并且你很难识别真正的需求,很难判断业务想要的功能和想解决的问题到底是不是同一件事儿。

WHAT(项目做成什么样)。 WHY 是在确定项目的动机和目标,WHAT 是确定项目的具体形态,简单来说就是要做怎样的产品和系统来实现目标。比如每年的双十一大促,会推出新的玩法和营销活动。如果参与这样的“ Super ”项目,你至少应该搞清楚以下两点。

WHO(哪些人来一起做项目)。 很多问题不仅仅是系统的问题,人也是其中的关键因素,而你需要确定项目的核心人员并罗列项目所有的关联方。

HOW(启动项目后如何做)。 明确了业务目标、结果期望和相关人之后,就进入项目的执行过程,在常规项目管理的基础上,你要注意这样两点。

  • 合理拆分任务(模块)是项目成功的一半:大项目是把最终的效果打包放在一起去设计规划,在执行过程中一定会被分治。关键在于你要等所有人对最终架构达成共识后,再去按照团队、业务领域、具体场景任务等维度拆分任务和模块,以终为始,从最终要的结果来确定如何开始拆分(最终架构的形态应该以产品和系统的全局架构大图为参照)。

  • 保持风险意识,敬畏墨菲定律:大项目在推进过程中极易发生突发情况和概率性事件,你要做好预案,比如项目排期上一定要预留足够的 Buffer,提前确定好紧急处理问题的机制等。

做好充分的准备之后,可以召开立项会,将 WHY、WHAT、WHO、HOW 的信息与思考同步给项目相关人员。通过 Kick Off 会议确定项目的基调、同步必要信息,为项目推进扫清障碍。

如何处理棘手问题

大项目复杂度极高,容易产生很多棘手问题,而处理这些问题的核心原则是:以最终结果为导向,借助所有可能的帮助与资源,在不违背原则的前提下适当平衡与妥协,达成目标。接下来,我就从人和事两个维度分享一些曾经踩过的坑,希望能对你有所启发。

问题一:缺兵少将怎么办?

项目中人不够已经成了一个常态,比如部门内一套核心系统要重写,而团队无法一边持续迭代、一边在规定时间内完成重写,如果所有人 ALL IN 重写,系统迭代要暂停 2~3 个月,业务上无法接受。如果拉长周期,将重写项目持续半年,不仅会增加意外风险,并且很长一段时间内重写项目无法创造价值,会变成团队的负担。

如果你遇到类似的情况,需要在内部腾挪的同时,以项目的价值与收益为本金,借助上级组织的力量从其他团队借人。如果你有过“借人”或“被借”的经历,大概会对其深恶痛绝,因为这种方法会产生很多新问题,比如其他团队的同学不熟悉业务和系统(进入状态的成本很高),或者你们之间没有汇报关系,在工作安排和任务执行上并不通畅。

所以,我并不建议大项目时常通过借人来补充项目成员, 人员的经常借调本身体现的就是权责不匹配,会导致一系列问题。好的方式应该是在组织内,让项目组的跨组织结构成为常态与共识,设计灵活的绩效、考核、汇报体系,让每个人都可以按需灵活地加入项目组。另外项目组人时你要注意以下几点。

  • 当项目开始时,从更大的范围内寻找合适的同学,而不是看你团队有哪些人。

  • 将参与项目的同学在一定时间内的汇报关系和绩效考核汇总到项目组中,由项目负责人根据实际情况重新安排每个人的权责,并确定绩效的绑定关系与比例。

  • 项目交付并不等于结束,所有人的绩效结果都应和项目目标的达成情况紧密且长期关联。

最后,有时不仅要解决“缺兵”的问题,还要认真考虑是否“少将”?要充分考虑当前的人员是否适合做项目的 Owner,以我的经验来看,项目 Owner 几乎决定了项目成败的 80%,如果 Owner 能力不足,你要给予帮助和支持,或者另找他人,乃至上级的帮助,不要在 Owner 的人选上妥协,毕竟项目成败才是关键。

问题二:推不动的到底是人还是事?

你是否有类似的经历:一些功能或模块经常会出现大家都不做,要么抢着做的情况(比如双十一新增的活动玩法会让很多相关团队都做到自己负责的系统中),这会阻塞项目进展。

之前,我有很长的时间是负责公司的订单交易系统,熟悉这个领域的同学肯定知道,订单系统是一个大杂烩,任何业务都想加一个字段到订单表上。最开始,我经常会为了是否让一个数据加入订单系统而和别人争论,因为我担心不干净的设计会拖累系统的稳定性和可维护性。

由这两种情况你会发现,事情推不动的背后跟人和组织有很大关系,处理不当会加剧不同关联方的冲突,你必须处理好类似的问题,我提供给你 3 点建议。

  • 搞明白冲突现象下的利益诉求: 不同关联方产生观点冲突的现象背后其实是利益冲突,你要搞清楚彼此的顾虑。比如我不愿想让某个系统字段落到订单中,主要是考虑到订单系统的可维护以及稳定性,如果你能解决我的顾虑,会容易说服我。

  • 为项目结果适当妥协: 在很多情况下,我们无法做出完美的方案,可能就是要在系统内通过很糟糕的实现去实现需求。项目没有 100% 完美,抓住核心原则不放弃,可控部分适当妥协换取项目前进是很好的策略。

  • 通过项目地位和决策机制推动项目: 大项目往往是公司重大战略下的产物,一般情况下,不会有人去反对公司的某项既定战略,而你可以通过大项目的重要性在体系内争取更多的资源和帮助。如果你面临一些冲突,要学会利用决策机制,通过更高级别成员的沟通决策拿到解决方案。

问题三:一定会有项目变更吗?

对你来说,最难处理的就是突如其来的变化,变化意味着要调整之前的计划,又会出现新的困难与问题。常见的变化往往有两种:

  • 项目演进过程中识别出之前未能识别或考虑缺失的点,导致方案需要调整。

  • 出自老板的需求变更,很多情况下都是要新增内容。

项目变化和老板 CR 之所以难处理就在于它会打乱项目原本的计划节奏,本来一环扣一环的时间安排、人力安排、任务与模块安排都要重新编排、组合、解决冲突,单点的风险通过链路传递到整个项目链路上,产生了极强的联动效应。

我给你的建议是保持平常心,几乎所有的项目都会遇到类似的情况,出现负面情绪只会增加你解决问题的难度,你要做好两点。

  • 由外至内解决,先从优先级调整、新增资源、调整排期入手,不行就考虑压缩时间、调整方案乃至加班。做好 ROI 和风险的权衡,不要为了解决 A 问题制造更难解决的 B 问题。

  • 统一变更管理,所有的变更都应该统一管理、审核、评估、记录最后广播给项目全员,确保大家信息一致,对终点的认识没有误差。

另外分享一个我自己的经验,如果你被老板频繁的变更所困扰,试着多做汇报,让他对项目的进展与正在解决的困难有更直观的感受,这样他对新变化带来的不确定性风险会有更强的同理心。

小结

大项目是技术 Leader 的试炼场,不仅考验你的技术能力,还会从产品、业务、沟通、事务推进等多方面考验其综合能力。而经历过大项目毒打的同学在处理别的问题时,会更加从容。

所以,如果你在实际的工作中,有机会参与或主导类似的项目大可放手一试,这样会极大提高你解决问题的能力。今天这一讲我想强调这样三个重点:

  • 驾驭大项目是你的试金石和分水岭,对自己职业规划有一定要求的同学一定不要放过打磨修炼的机会。

  • 在大项目中,往往人的问题会比技术与系统的问题难解决,因为与人相关的问题未必完全理性和逻辑,那么此时你也不妨看看感性的沟通与交流是不是有更好的效果。

  • 时刻牢记你将项目按时上线没有故障只是做到了60分,更关键的是业务效果,所以除了盯紧开发过程外,还要在最开始的业务与产品设计阶段就投身其中。

留个作业:在你过往的大项目经历中,有哪些让你印象深刻的困难与问题,你是如何解决它们的,分享出来吧,我们下一讲见。


精选评论

**士:

老师讲的很有启发,本节的PPT课件可以分享出来吗

编辑回复:

【持续更新】成为会带团队的技术人
链接: https://pan.baidu.com/s/1_LTQOlZs5cilJSqVfOZmfQ 提取码: xy29

**士:

网盘里边课件缺第5讲,而且第9讲后面就没更新课件了,可以更新发出吗

编辑回复:

抱歉,小编跟负责课件上传的小伙伴同步了一下问题,现在已经把课程补充完毕啦,感谢提出意见:【成为会带团队的技术人】 已经更新到15讲了
链接: https://pan.baidu.com/s/1BdFCyJ_uhmDAJ8EMhquALQ 提取码: qnc8

**学:

大项目的业务很重要,这个是首要目标。其次,要用互联网的思维去达成目标,小步迭代,逐渐完成最终的目标。最后沟通能力比技术能力更重要。

**士:

困难与问题:数据开发中缺少数据源,数据质量偏低。针对数据源问题,技术方面:1、与业务方确定缺少数据源的格式(结构化、非结构化和半结构化);2、与业务方确定缺少数据源的存储服务(关系型,非关系型或离线数据);3、针对不同的数据源格式及存储进行数据同步etl;流程方面,定时跟进数据源问题,做到每天同步状态,推进业务进展。针对数据质量问题,从数据量、主键、离散值、汇总值、业务规则和逻辑规则方面进行处理,首先进行数据清洗与异常数据过滤,然后进行数据表和数据字段层面进行数据质量监控,最后根据数据产出时间进行及时性优化。

**0691:

老板CR是什么意思?

讲师回复:

需求变更

**9360:

课程太棒了。 继续淦

讲师回复:

感谢支持

**升:

老师说的太好了,基本都是在大项目中遇到的,深有体会

讲师回复:

谢谢支持

成为会带团队的技术人 大项目:把握关键点,谋定而后动相关推荐

  1. 成为会带团队的技术人 找到人:招聘是 Leader 的责任,不是 HR 的

    从今天开始,我会用三讲的时间和你聊一聊管理的最后一板斧:招聘与解聘.在招聘与解聘中,总共有三个动作:找到人.能落地和升级汰换,今天咱们就先来学习怎么才能找到人. 过去几年,招聘一直在我的工作中占据很大 ...

  2. 成为会带团队的技术人 知人善用:借事修人,借人成事

    上一讲,我带你学习了建机制的相关内容,如果想将机制落地,你首先要建立足够的认知,明确机制的作用以及好机制具备的三个必要条件:规则统一.简单有效便于增减.对整体结果有利.现在,我们通过"沟通& ...

  3. 成为会带团队的技术人 架构设计:治理好系统复杂度才最务实

    上一讲我们以架构之名聊了一下理解业务这件事儿,这一讲我想进一步来聊一聊日常工作中架构工作的核心关注点是什么? 我是在接触分布式开发之后,才对"架构"有了概念,从三高(高可用.高性能 ...

  4. 成为会带团队的技术人 稳定性(二):可用性治理的三个关键要点

    上一讲我们学习了事故的应急和复盘,但"预防胜于治疗",所以今天我想从事故预防的角度和你聊一聊可用性治理的关键动作. 可能你听过这样一句俗语:只有千日做贼,没有千日防贼.但是在系统稳 ...

  5. 成为会带团队的技术人 稳定性(一):如何应对事故并做好复盘?

    这几年,我在饿了么和阿里本地生活经历了业务快速发展的黄金时期,也遇到了一些令人"出乎意料"的事故. 2018 年的 915 事故,应该是这几年最严重的一次宕机,直接导致技术组织调整 ...

  6. 成为会带团队的技术人 升级汰换:“心要慈,刀要快”

    今天我想和你聊一聊"招聘与解聘"中最后一个动作:升级汰换. 升级汰换直白点说就是"开人",一个团队如果从来没有人"被离开",就好像人生了病但 ...

  7. 祝贺|蚂蚁金服技术人许寄入选2018 MIT TR 35全球榜单

    MIT TR 35(MIT Technology Review 35 Innovators Under 35)--"全球 35 位 35 岁以下科技创新青年"榜单,是全球最权威的青 ...

  8. 『津津乐道播客』#065. 为什么受伤的总是技术人?

    主播 / 朱峰.秀恩.姝琦.嘉亮 音乐 / 姝琦 后期 / 朱峰 过去的一年中,关于技术人员,比如程序员.开发者.技术从业者的不幸消息有很多,特别是九月份的苏享茂事件,引起了大众广泛的关注,年底则又有 ...

  9. 为什么受伤的总是技术人?

    主播 / 朱峰.秀恩.姝琦.嘉亮 音乐 / 姝琦 后期 / 朱峰 内容简介: 过去的一年中,关于技术人员,比如程序员.开发者.技术从业者的不幸消息有很多,特别是九月份的苏享茂事件,引起了大众广泛的关注 ...

  10. 35岁技术人如何转型做管理?阿里高级算法专家公开10大思考

    简介: 35岁左右对工程师而言是个不同寻常的年龄段.技术人有可能面临人生中的转型:从纯技术岗转向管理岗.也将面临诸多新的挑战,关于组建团队.领导以及KPI设置等.本文将讲述阿里资深技术leader张荣 ...

最新文章

  1. 据说这是大多数人【减肥】的真实写照
  2. docker portainer_Docker入门详解(十一) 图形Portainer
  3. CVPR 2014 ObjectnessBING 原文翻译
  4. 寻根求源 U盘的9个典型故障
  5. 如何在jupyter notebook中运行markdown文件(脚本、代码)
  6. SQL Server中把查询出来的结果重新编号作为一列
  7. cf修改游戏客户端是什么意思_微信codm什么意思 微信codm 小飞机 落!什么意思[多图]-游戏攻略...
  8. 如何使用SetTimer MFC 够详细
  9. C++/C--文件及函数注释【转载】
  10. 08.QT中sqlite3数据库基本操作
  11. python import 类如何捕获clrt c_Python3 与 C# 扩展之~基础衍生
  12. VS调用tensorflow模型记录
  13. 列表和字典操作的时间复杂度
  14. Json类型的转化 及 JsonArray,JsonObject详解
  15. Oracle优化新常态 前半生
  16. 【4G模块】-有方科技Neoway-N720
  17. cadence ETS安装过程
  18. java get set写法_java get set方法的使用
  19. 一起学 WebGL:图元的类型
  20. 美国有超级计算机的学校,美国计算机排名 - 目前最牛的超级计算机前五名分别是?...

热门文章

  1. ssms mysql_SQL Server Management Studio(SSMS)复制数据库的方法
  2. 如何给PDF文件加密和解密?
  3. 淘宝直通车现在每天烧多少钱,500元直通车能开多久?
  4. Java教程:Java分割字符串(spilt())
  5. Nvidia xavier NX通过flash.sh烧录linux系统
  6. 基于Python实现的合同管理系统设计
  7. c语言用函数实现二分查找
  8. 类似vmlogin浏览器的有哪些?vmlogin,AdsPower,候鸟浏览器等防关联浏览器中同类型软件最强是哪一个?防关联指纹浏览器哪个好?
  9. 我总结的30条架构原则~
  10. 萝卜小铺和店主们的故事(五)