wemake.services: Working with the client

 20th August 2020 at 2:19pm

开发开始前

wemake 不做任何的 估算。像这种问题:

我想开发一个带自然语言处理的聊天机器人,并且它需要有好看的界面。需要花多少钱和多长时间?

他们认为是不可能准确回答的,除非开发者做过完全同样的产品,并且有完全同样的客户和开发团队。所以 wemake 不做估算,实际的时间和花费需要在需求分析后才给出。但是他们接受项目交付有截止时间。

客户有开发软件产品的需求提出时,wemake 会先做 需求分析。需求分析要求客户回答几个问题:

  1. 你的产品想实现什么功能?
  2. 谁是这个产品的用户?
  3. 这个产品想解决用户的什么问题?
  4. 你什么时候真的需要这个产品?

在沟通之后,客户会收到一份正式的需求文档。这份文档应该是可交付的(deliverable)。它由下面这些部分组成。

术语

描述一些关键概念,类似高斯算法是什么、管理员和普通角色的区别是什么等。

需求优先级

wemake 采用 MoSCow 方法 来确定需求优先级。MoSCow 方法将优先级分为 4 类:must、should、could 以及 won't,如:

FeaturePriority
Multiple message providers could be supportedCould
Authenticated users must be able to send private messagesMust
Authenticated users must be able to log outMust
There should be a notification about incoming private messageShould
Encrypted private messages won’t be supportedWon’t

wemake 会优先支持 must 需求,一般会在此设置里程碑来表示项目有大的进展,并且承诺不会砍掉 must 需求。对于 should 需求,除非有正当理由,否则也不会砍掉。但对于 could 需求,如果在项目截止时间前来不及做,会考虑在客户确认的情况下砍掉。

won't 需求则用来表示产品后续不会有这类需求。这对于架构师和开发者来说是重要的,使得他们可以相应地设计架构和代码。

需求在开发过程中会被测试及验证。

用户故事(User stories)

用户故事 是以最终用户的视角来描述的需求。wemake 用 gherkin 格式来描述用户故事,如:

Feature: Account Holder withdraws cash

  Scenario: Account has sufficient funds
   Given the account balance is $100
     And the card is valid
     And the machine contains enough money
    When the Account Holder requests $20
    Then the ATM should dispense $20
     And the account balance should be $80
     And the card should be returned

用户故事最终也会被验证。

业务过程建模(Business process modeling)

wemake 使用 BPMN 图表来描述业务过程。

非功能性需求

这些往往比较模糊,比如客户会希望有健壮和性能高的应用以及优雅的代码。wemake 会把这些要求具体化:

  • 服务器程序应该可以扩容支撑 3 倍的访问量,可用率不少于 98%
  • 90% 的请求应该可以在 130ms 内被响应
  • 代码必须遵循某个代码规范

里程碑

wemake 的开发团队会花大约 2 周做出一个 POC(proof of concept)原型,然后定义下一个里程碑的截止时间。在每个里程碑时间,都会给客户看半成品,以获得反馈。

定价

  • 小型项目,五个工作日时间,150000 卢布(约合¥16500)
  • 中型项目,十个工作日时间,300000 卢布(约合¥33000)

一旦需求明确下来,wemake 团队便开始开发。

开发过程中

项目开始开发后,客户可以随时访问开发中的代码、CI 服务器、issue 等等。wemake 用 GitLab 来管理项目,会在项目开始工作的第一天给到客户永久的访问权限。同时客户如果遇到 bug 或者想提出意见时,也可提单。

计费规则

wemake 对做完的任务收费。

在需求明确后,wemake 团队会把需求拆成小的明确的任务,并且将任务分配给团队中的开发者。每一个开发者都有一个基础费率,同时任务会有一个预估的耗时。任务的费用即等于基础费率乘以预估耗时。wemake 要求客户每周支付一次费用。如果客户较长时间没有支付,开发可能会被中止。

wemake 不提供任何折扣。

为什么应该选择 wemake?

wemake 认为它们的 RSDP(repeatable software development process)是透明高效的,不需要靠过去服务过的客户的品牌和自己团队成员的名气来做广告。而其他外包公司:

  • 可能将将失败的项目说成成功的
  • 可能与其他公司偷偷合作
  • 它的项目成员可能经常变动,你的项目不一定是你想要的明星成员在做
  • 做出虚假的承诺,但是最终延期很长时间或者质量不如预期