项目经理是被需要的英雄

你, 一个勇敢的商人,脑子里有一个应用程序概念,银行里有一些钱,是这篇文章的目标受众。这个世界将被你在鸡尾酒餐巾纸上画的图表所颠覆,而现金倾卸卡车已经被送到了你家。这里有一些简单的建议,可以让你的制造周期顺利进行,从而使它们按时到达。

为什么你最初需要一个项目经理

根据道格拉斯·克罗克福德(Douglas Crockford) 的说法,计算机程序是人类有史以来最复杂的创造。他的名字可能并不家喻户晓,但对于一个程序员来说,他是相当有名的。他目前在 贝宝 (PayPal) 担任高级软件架构师,并发明了许多超出本文范围的创新技术。他在重大项目上拥有丰富的工作经验。

即使在13年的编程生涯之后,我现在所从事的每一个项目最终都会将我带入一个未知的领域。我从来没有觉得自己完全跟上了时代,因为有这么多不同的技术,新的技术也在以如此快的速度发展。虽然每个项目都有其特殊的困难,但总会出现以下问题:

  • 这个项目有最后期限
  • 预算不是我想要的
  • 顾客发现我比他们期望的要贵
  • 我并不总是像顾客希望的那样专注
  • 客户的解释没有我想要的那么清楚

显然,我们需要一个保姆。我们需要有人来制定规则,维护每个人的诚信,并确保我们不会错过任何重要的事情。各方必须能够相互通信。

项目经理就是这个人,承担这个角色的这个英雄。

当我开始写这篇文章时,领类并没有与项目经理签订合同,但现在他们提供了。协同作用!我只能假设当局在阅读以下建议后意识到他们正在浪费一个千载难逢的机会。

是什么阻碍了程序员成为一名优秀的项目经理

项目经理的经验是他们可以带来的最有价值的资产,即使他们获得了项目管理协会的认证。因为我们在技术项目方面的专业知识比其他任何人都多,并且擅长组织信息和创建特定目标,所以许多程序员会成为理想的项目经理。

期望我们可以处理自己,而不是需要你为别人的时间付费,这似乎是公平的,因为天知道,你付给我们的钱已经够多了。

首先,你付钱给我们编码。

当我们从编程的麻木状态中走出来,去确定任务的优先级或争论本周到底要完成多少工作时,代码并没有被创造出来。如果我们被刚才的谈话压得喘不过气来(如果我们在讨论功能的重要性的话),那么至少需要10分钟才能恢复过来并回到“状态”。抱歉,但这一切都是为了尽可能有效地利用昂贵的资源

我们实际上不能只见树木不见森林这一事实是最重要的。请记住这一点:当我一整天都专注于少数几个单独的错误时,我的大脑会变得心烦意乱,无法看到更广阔的画面。

当我修复这些问题时,我的大脑会给我一个奖励,我感到很有成就感并准备好享受电子游戏。当有人指出该站点仍然存在故障时,我完全感到惊讶,因为我花了一天时间深入了解较大项目中很小一部分的信息,而忘记了其余部分。我的大脑就是这样工作的,许多其他程序员也有类似的心理结构。

客户不是一个好的项目经理的原因

那么,如果我们程序员不想承担完成项目管理的责任,那么它就必须落在你,客户身上。这是你的钱,这是你的愿景。不管怎样,你最终要对整件事负责。

然而,你也有很多事情要做。

和我们其他人一样,我们的许多客户都是从事日常工作的普通人,其中一些人甚至因健忘或拖延而闻名。请考虑请一个专业的记忆者在身边的可能性,即使这不一定适用于你个人,这样你就可以回到保持整个项目活力的关键任务。

如果你有管理类似规模的技术项目的经验,你可能是一名出色的项目经理。如果你还没有,请不要低估可以预见潜在问题的人的重要性。时间估计通常只是估计,问题往往出现在最意料不到的时候。额外雇佣一名员工(甚至是兼职)是值得的,应该有一个人知道流程中的哪些步骤需要或可能需要最大的关注。

以质量保证 (QA) 为例。为了从任何项目中获得你想要的结果,适当的 QA 是必须的,但很少得到应有的关注。一位称职的项目经理将充分利用你的少量 QA 资源,并代表你对你的程序员进行 QA。我们有时会发现自己不知所措并犯了错误。要评估你的程序员是否确实不适合该项目,或者只是度过了糟糕的一天,你需要一个具有监督能力的技术娴熟的人。人事问题的早期解决可能是你项目的可行性和失败之间的区别。

最后,即使你是客户,有时也需要一些检查和/或平衡。由于计算机程序员通常不以善于发声而闻名,所以我很难写出来。当客户坚持说一切都很紧急并且必须立即完成时,我可以说我参与了几个项目就足够了。不幸的是,这些客户对一天中的小时数几乎没有影响,即使我毫不怀疑事实就是如此。我相信,如果客户给予项目经理评估工作量的能力,并温和而坚定地控制事情,这种情况可能会避免。相反,他们没有得到他们预期和/或应得的有利结果。当你的概念和你的钱处于危险之中,而计算机并不关心你或我是否对它大喊大叫或哭泣时,做出大多数技术项目所需要的客观判断决策可能是一种挑战 (我已经试过几次了,所以我知道它有用)。

技术项目管理方法的不完整列表

无论你是选择忽略前面的1000多个单词,自己处理项目,还是计划雇佣他人,但想了解更多的过程,这个列表都将对你有用。我不知道任何具体的项目经理会使用什么资源,因为我从来没有(正式地)当过项目经理,但我非常幸运地使用了所有这些方法。

里程碑

大多数人本能地明白,把一个新项目分成更易于管理的部分是至关重要的,每个部分平均需要花费几周到几个月的劳动。在项目启动会议上定义这些里程碑是个好主意。最关键的事情是在每个里程碑之后保持检查,以便从每个人对项目的更好理解中受益,并确保项目的里程碑仍然(大致)与最初认为的大小相同。对于如何达到目标有一点模糊是可以接受的。

估计时间

因为我们程序员知道估算是不准确的,而且它们会被用来对付我们,所以我们真的很不喜欢估算。因为根据定义,它们是建立在大量未知的基础上的,所以即使它们是不正确的,也是可以接受的。此外,因为我们的职业相当舒适,有时被鞭挞也无伤大雅,所以被用来对付我们也没关系。


因此,每当一个新的里程碑开始工作时,不要犹豫请求报价。对于任何重要的功能,你都可以预测一两行代码以及大概的时间估计。通常情况下,我会把乐观估计翻倍。这额外的时间通常是为了应对潜在的危险。

用户帐户

用户故事是对单个软件功能的简洁总结。它们应该是一口大小,能够放在索引卡上,并且通常伴随着一个小图形,因为它们作为重要特征的记录很有价值。更重要的是,它们充当了客户需求与程序员需要与机器通信的内容之间的纽带。它们对于你(客户)来说很简单,可以在几分钟内完成,但对于我们这些程序员来说,它们也足够深入,可以深入了解它们。

构图(样机) 

这篇文章并不是关于为什么你需要一个设计师,因为在我看来,大多数客户都知道这一点。尽管如此,有必要重申,如果你为程序员提供清晰、深思熟虑的设计,你将看到显著的生产力效益。你可以测算,每次我们必须做出设计选择时,我们都必须走出“那个区域”,每次我们都不得不回去修改某些东西,因为我们并未获得最终草案。设计是让人感到愉快的,所以我不是在抱怨,但根据我的经验,这是导致不必要的额外计费工时的主要原因。


构图通常被称为comps,通常由Adobe Photoshop、Adobe Illustrator或Sketch中的设计师提供。如果你是自己制作,可以使用各种在线工具,如Balsamiq或InVision。请额外注意确保所有的用户界面组件都被考虑在内,即使compp不需要拥有与最终产品相同的颜色和样式(因为这些事后可以很容易地修改)。

站立式会议

即使长时间的会议有时是不可避免的,但你真的不想让程序员不堪重负或需要他们花费超过所需的时间。我的一些客户似乎认为我能记住2.5小时讨论的每一个细节,他们非常失望。站立会议通常持续15分钟,在此期间,与会者必须保持站立状态。会议的站立阶段是为了保证每个人都能做出贡献,并保持会议的简短。

每个团队成员在站立时围成一圈快速更新状态,让每个人都知道彼此的进展。如果你都是远程工作,不想每天都用Skype,可以试试15Five这样有趣的工具,作为单口脱口秀的替代选择。在团队成员方便的时候,可以提供输入,15Five将用调查问题鼓励他们,以引出更详细的意见。

票务系统

任何人都可以维护一个便签系统和谷歌文档(每个人的职责都以各种颜色突出显示),但这并不是必需的,因为许多其他人已经努力为你找到解决方案。虽然 Basecamp、Trello 和 Pivotal 以其用户友好性而闻名,但 Pivotal 以将整个“敏捷”意识形态以非常精简的格式而闻名。无论你做出什么决定,一个体面的票务系统至少应该使你能够:

  • 制定任务
  • 设置截止日期和优先级
  • 任务和子任务连接
  • 分配多个结果,例如“完成”或“测试失败”。
  • 显示对某个用户所做的所有分配。

当项目经理向你展示 40 张在同一天到期的鲜红色优先票时,你一定会体会到这种鸟瞰项目的重要性。

源代码监控

你的项目的源代码控制(或版本控制)系统可能不会被你注意到,但它是你可以使用的最重要的工具之一,也是可以想象的最佳备份系统。

尽管在处理旧项目时有时会使用版本控制工具 (SVN),但现在大多数项目都使用 Git。虽然 Bitbucket 因其无限的私有存储库托管功能而成为商业项目的首选,但 Github 免费提供无限的公共存储库托管,并且还容纳了世界上大多数开源项目。

无论你使用哪种版本控制系统,它都会在我们每次“提交”代码时记录下来,并要求我们写一个简短的说明来说明我们正在做什么。它还可以远程保存我们的代码以防万一。这可以阻止开发人员覆盖彼此的代码,使我们能够观察在一定时间内完成的所有更改,并使我们能够构建新的代码分支来存储不会立即生效的内容。更重要的是,它具有一个名为“责备”的命令,可以识别谁编写了某行代码以及它的提交日期。

最好的是源代码控制。

测试驱动开发

这是一种成本较高的方法,因此,当项目的资金只够支付许多自由职业者时,并不经常使用这种方法。因此,作为一个新的企业所有者,如果不这样做,你不应该感到太糟糕,但我必须向你介绍这个概念,因为它提供了最好的bug保护。基本上,程序员花费额外的时间(和宝贵的时间)构建测试(小代码块),以确保某些软件组件以预定的、可重复的方式运行。例如,我可以创建一个测试,它声称当点击“登录”按钮时,将出现一个带有用户名字段的弹出窗口。

关于测试的奇妙之处在于,我可以在创建它们之后用一个命令运行它们。如果我已经开发了200个测试,我可能会在发布软件的新版本后运行它们,以确保这200个特性都没有受到问题的影响。尽管它不是理想的,但它是我们所拥有的最接近于保证程序少bug(如果不是没有bug的话)的东西。

结论

关于项目管理,我唯一知道的就是这一点。这些都是我在过去十年中通过在线项目获得的所有知识,但我不确定其中有多少能够通过项目管理学院的检查。当然,雇用某人是从他们的知识中获利的最佳方式,但如果你无法这样做,我还是希望你发现本文中的材料对你有用。你对这个项目的内部运作了解得越多,就越有可能引导它走向成功,因为你将成为该项目的最终权威。

加入世界顶尖前 1% 的自由领人才网络

领类将顶尖前1%的自由领程序员和设计师与世界各地领先品牌以及初创企业联系起来。我们专注于需要高技术人才和问题解决者的复杂且具有挑战性的一级项目。
经验丰富的项目经理正在审查从领类上聘请的自由软件工程师在软件开发项目上的进展 blog.join_marketplace.your_way经验丰富的自由 UI/UX 分析师在舒适的家中远程工作,并领类上完成 UI/UX 和产品设计项目 blog.join_marketplace.freelance_jobs