我所理解的项目经理

以前的公司之前是没有项目经理的,只有产品经理,或者说,产品经理和项目经理是同一个人。

去年年底入职的这家公司,新项目的人员分配是这样的:包括项目经理和我在内的4个后端工程师(PHPer)都是新招来的。

从12月初到现在的3月初,不到3个月的时间(中间包括春节)项目现在进度终于接近尾声了,天天加班的日子应该算是熬到头了。

这期间我也算是对项目经理工作职位有了一定的了解,我认为一个项目的核心关键人物就是项目经理。

产品经理只负责整理需求,然后给出需求文档还有原型图。

开发工程师负责写功能模块,项目经理就是来分配任务和把控时间,可能会随身调整项目进度的人。

因为项目时间比较紧急,项目经理也参与了写代码。

乔尔测试

乔尔测试是 Joel Spolsky 在2000年8月提出的一个超简单的软件团队质量测试方法(出自我春节看的《软件随想录 卷一》):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
1. 你们用源码管理系统吗?
2. 你们能一键编译么?
3. 你们做每日编译么?
4. 你们有bug数据库么?
5. 你们在写新代码前修改以前的bug吗?
6. 你们的进度表是最新的么?
7. 你们有软件规格说明书么?
8. 程序员的工作环境安静吗?
9. 你们使用了能买到的最好工具吗?
10. 你们有测试人员吗?
11. 你们面试时会要求应聘人员写代码吗?
12. 你们做过走廊可用性测试吗?

这篇文章距离现在已经快有16年了,但是有几条我认为对现在依然有用。(在这里我不得不佩服作者的思想,中文的世界真是太落后了)

这个测试不一定是100%有效,但是确实能看出一些情况。按照这三个月的项目经验,让我来一一回答这个他的问题:

你们用源码管理系统吗?

我们用的是 git。这个算通过了,但是比较坑爹的是团队里面不是每个人都会 git,但是身为一个项目经理你一定要玩转 git。

你们能一键编译么?

我们是 PHP,没有编译这一说,但是按照现在的这个尿性,我们肯定是不会一键 XX 的。

你们做每日编译么?

也没有这一说,但是我会每天下班之前把最新的代码 push 上去。

你们有bug数据库么?

有,用的是明道,公司一直在用这个,内部搭建的,凑合着用吧。

你们在写新代码前修改以前的 bug 吗?

不修改,我们都是先写功能最后在统一测试。但是现在是一个特殊时期,因为现在项目是从0到1的过程,以后肯定会先修改以前的 bug 在写新代码的。

你们的进度表是最新的么?

这个我认为是最坑爹的了,刚开始项目经理用软件画甘特图规划项目来着,但是真正开始写项目的时候,都没按照那个来,而且他画那个图我只 在我们开会的时候看过一次。所以我们从开始写代码之后就没有什么项目进度表了,也有可能项目经理自己有一份文档在更新吧,反正项目组的其他 成员是不知道项目进度的,也不知道什么功能做了什么功能没做,只知道个大概。

技术总监也老是在群里催进度啊。

你们有软件规格说明书么?

这个还是靠新来的产品总监给力,写了比较详细的需求文档。大部分功能都写了,也算比较详细,应该有80%了。

说实话这算是第一次看到需求文档的详细设计,之前的产品经理能给你画原型就不错了。

程序员的工作环境安静吗?

这个还算可以吧,办公室是大客厅,上班的时候自己待上耳机基本上就可以集中精力了,当然肯定是比不上晚上加班的安静。

你们使用了能买到的最好工具吗?

公司 Mac 都不给配置,双显示器都没有,主机配置倒是还可以,只能说一般,软件就不说了,在中国大家都懂的。

你们有测试人员吗?

这个有,但是都是功能性的测试,压力测试什么的还是考自己吧。

你们面试时会要求应聘人员写代码吗?

这个我们公司倒是没有,其实我也比较怕面试写代码,因为平常考 IDE 写代码依赖性太强了,很多东西记不住。

你们做过走廊可用性测试吗?

走廊可用性测试是指,你随便从走廊抓过来一个路人,然后要求他们试用你刚写的程序。如果你这样测试了5个人,你能发现产品在易用性方面95%的问题。

答案是没有,但是公司老板对交互这块倒是很看重。

项目遇到的问题

  • 前期需求讨论、整理和确定花了不少时间,让团队每个人都能快速理解需求不是一个简单的事情。
  • 项目时间比较紧急,项目组人员都是新人,大家都是工作过几年的程序员了,每个人都有自己的一套编程风格了,但是大家都在赶功能, 前期可能还会帮助那些没有按照规范写代码的同事修改一下代码,后面我也懒得管了,只要功能保证就可以了,所以这次的项目代码风格会有好几套。
  • 没有进度表。之前我有介绍项目经理使用一些团队协作平台,不知道是不会用还是是没时间用,反正没用起来,我一个人用也没有用。
  • 前端工程师缺人还搞前后端分离,所以现在项目是一个 restful 项目和一个 PHP 调用 restful 的项目,所以你会发现我们项目进度比较慢也有一部分是这个原因,有时候你会重复写两套代码。 我觉得这样的架构对以后维护来说是一个坑。
  • 团队中有2个 PHPer (一共是4个 PHPer,后来又加一个 PHPer)不会使用我们选择的 Yii2 框架。项目这么急,是不会给你多少时间学习框架的。

如果我来做项目经理/产品经理

  • 首先我认为一个项目经理的技术一定要过硬才行,就目前我的技术来说,还是不行,我打算至少做技术到30岁再考虑其他事情吧。
  • 沟通能力。做技术的一天到晚都对着电脑,都是不太擅长说话,但是做了项目经理/产品经理少不的要与人沟通,所以这个必须要注意加强学习。
  • 主动性。有时候要经常拉大家开会,讨论项目什么的。
  • 善用团队协作工具。我认为这个还是有必要的,不要什么工具都不用,感觉想是软件小作坊,大公司都会有专门的部门为公司内部写工具。
  • 多看书。保持一个持续学习的心态,也要经常去关注行业最新动态,干 IT 这一行新技术穷出不断,有的你玩。
  • 保持热爱。我们一生要工作很久很久,只有做你最热爱的工作你才不至于那么累,能会开心,有激情,有成就感。
  • 有好奇心。热爱一些新出来的产品,乐于去尝试新技术、新产品。这个自认为还可以,经常写代码写累了就去看一下 GitHub 和 Product Hunt 的排行榜去看看。

以上就写这么多吧,最后送给大家一句乔布斯的名言:「Stay hungry, stay foolish.」