作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
伊桑詹姆斯
验证专家 在项目管理方面
14 的经验

Ethan是一个充满激情的Javascript开发人员,他写得很干净, HTML5和CSS3的语义和响应一样,他建立的网站.

分享

这篇文章是给你的, 一个勇敢的企业家,心中有一个应用程序的想法,银行里有一点现金. 你在餐巾纸上涂鸦的图表会颠覆整个世界, 装满钱的卡车已经被派往你家了. 以确保他们准时到达, 这里有一些简单的建议可以让你的制作周期顺利进行.

为什么首先需要IT项目经理

“计算机程序是人类创造的最复杂的东西,”道格拉斯·克罗克福德说. 你可能以前没有听说过这个名字,但他是一个非常有名的程序员. 他目前是PayPal的高级软件架构师, 他开创了各种各样的酷技术,超出了本文的范围. 他是一个对大型项目工作非常了解的人.

至于我自己, 我已经编程13年了, 即使是现在, 在某一时刻, 每个项目都带我进入未知的领域. 现在有很多不同的技术, 新技术以惊人的速度被发明出来,以至于我从来没有觉得自己完全掌握了正在发生的事情. 虽然每个项目都有其独特的挑战,但有一些不变的:

  • 项目有时间压力.
  • 预算比我想要的要少.
  • 我比客户想要的贵.
  • 我没有像客户希望的那样完美地倾听.
  • 客户并没有像我希望的那样完美地解释事情.

显然,我们需要一个保姆. 总得有人介入 建立基本规则让每个人都诚实,确保我们没有忘记任何重要的事情. 必须有人促进各方之间的沟通.

这个人,这个英雄,就是项目经理.

项目经理促进所有涉众和团队之间的沟通.

项目经理促进所有涉众和团队之间的沟通.

当我开始写这篇文章时,Toptal还没有提供项目经理合同, 但现在他们有了. 协同作用! 我只能想象,那些当权者读了下面的建议后,会意识到他们错过了一个绝佳的机会.

程序员和. 编程项目经理

项目管理学会 除此之外,项目经理能带来的最重要的东西是经验. 结果是, many programmers would make pretty decent IT project managers; we have more experience with technical projects than anyone else 和 our analytical minds are adept at cataloguing information 和 setting concrete goals.

上帝才知道, 你付的钱够多了, 因此,我们似乎可以合理地期望,我们可以管理自己,而不是强迫你也为别人的时间付费, 正确的?

首先,你付钱让我们写代码.

当我们从编程的迷迷糊糊中清醒过来决定要优先考虑什么, 或者争论这周到底要完成多少工作, 没有编写代码. 然后至少需要10分钟才能回到“状态”,尤其是当我们因为刚刚的谈话而感到压力山大的时候, 如果我们争论的是功能优先级,那么哪个更有可能. 我知道,但这都是为了最有效地利用昂贵的资源.

最重要的是,我们真的只见树木不见森林. 如果你没有从这篇文章中得到什么, 请理解这一点:当我花了一整天的时间盯着几个特定的bug, 我的大脑会忘记大局.

当我修复这些漏洞时,我的大脑会奖励我, 我假设我已经做了伟大的事情,现在可以去玩电子游戏了. 当有人提醒我主页还是坏的时候, 这是一个完全的惊喜,因为我花了一天的时间向我的大脑中填充整个项目很小一部分的非常详细的知识,而忘记了剩下的部分. 这就是我的大脑运作方式,许多其他程序员也有类似的心理构造.

编程和项目管理可以是完全不同的心态.

项目经理vs开发人员:开发人员分析细节,而项目经理关注大局.

为什么客户不能成为一个好的项目经理

那么, 如果我们程序员不想承担完成项目管理工作的责任, 那就由你来决定了, 客户端. 这是你的钱. 这是你的愿景. 不管怎样,你最终要对整件事负责.

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

许多客户和我们一样,只是有日常工作的普通人, 有些人甚至患有拖延症或健忘. 虽然这并不一定能描述你, 具体地说, 请考虑聘请一位专业记忆员,这样您就可以回到重要的工作中,保持整个项目的活力.

如果你做过, 或监督, 类似范围的技术项目, 你可能会成为一个很好的项目经理. 如果你没有, 请不要低估那些能够预测可能出现的问题的人的价值. 时间估计永远只是估计,bug往往会在最不合适的时候出现. 如果身边有人知道流程的哪些部分是需要的,那么雇佣另一名员工(即使只是兼职)是值得的, 或者可能需要, 最受关注.

以质量保证(QA)为例. 适当的QA对于获得你想要的任何项目都是至关重要的, 它从来没有得到应有的关注. 优秀的IT项目经理会充分利用有限的QA资源,并为您的程序员提供质量保证. 有时,我们会越界,有时我们会犯错. 您需要一个技术熟练的人担任监督角色,以确定您的程序员是否只是有一天不正常, 或者他或她是, 事实上, 不适合这个项目. 尽早解决人事问题可能意味着项目的生死攸关.

最后,即使是作为客户的你,有时也需要一些制衡. 这对我来说很难写,因为我们计算机程序员并不以直言不讳而闻名. 我只想说, 我在很多项目中工作过,客户坚持每件事都是最优先的,绝对需要完成每件事. 虽然我毫不怀疑这是绝对正确的, 这些客户, 可悲的是, 不能控制一天的小时数. 他们没有得到他们想要和/或应得的积极结果, 我认为,如果客户委托项目经理全权评估工作量和策略,这种结果是可以避免的, 然而坚定, 控制自己的行为. 当涉及到你的想法和你的钱时,你很难做出大多数技术项目所需要的冷静的判断,而计算机并不在乎你或我对它哭泣和尖叫. (我知道这是真的,因为我已经试过很多次了.)

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

你是否决定忽略之前的1,000字左右,自己管理你的项目, 或者你是否打算雇佣某人,但想要更了解这个过程, 这张清单会对你有所帮助. 我从来没有(正式)做过项目经理, 所以我不能说哪个项目经理会使用哪种工具, 但请将此作为开发人员对项目经理的愿望清单. 所有这些技巧我都很成功, 每个都将成为我希望看到的开发人员项目管理的一部分:

里程碑

当开始一个新项目时, 大多数人直觉地知道,把项目分成稍微容易管理的小块是很重要的, 每个块的工作时间从几周到几个月不等. 在项目开始时,最好召开一个启动会议来确定这些里程碑. 在如何与他们取得联系的问题上含糊一点是可以的, 最重要的是在每个里程碑之后继续检查,以便从每个人对项目的加深理解中受益, 并确保项目的里程碑仍然(大致)与最初认为的大小相同.

时间估计

我们程序员绝对讨厌估算,因为我们知道它们会是错误的,我们知道它们会被用来对付我们. 他们错了也没关系,因为根据定义,他们是建立在一些未知的基础上的. 他们被用来对付我们也没关系,因为我们的工作很轻松,而且时不时地挨鞭子也没什么坏处.

因此,每次在一个新的里程碑上开始工作时,请随意要求估算. 你应该为每个主要特性写一两行,并粗略估计该特性需要多长时间. 我通常会做一个乐观的估计,然后再加倍. 通常情况下,这些额外的时间会带来看不见的陷阱.

用户故事

用户故事是对应用程序中单个功能的简短描述. 它们作为重要特征的记录是有用的,应该是一口大小的, 可以放在索引卡上,并经常附有一张小图画. 更重要的是, 它们在客户的需求和程序员必须告诉计算机的内容之间起着桥梁的作用. 它们对你来说很简单, 客户端, 再过几分钟就晕过去了, 但对我们来说已经足够详细了, 程序员, 投入我们的牙齿.

关于用户故事的一些快速信息,我找到了这些教程 Mountain Goat软件Roman Pichler 保持高质量和简洁. 想了解更多关于敏捷项目管理哲学的信息,请阅读Toptal的博客文章 敏捷项目管理的终极入门 保罗·巴恩斯.

成分(原型)

这不是一篇关于你为什么需要一个设计师的文章,因为我觉得大多数客户已经明白了这一点, 但它值得重复,因为如果你拍打混凝土,你会看到巨大的生产率提高, 在程序员面前进行深思熟虑的设计. 每次我们要做设计决策的时候, 我们必须离开“隔离区”,“每次我们都不得不回去修改一些东西,因为我们没有得到最终草案, 好吧, 你自己算算吧,我不是在抱怨, 因为设计是有趣的, 但根据我的经验, 这是No。. 一个可避免的额外计费时间的来源.

大多数设计师都提供构图, 也被称为comps, 在Adobe Photoshop中, Adobe Illustrator, 或草图. 如果你自己做,你可以使用无数的在线工具之一,比如 Balsamiq or InVision. 成品的颜色和样式不必与成品相同(因为这些可以很容易地改变)。, 但请花额外的时间来确保所有的UI元素都存在和考虑.

站立会议

长时间的会议有时是不可避免的, 但是您确实不想让程序员负担过重,或者占用他们不必要的时间. I’ve had clients who seemed to expect me to remember everything that was said during a two-和-a-half hour meeting; they were sorely disappointed. 站立会议通常限制在15分钟内,在此期间通常是站着的. 站立方面应该确保每个人都参与其中, 同时也要缩短会议时间.

在脱口秀, 每个人围成一圈,做一个简短的状态报告, 让所有团队成员了解彼此的最新进展. 你可以在 极限程序设计.Org. 如果你都远程工作,不想让每个人每天都在Skype上, 您可以尝试一个有趣的工具,例如 15 5 作为单口相声的替代品. 15 5允许团队成员在他们方便的时候提供意见, 这将促使他们提出调查问题,以梳理出更深入的回答.

票务系统

虽然任何人都可以维护一个便利贴和谷歌文档系统(每个人的任务都用不同的颜色突出显示), it’s really not necessary; plenty of people have tried to solve this problem for you. Basecamp和Trello以其易用性而闻名, 而Pivotal则试图将整个“敏捷”哲学封装成一个非常漂亮的软件包. 无论你选择什么,一个好的票务系统至少可以让你:

  • 创建任务
  • 分配优先级和截止日期
  • 链接任务和子任务
  • 分配不同的解决方案,例如“完成”或“测试失败”
  • 显示分配给某个用户的所有任务

当一个项目经理给你看40张同一天到期的鲜红色优先票时, 您将真正理解这个项目鸟瞰图的价值.

客户并不总是有正确的视角来管理他们自己的项目.

你可以利用像Trello、Basecamp或Wrike这样的工具来跟踪项目的进度.

源控制

您甚至可能永远不会查看项目版本控制系统中的代码, 但是源代码控制(或版本控制)是我们可以使用的最重要的工具之一, 你能想象到的最棒的备份系统.

大多数现代项目都使用Git, 尽管有时在处理已经存在一段时间的项目时会遇到Sub版本 (SVN). Github允许您免费托管无限的公共存储库, 它包含了世界上大多数的开源项目), 而Bitbucket允许你托管无限的私有存储库,因此是商业项目的首选.

您选择的任何版本控制系统, 它远程存储我们的代码以备不测, Plus跟踪我们每次“提交”代码的情况,同时强迫我们写一个小消息来描述我们正在做什么. 这可以防止不同的开发人员重写彼此的代码, 它让我们看到在给定时间段内所做的所有更改, 它还允许我们创建新的代码分支来存储不会马上上线的特性. 它甚至有一个名为“blame”的命令,显示谁对给定的代码行负责, 当它发生的时候.

源代码控制是最伟大的.

测试驱动开发

这是一种相对昂贵的做法, 这意味着它不会经常被用于预算有限的自由职业者项目中. 所以你, 作为一个创业家, 不用为没做这件事感到太难过, 但我必须把这个想法摆在你们面前,因为它提供了对抗虫子的终极防御. 基本上,你的程序员会花费额外的宝贵时间 编写测试 (小代码块)确保应用程序的某些部分以特定的方式运行, 可预测和可重复的方式. 例如, 我可能会编写一个测试,断言当单击“login”按钮时, 弹出一个带有用户名字段的窗口.

测试的美妙之处在于,一旦我写好了它们,我就可以用一个命令来运行它们. 如果我写了200个测试, 我可以在发布新版本的应用程序后运行它们,以确保这200个功能中没有引入任何错误. 它并不完美,但它是我们能够保证无bug(至少是无bug)应用的最接近的方法.

总结

这就是我对项目管理的全部了解, 我所有的建议都是从开发人员的角度给项目经理的. 我不确定这些内容有多少能通过项目管理协会的审核,但这些都是我在过去十年中从事web项目时学到的东西,我对如何为开发人员量身定制项目管理有了很好的理解. 当然, 我建议你雇佣某人是为了从他或她的经验中获益, 但我希望这些信息对你有帮助,即使这不是你能做到的. 你将是这个项目的最终权威, 所以你对它的内部运作了解得越多, 你就越有可能带领它走向胜利.

聘请Toptal这方面的专家.
现在雇佣
伊桑詹姆斯

伊桑詹姆斯

验证专家 在项目管理方面
14 的经验

布鲁克林,美国

2015年12月6日成为会员

作者简介

Ethan是一个充满激情的Javascript开发人员,他写得很干净, HTML5和CSS3的语义和响应一样,他建立的网站.

作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

世界级的文章,每周发一次.

输入您的电子邮件,即表示您同意我们的 隐私政策.

世界级的文章,每周发一次.

输入您的电子邮件,即表示您同意我们的 隐私政策.

欧博体育app下载

加入总冠军® 社区.