我受命管理一个外包给一些乌克兰开发商的项目。
该公司以固定价格通过Elance雇用了他们。那时,我的老板让我一个人去处理它们并完成工作。我为需要完成的工作创建了详细的规范。
该项目涉及处理XMPP,RabbitMQ和数据库。在我与他们的第一次会面中(总是IM),我彻底解释了他们需要做什么。他们似乎理解了它-并且他们非常相信它将很容易做到。
到目前为止,一切都很好。但是一个星期后,当我们再次见面时,他们对需要做的事情充满了误解。当我问一个开发人员他是否知道XMPP时,他说他是第一次使用它。在我们的第一次会议上,我特别提到了项目的复杂性和所涉及的技术。另外,我一再要求他们编写一个功能规范,以确切地说明他们将如何做。但是他们说“不”,并坚持要宁愿编写代码。我说了可以。
该项目在3周后完成,他们交付了所需的东西。那时我开始查看代码。在大多数情况下还可以,但是存在一些重要问题:
- 他们将需要分离的一些东西硬编码为配置文件
- 我需要将多个配置文件合并为一个
- 他们没有写任何文件
- 其他一些小的变化
我要求他们进行这些更改(文档除外)-而且,我们有一个论点。
他们说,由于价格是固定的,我要求他们在完成工作代码后进行任何更改都是不公平的。他们在该项目上花费了不合理的时间,现在索要任何东西是完全错误的。
现在,他们终于进行了更改,项目结束了。但这在我心中留下了一些疑问...
他们做了所需的工作,但我需要正确完成,因此进行了更改。我真的不公平吗?
为什么我同意让他们在没有功能说明的情况下进行编码?
为什么我不能确保他们第一次了解所有内容?
有人发现自己处于同一位置吗?您是否认为有更好的方法来管理外包项目?
-更新-
感谢所有意见-在考虑了全部经验之后,我可以得出结论...
尽管从我的角度来看我对规格并不模糊,但是我当然并没有像建议的那样使它们变得铁定。因此,收获是:始终尽可能具体-从他们的角度阅读规格,看看是否错过了一些东西。重复至少三遍。
仅指定代码应该做的还不够。您必须指定代码的外观。目录结构将是什么;甚至文件名(如果可能)。这样可以避免您日后烦恼。严格指定编码准则,变量命名约定,内部文档格式等。请确保它们遵守这些准则,否则请严格遵守。
从他们的角度要求功能规范-坚持在任何代码之前编写它。这将避免很多混乱和误解。
查看正在开发的代码,以便您更早地识别异常并进行纠正。每隔一天至少与他们交谈一次。
最后,尝试与他们建立良好的融洽关系。让他们感到您欣赏他们的工作。不要夸大其词以使其符合您的准则,而是请他们这样做并告诉他们,一旦他们完成该项目,这将使您对代码的维护变得非常容易。