开发开始前
wemake 不做任何的 估算。像这种问题:
我想开发一个带自然语言处理的聊天机器人,并且它需要有好看的界面。需要花多少钱和多长时间?
他们认为是不可能准确回答的,除非开发者做过完全同样的产品,并且有完全同样的客户和开发团队。所以 wemake 不做估算,实际的时间和花费需要在需求分析后才给出。但是他们接受项目交付有截止时间。
客户有开发软件产品的需求提出时,wemake 会先做 需求分析。需求分析要求客户回答几个问题:
- 你的产品想实现什么功能?
- 谁是这个产品的用户?
- 这个产品想解决用户的什么问题?
- 你什么时候真的需要这个产品?
在沟通之后,客户会收到一份正式的需求文档。这份文档应该是可交付的(deliverable)。它由下面这些部分组成。
术语
描述一些关键概念,类似高斯算法是什么、管理员和普通角色的区别是什么等。
需求优先级
wemake 采用 MoSCow 方法 来确定需求优先级。MoSCow 方法将优先级分为 4 类:must、should、could 以及 won't,如:
Feature | Priority |
---|---|
Multiple message providers could be supported | Could |
Authenticated users must be able to send private messages | Must |
Authenticated users must be able to log out | Must |
There should be a notification about incoming private message | Should |
Encrypted private messages won’t be supported | Won’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)是透明高效的,不需要靠过去服务过的客户的品牌和自己团队成员的名气来做广告。而其他外包公司:
- 可能将将失败的项目说成成功的
- 可能与其他公司偷偷合作
- 它的项目成员可能经常变动,你的项目不一定是你想要的明星成员在做
- 做出虚假的承诺,但是最终延期很长时间或者质量不如预期