软件外包开发起源于甲方客户的需求、想法或一句话。
甲方找到有意向的技术团队后,在项目确定之前,还有一段较为漫长的沟通、确认和决策过程。在这期间,甲方会和乙方技术团队简单、大致或详细说明他想要的效果、需要实现的需求和功能。乙方技术团队则会根据甲方的项目需求进行评估,整理提供项目方案(技术实现方案)、报价单(需要多少钱)、开发周期(需要多少工作日和时间)。
甲方一旦确定项目需求,签定合同并支付首款后,乙方便可以开始按项目计划进行产品需求原型梳理、输出UI设计稿,并进入具体的功能代码编写和研发阶段,最后测试通过后交付给客户,部署上线,开始进入系统维护阶段。
根据我们过往的外包项目经验,一个外包项目完整走下来,有三个较为漫长的阶段:一是前期沟通和确认阶段;二是中间的技术研发阶段;三是后期的维护阶段。
每个阶段都历时长、沟通多、人员多、资料多。沟通包括但不限于:即时聊天、电话沟通、上门拜访、线上线下会议、邮件沟通,参与的人员有甲方的老板、决策人员和需求方,也有乙方自己团队的项目经理、产品经理、UI设计师、技术开发工程师、测试人员、运维人员等;资料则有:PRD产品需求原型、PSD等UI设计稿、源代码、文档、测试用例、截图、Bug、项目甘特图、漏洞检测报告等。
如果技术团队人员齐全或充足,可以自己独立完成开发。如果只是擅长某个技术领域,可以选择众包的方式,将自己团队不熟悉的模块分包给其他合作伙伴和开发团队。在众包开发的模式中,技术团队也可以通过平台接单的方式参与项目协作,例如在程序员客栈平台(https://www.proginn.com/)可以参与子项目的协作。
假若沟通的新项目,和自己团队的专业技巧相差太远,可以转包给其他更适合的合作伙伴或团队。
作为甲方,最为关心的是:这个需求能不能做?多少钱?做多久?
一旦甲方和你简单沟通完他的需求后,他就会开始灵魂式的连续拷问。
但是作为乙方的你,这时,需要评估项目预算和时间会更痛苦。因为需求是不确定的,而且客户的需求很可能是之前团队没有做过的,业务、经验和甚至技术都是全新的。虽然都知道这个需求都能做,但成本多少,客户的预期目标有多高,团队需要多少时间都是未知数,变动和影响的因素非常多。通常做法是,按过往的评估乘以2倍作为项目工时,预留一定的缓冲时间以便处理变更的需求。
另一个让乙方很痛苦的就是时间上的限制。前期甲方决策或思考的时间或长或短,虽然说这个需求很急,但往往前期沟通、定价、来回修正方案是避免不了的。或许,前面甲方确定需求要不要做(或给不给你做)已经花了3个月的时间,一旦到你的手上,就只剩下1个月的时间了。
还有就是在外包项目沟通上会很痛苦。如果你的团队不是直接对接甲方客户,而是转包或众包的模式,那么整个沟通链接,可能就会涉及4~5个人。这样势必会影响沟通效率和得不到及时有效的反馈。例如,沟通链条可能是:甲方需求人员 -> 甲方客户 -> 项目经理(外部) -> 乙方团队负责人 -> 乙方具体处理的技术人员。
在外包项目沟通和对接上,我们第一时间想到的工具和方式是使用在线聊天工具,例如聊天群,使用QQ、微信、钉钉、企业微信、飞书或其他软件。
这种聊天的方式,协作起来高效吗?
在即时方面,聊天工具是高效的,因为它可以随意添加人员进群,可以得到即时的通知和回答,可以发送文字、图片、语音等信息。
但是,聊天群会在当下这一刻是最为有效的(估计你很少会翻阅上星期的聊天记录),却难以形成有效的、结构化的信息。因为信息噪音太多,有太多无关的信息。在协作过程中,不能形成有恰到好处的项目信息,在完成项目后,也不能形成有价值的项目档案,方便为后续的项目提供经验参考和学习。例如这个项目我们实际做了多久?做下来是亏本了还是赚了?有哪些坑,以后要怎么避免?
鉴于项目需求的复杂度、项目开发周期长、涉及和参与的人员众多、资料和信息丰富,很有必要使用一款能让甲方客户和乙方技术团队一起协作项目的工具。
下面,举一个外包开发的粟子,讲解如何在YesDev和甲方团队一起协作项目。
首先,登录YesDev。如果还没账号,可以免费注册YesDev。
随后,创建新项目,填写项目名称,以及其他需要的信息。
接着,在此项目的详情页,点击右上角的【外部协作】。
在 外部协作 弹窗,可以有2种邀请方式。一种是直接通过甲方的团队代码添加(如果甲方团队已经注册了YesDev),另一种方式是发送邀请链接给甲方团队加入。
当甲方加入项目协作后,此项目将会从内部项目自动升级为【外部协作项目】,同时在外部协作弹窗中,可以看到参与当前项目协作的全部团队。除了甲方,还可以邀请其他外部团队加入项目协作。
甲方客户,通过乙方分享的邀请链接,访问后,成功加入后,可以看到以下类似提示信息:
甲方看到的项目详情和协作信息,和乙方团队的一样。
不管甲方客户团队加入项目协作与否,乙方技术团队都可以使用YesDev进行项目协作和管理。
YesDev不仅能让甲方客户团队、乙方技术团队和更多外部团队一起协作项目,还可以用于自己内部的项目协作和管理。为此,YesDev为项目管理提供了以下常用实用的功能。
常用功能1:项目总工时
在项目里,技术人员可以根据项目需求,拆解任务和评估工时、计划完成时间等。任务是最小的协作单元。
评估任务后,会自动汇总项目总工时,单位为H,即小时,8小时为一个工作日。
常用功能2:实时项目进度
在前面评估和拆分的任务基础上,当具体的任务完成后,需要及时把任务的状态从TODO更新为DONE。
你可以在任务看板拖动修改,也可以在项目详情页里修改,或者在工作台修改。
任务状态共分为3个,分别是:TODO 待办,DOING 进行中,和DONE 已完成。
任务状态更新后,可以在项目协作详情页查看最新的项目进度。
例如这个项目粟子,总工时为14H,已完成10H,进度约为71%。
常用功能3:项目排期和里程碑
在项目早期,当项目的任务全部评估完毕后,通过项目排期,可以看到自动汇总和生成的项目排期,可以看到多少人员参与,每位成员需要投入多少时间,以及排期时间从什么时候到什么时候。
同时,也可以看到整个项目的总负责人和项目的时间范围,根据关键项目节点生成的项目里程碑。
常用功能4:项目甘特图
若承接的外包项目较为庞大,当需要进行宏观的项目排期和多个项目汇总时,可以使用项目甘特图。
通过项目甘特图,可以看到多个项目,每个需求,以及每位成员在整个项目周期所需要投入的时间。我们也可以很方便看到整体项目需要投入的人力资源、时间成本和周期。还可以按天、按小时进行汇总,同时可以导出甘特图Excel文件。
常用功能5:项目需求管理
除了协作项目任务,YesDev还可以管理项目需求。需求可以由客户提交,也可以是乙方内部提交。提交需求时,可以设置需求的优先级,例如有:低、中、高、紧急。创建需求后,关联到当前项目。
在项目需求列表,可以补充备注外部对接人,以及进行快捷的修改。点击需求标题,可以查看需求描述和关联的PRD。
常用功能6:PRD在线演示
上述有提到产品PRD,如果你已经使用Axure或其他软件工具整理好PRD产品原型后,可以把压缩包上传到YesDev。
在上传PRD时,可以选择谁可以看。如果需要共享给外部的客户查看,可以设置为【公开】;如果只是内部查看,则设置为【保护】。
上传PRD后,可以关联到具体的需求。
同时,你的团队在PRD在线演示,也可以看到同步上传的PRD,点击即可在线查看。
常用功能7:Bug问题跟踪
在测试阶段,对于客户或自己团队发现的问题、缺陷、Bug,可以提交到YesDev,进行记录和流转。
在提交问题时,可以快速粘贴你的截图,填写 问题描述、重现步骤和期望的结果。也可以保存并继续添加。最好是在创建问题时指定负责人,并关联到项目。
你也可以在项目详情页,一次性关联多个问题。
关联问题后,在项目详情页,会显示实时的问题修复进度,和统计数据。
常用功能8:项目资料和链接
如果项目还有更多的信息和资料,可以上传到项目的相关链接、附件和备注。
例如,经常会有很多测试环境、测试账号和密码;以及项目的需求文档、检测报告等。
当项目的全部任务完成后,全部的需求也完成后,并且解决修复了全部问题后,就可以把这个项目的状态修改为【已完成】。至此,项目结束。
上