定制开发

有些问题不是一个网站能解决的。当需要的是一个工具、一次系统集成,或是一套不该再靠人工完成的流程时,我们就会转而构建这些。

团队小而资深,对项目范围坦诚相待。如果市面上已有产品能解决您的问题,我们会如实告诉您,而不是收费替您重新造一遍。

登记表

我们承接的项目类型

描述定制软件最有用的方式,是看它消除了什么问题。以下是最常见的几种情形,以及我们通常会为此构建的方案。

问题类型及其常见解法
问题 我们构建的方案
同一件手工任务每天重复,却由一位资历远超此任务的人来做 一个内部工具,把流程固化下来:一个表单、一个处理队列、清晰的操作记录,以及与团队实际运作方式相匹配的权限设置。
两个互不相通的系统 一套负责在两者之间做映射的集成方案,一方故障时能安全重试,需要人工介入时也会及时提醒。
整个业务运转依赖一张没人敢动的电子表格 一个背后有真正数据模型支撑的小型网页应用,让两个人可以同时操作,也不会有人不小心覆盖掉上个季度的数据。
每周都要有人手动整理的一份报告 一个定时任务,自动收集数据、进行核对,并把报告发送给需要它的人,每次运行都有记录可查。
硬塞进官网、最终撑不住的客户流程 一个拥有独立网址的正式应用,并沿用网站的设计系统,让它依然与整个品牌浑然一体。
没人能报价,因为根本没人界定过范围的项目 一个简短的需求梳理阶段:以书面形式定义出最小可运行版本,同时同样清楚地列出我们不会构建的部分。

判断依据

我们如何决定构建什么

  • 先做出能用的最小版本。一个范围虽窄但已投入实际使用的工具,两周内教给你的东西,比一份完整的规格说明书三个月教给你的还多,等弄清楚哪些部分真正重要之后,再逐步扩展也不迟。
  • 刻意选择成熟无聊的技术。比起有趣的新技术,我们更愿意选择久经验证的方案。定制软件的好坏,要看未来有人需要修改它的那一天,而不是它上线的那一天。
  • 尽早把数据模型定对。界面重画的成本很低,但数据结构调整的成本很高,所以我们会先确定数据的形态,再着手设计界面。
  • 能买则不自建。如果市面上有授权产品能满足您的需求,我们会如实建议您直接使用。比起收费替您重新发明一遍,我们更愿意只构建把它连接起来的那一小部分。
  • 为接手的下一位开发者而设计。可读的代码、有文档记录的搭建流程,以及能说明意图的测试。衡量一份工作好坏的标准,是别人能否安全地对它做出修改。
图 1 界面、服务、调度与存储,在动手写代码之前先画出来。

标准

每个项目交付时都具备什么

工程标准与网站项目完全一致,因为一个内部工具往往会被员工连续使用很多年,而他们并没有选择别的工具的余地。

属于您的代码仓库

完整的提交历史保存在您自己的账户下,搭建流程的文档也足够详尽,换一台新机器当天下午就能把项目跑起来。

自动化检测

每次改动都会先运行测试和类型检查,之后才会到达依赖这套系统的人手中。检测失败就会阻止部署。

一条命令即可部署

发布是一个可重复执行的单一步骤,前一个版本也只需一次回退即可恢复。没有手工拼凑的发布流程,也没有没有文档记录的服务器。

无障碍界面

内部系统也拥有与对外网站同等的键盘可操作性、对比度和语义化标记。员工理应享有和客户同等的标准。

密钥不进入代码

凭据保存在专门的密钥管理系统中,以环境变量的形式提供给运行中的服务,绝不会以文件形式出现在代码仓库里。

可随时交接

账户、域名和代码仓库可以随时转移到您自己的组织名下,没有任何东西会被扣留作为筹码。

边界

我们的边界在哪里

把边界说清楚,本身就是值得信赖的一部分。我们是一支小而资深的团队,因此只承接能做好的工作,做不好的会直接说不。

我们不转售授权平台,不会为并非由我们开发的项目派驻人力,也不会为尚未界定范围的问题报价。如果某部分工作应该交给专业人士处理,我们会直接告诉您,而不是让您花钱买教训才发现。

描述您的问题 sales@wwi.dev

开始合作不需要一份规格说明书。通过联系表单,或发邮件至 sales@wwi.dev,用您自己的话描述这项工作即可。