一项可正常运行的服务
按照商定的规格构建,无论那是一个新的 API、一项数据处理服务,还是对另一门语言中已有内容的重写。
有些企业选择迪拜聘请Golang工程师项目制这种合作方式,而不是寻找一个持续在岗的角色,原因是工作本身就有明确的范围:一项需要从零构建的服务、一个已经超出原有语言承载能力的脚本或应用,又或者一套运行缓慢、不够可靠、需要彻底重写的基础设施。本页要介绍的正是这种类型的合作:按照书面范围商定,代码、文档和访问权限在结束时完整移交,这与把一个人长期加入您团队是完全不同的两回事。
Go 之所以适合这类项目,是因为一个结构清晰、依赖很少的单一二进制文件,很容易被干净利落地部署、测试和交接,不会让团队从此依赖一个庞大的框架,或者一堆零散的第三方包。这正是不少企业选择在迪拜按项目聘请 Golang 工程师完成一次明确定义的构建,而不是维持一份开放式长期安排的最主要原因之一,也是权衡多种方案后的结果。
一个项目会交付什么
一次限定范围的项目的具体产出,而不是一份持续性的安排。
按照商定的规格构建,无论那是一个新的 API、一项数据处理服务,还是对另一门语言中已有内容的重写。
一份容器镜像和一套可重复执行的构建流程,让服务每次都能以同样的方式部署,而不是依赖手动操作。
证明服务行为符合规格的测试,对于重写项目尤其重要,因为匹配原有行为和写新代码同样重要。
服务如何运行、如何配置,以及如何部署和回滚一次变更,写给我们不再参与之后负责维护它的人。
与您团队进行的一场讲解会,涵盖代码库结构、背后的决策考量,以及未来可能需要继续投入的地方。
一套商定好的切换方案,从旧系统迁移到新系统,包括数据或流量如何转移,以及出现问题时如何回滚。
值得关注的技能
与干净交付一个项目具体相关的技能,而不只是会写 Go 代码。
| 技能或工具 | 合格的表现 | 为何重要 |
|---|---|---|
| 从零开始的服务设计 | 能在动手写代码之前,清楚说明他们会如何组织一项新服务的结构,而不是直接开始敲代码 | 早期的结构性决策,在一个已经交付的项目里日后修改起来代价高昂 |
| 容器化 | 能熟练构建一个小型、可用于生产环境的容器镜像,而不只是在本地运行过一次 | 没有可重复部署流程的项目,称不上真正完成 |
| API 设计 | 在实现之前先设计出清晰、有文档记录的接口,并配有合理的错误响应 | 使用这项服务的人不应该需要阅读源代码才能弄明白怎么用 |
| 迁移纪律 | 坚持在重写之前先梳理现有行为,包括那些从未被写下来的边界情况 | 当未记录的行为被悄悄丢弃而不是有意保留时,重写往往会在不知不觉中失败 |
| 书面文档 | 把撰写文档当作工作的一部分,而不是代码写完之后才想起来补上 | 一次没有文档的交接,充其量只是名义上的交接 |
Go 官方的 发布政策 值得在项目开始前先了解一下:每个主要版本会一直保持受支持状态,直到又有两个更新的版本发布,因此今天交付的服务,应该建立在一个还有合理支持周期的版本上,而不是一个已经快要过时的版本上。这是在项目范围确定之前,值得向任何一位 Golang 工程师提出的一个合理问题。
这个角色如何展开合作
本页专注于以项目为基础的合作:一份书面范围、一个固定价格,以及在结束时对成果的完整所有权。如果您真正需要的是一个能加入团队并长期留任的人,我们的 Go 开发工程师 页面介绍的是把同一门语言作为专属、持续性聘请的情形。如果您希望直接建立自己长期的 Go 能力,而不是委托一个项目,招聘支持更适合;如果悬而未决的是一项决策,例如是否值得重写一项服务,在任何构建工作开始之前,咨询服务更适合。大多数以项目形式在迪拜按项目聘请 Golang 工程师的客户,选择的正是本页介绍的这种合作范围。
考察候选人
针对项目交付设计的考察方式,因为没有现有团队能提前发现失误。
不是一份还在进行中的工作。一项配有文档的已完成成果,能说明他们是否真正把事情做完,而不只是开了个好头。
给出一份简短的简报,请他们先给出一个大致的服务设计。在一个限定范围的项目里直接跳过设计开始写代码,是一个警示信号。
一个真实的答案,包括在旧系统行为不清晰时他们具体做了什么,远比一句泛泛的“我们会做测试”更有价值。
请他们提供以往工作中的一份 README 或交接文档。如果根本不存在,问问原因。
一位项目型开发工程师应该能在项目开始之前,而不是开始之后,清楚说明哪些属于范围之内、哪些会算作额外工作,单凭这一项考察,就能排除大多数不合适的人选。
认证
这里没有证书可供核实,不如直接考察过往交付的实际成果。
Go 的维护团队并不运营任何认证项目,因此任何声称的“Golang 证书”都无法对照官方来源进行核实。它也无法说明一个人是否真的能按时交付一个限定范围的项目,并妥善完成交接。
对于以项目为基础的招聘,请对方展示一个从头到尾的完整项目:最初的范围、最终交付的成果,以及交接材料。这种对比能说明的问题,远比任何证书都多,也是在迪拜按项目聘请 Golang 工程师之前最值得做的一步。
阿联酋相关考量
值得提前决定,因为这会直接影响项目范围内的部署工作。
Amazon Web Services 运营着一个名为中东(阿联酋)的区域,代号 me-central-1,包含三个可用区,于 2022 年 8 月开放。如果将数据或基础设施保留在阿联酋境内对您的业务很重要,这是一个真实可行的选项,值得在迪拜按项目聘请 Golang 工程师、共同规划部署方案时与区域或全球部署方案一并权衡。
服务运行在哪里,会影响它的配置、部署流水线,以及在重写项目中的切换方案,因此这属于项目简报阶段就该确定的事,而不是等项目已经启动之后才临时敲定。
直接解答
一项有明确起点和终点的工作:一个新服务、对一个现有服务的重写,或从另一门语言迁移到 Go。如果工作是在您已经运行的代码库内持续进行的功能开发,我们的专属 Go 开发工程师页面描述的才是那种情形。
服务的源代码,存放在您掌控的代码仓库中,自动化测试,涵盖如何运行和如何部署的文档,以及与您团队进行的一次讲解会。代码和访问权限的所有权,会在工作开始前的方案书中以书面形式确认。
可以,这是企业在迪拜按项目聘请 Golang 工程师的一个常见原因。我们会先梳理现有行为,确认哪些部分必须原样保留,再依照这份梳理结果进行重写和测试,而不是凭猜测处理那些没有文档记录的边界情况。
两者通常都包含在标准范围内:代码本身、诸如容器镜像和构建流水线之类的部署配置,以及供您团队日常运维的文档。如果您希望我们继续负责,后续的持续托管和监控会单独商定。
按照针对您简报确定范围的书面固定报价计费,而不是按小时计费。规模较大的重写项目可以拆分为多个阶段,每个阶段单独报价、确认后再开始,费用因此永远不会是开放式的。
资料来源
书面固定价格
已收到,我们正在为您撰写报价。
工作时间内您将在 45 分钟内收到。请查收确认邮件。