如何做好一个项目

在我想到自己要学会做好项目之前,一直以为做项目只是职场上的一种 “软技能”,

为此还专门读了一本书 《软技能:代码之外的生存指南》。

它教会了我如何像企业一样思考问题。


但从实际着手锻炼自己做项目这几年,我发现这并不是一项可有可无的 “软” 技能,

而是一个能让工程师发挥更大价值的 “硬核” 利器。

所以文本就想总结了一下自己的心得,看看把项目做好有哪些套路可循。

跳出技术思维

首先我们得跳出单一的要解决问题的 “技术思维”,而是想办法看清问题的来龙去脉

问题是怎么来的?谁提出的?涉及到哪些利益相关者?影响面有多大?解决后能创造多少价值?

考虑这些方面并不是 “务虚”,而是把认知提升到 “问题负责人” 的层面上来。


跳出技术思维,做问题的负责人,是开始学做项目的导火索。

因为负责一个问题并不简单,并不是单纯的把任务做完就行了。

还会考虑问题本身是否弄错了?还有哪些相关问题需要解决?成本有多大?整体进度如何?


这像是从 “小孩” 思维到 “成年人” 思维的一种转变。

拿房子装修这件事举例,“小孩” 思维只会考虑自己的房间,“成年人” 则会关注整个装修计划。

“成年人” 不能寄希望于有更年长的长辈来帮忙负责这件事了,自己要全盘负责


当没有更高层级的其他人为问题负责时,我们自己就会变得成熟起来。

问题拆分原理

工作中的事情有大有小,参与的人数也会有多有少。

对于涉及人数比较多的大型问题,找到一个人熟悉所有的工作细节是不可能的。

所以,大型问题就不得不进行划分拆解,每个人只对某一范围的子问题负责。


这种系统化的 “拆分” 方式,会让事项变得有层级结构、有边界

每个子问题的负责人,要想尽办法让问题到自己为止,否则更高层级的问题负责人就没有精力调控了。


子问题也不会无限制的拆分下去,总会拆分到单个人可控的粒度大小。

这就是我们以前用技术思维解决问题时,所接到的工作任务了。


可见,“问题拆分” 是为了对大型问题进行管理,并且拆分方式是人为控制的,

所以如果我们只聚焦在如何完成最低层级的工作任务上,就无法看到原始的大型问题的全貌了。

我们应该总是努力往上看,至少向上看一个层级,知道自己为什么要完成这项工作任务。

项目方方面面

我们想明白了自己要负责更大的事项、也搞清楚了问题是通过拆分方式解决之后,

接下来就可以探讨做项目的技巧了。

做项目是一种 “硬核” 技能,所涉及到的知识点并不比做技术少。


我们可以考虑这样的一个思维模型,将每个人的工作放置在一个 “上中下” 三层结构中。

上层是要满足的业务需求,下层是所能利用的一切技术资源

中间是工作细节,是如何用技术资源实现业务需求,是我们的价值所在。


为了能最大限度的做好工作,需要做的事情就很明显了,

  • 更好的理解业务需求

  • 更好的管理技术资源

  • 最大效率的做好转换工作

(1)如何更好的理解业务需求

首先要知道,需求也是 “人” 提出来的,所以理解业务需求的第一步是先 “找对人”。

这个 “人” 指的并不是产品经理,而是 “利益相关者”。

这里有一个公式:问题 = 预期 - 现状,这个预期只存在于利益相关者的大脑之中。


所以要想理解业务、看清问题的本质,就得先找对人,理清他们的预期到底是什么,

不满足预期的现状给他们造成了哪些 “痛点”。

知道了为什么要做一个项目,项目才能从一个健康的状态开始。


其次,要对业务领域进行更广更深的学习和思考,把自己看做用户只是办法之一。

我们要能对业务模型(或商业逻辑)提出自己的见解,考虑如何才能创造更多的利润

需要我们理解在现有的业务活动中大家是如何赚钱的,这会让我们对利益相关者的疼痛感同身受。

(2)如何更好的管理技术资源

以前我经常将技术称之为手段,现在却认为将它称为 “资源” 更符合商业思维。

因为现实中的技术总是以一种 “只能被有限利用” 的手段而出现的。

我们不能无限制的使用技术,受限于我们的资金,受限于我们的预算


正因为资源是有限的,所以才要进行管控,想办法让它创造更多的价值,用到该用的地方。

有几个维度可供参考。


其一,要对现有的技术情况有所了解,有哪些资源可供使用,涉及到哪些技术要点。

其二,锻炼自己,让自己熟练掌握这些技术要点,做到手到擒来,降低使用成本。

其三,选中合适的技术手段,解决适当规模的问题,点到为止。

(3)如何更大效率的做好转换工作

将技术掌握的足够熟练,对要解决的问题也有足够深入的认识之后,就一定能把项目做好么?

这些还不够,还需要一些任务管理,模块拆分,进度控制,协同合作方面的知识。


  • 任务管理

我们每天都可能在多个任务之间进行切换,如何协调好这些任务,是一项很重要的技能。

每个月我都会创建一个自己所做事项的总览大图,用来跟进所参与的每个任务。

这个图可以让我们对所有进行中的任务有个整体认识,避免迷失在各种细节之中。


  • 模块拆分

对于自己所做的每一个事项,都要对它进行再次拆分,直到能完全掌控为止。

做到胸有成竹、心中有数,做到没有任何人比自己更了解这件事情的全部细节。

完成每件小事需要多少工作量,需要哪些人提供帮助,依赖哪些系统,我们要有把握


  • 进度控制

进度是赶出来、或盯出来的,不是随着时间流逝自己更新的。

所以我们必须具备一种主动推动进度更新的能力,让每件事情 “流动起来”,不要停滞尽早做完。

涉及到合作方的时候,难免一日三催,因为别人并不为我们的项目进度负责。


  • 协同合作

需求是 “人” 提出来的,最终也得由 “人” 来解决。这里的 “人” 指的是 “合作方”。

人与人之间并不是天然的合作关系,反而是竞争关系,

所以,与人合作时得考虑别人能否得到他想要的东西,或有没有无意中伤害了另外一些人的利益。

结语

对于有五年以上工作经验的 “大龄” 员工而言,会做项目是一种必备的技能。

因为再也不能等着别人把事情拆分好再交给自己来做了。

“小孩” 迟早得成长为 “大人”。


其实随着年龄的增长,社会对个人的要求也潜移默化的发生这样的变化,

我们会自己负责自己的健康,甚至还要负责父母儿女的健康,

会自己负责自己的工作和职业发展,而不是交给别人帮我们安排。


从这种意义上来讲,我们就在不断的学习负责更大范围的事情。

学会如何做好一个项目,不仅对工作对生活中的琐事,也能起到帮助作用。

这是一项 “硬核” 技能,让我们更有把握、游刃有余的工作和生活。