避免被开发人员劫为人质

hostage100107这个周末,我开始与一位本地艺术家进行对话,这位艺术家一直在协助她的老板管理她老板拥有的几个Web应用程序。

对话转了转,关于每周支付开发费用的事情还有些泄气,但没有看到与他们合作的开发人员有任何进展。 现在,开发人员希望向他们收取一笔总价,以完成该项目,以及每周的维护费,以满足其他要求。 情况变得更糟。

开发人员转移了域名,以便他可以管理它们。 开发人员还将应用程序托管在其托管帐户中。 简而言之,开发商现在将他们扣为人质。

值得庆幸的是,与我一起工作的那个女人过去曾要求管理访问权限,以编辑该站点的一些模板文件。 开发人员本可以提供她有限的访问权限,但他没有。 他(懒惰地)向她提供了该站点的管理登录信息。 今晚,我使用该访问权限来备份该站点的所有代码。 我还弄清楚了他在使用什么管理软件,并进入了数据库管理,可以导出应用程序的数据和表结构。 ew。

所有者计划在开发完成后将网站移至新域名。 这是巨大的,因为这意味着如果开发人员与公司之间形成愤怒的分离,则当前域可能会过期。 我以前见过这种情况。

如果您要建立外包开发团队,请注意以下几点:

  1. 域名注册

    用公司名称注册您的域名。 让您的开发人员成为该帐户的技术联系人也不错,但是 决不要 将域的所有权转让给公司以外的任何人。

  2. 托管您的应用程序或站点

    您的开发人员可能拥有托管公司并可以为您托管您的网站,这是很好的,但不要这样做。 相反,询问他的建议以在哪里托管该应用程序。 开发人员确实熟悉管理软件,版本和资源位置,可以帮助您更快地完成产品。 也就是说,尽管拥有托管帐户,并使用自己的登录名和访问权来添加您的开发人员。 这样,您可以在需要时拔出插头。

  3. 拥有密码

    不要以为您拥有代码,而是以书面形式编写。 如果您不希望开发人员使用您付给他/她的解决方案在其他地方进行开发,则必须在签订合同时做出决定。 我以这种方式开发了解决方案,但在我保留了代码权利的地方也开发了它们。 在后一种情况下,我通过协商降低了申请费用,从而激励公司给我权利。 如果您不介意开发人员在其他地方使用代码,那么您不应该为此付出高昂的代价!

  4. 获得第二意见!

    当人们告诉我他们正在竞标或与其他专业人士咨询时,这并没有伤害我的感觉。 实际上,我推荐它!

最重要的是,您要为开发人员的才能付出代价,但必须保留对该创意的控制权和所有权。 是你的。 是您对它进行了投资,您为此冒险了您的业务和获利能力……您应该保留它。 可以替换开发人员,这决不应该使您的应用程序或更糟糕的是对您的业务造成风险。

6条评论

  1. 1

    我是一名网络应用程序开发人员,我同意你的大部分观点(也许全部),但我想澄清一下#3。

    将网站或应用程序的批发复制出售给另一家公司(或更糟的是竞争对手)是不道德的,应始终在您的合同中规定为不可接受。 但是,我在为客户的项目工作时开发了针对常见问题的创新解决方案,该项目与他们的特定业务无关,也不代表整体解决方案的重要部分。

    例如:
    客户希望页面级别和字段级别控制与用户角色相关联。 ASP.Net 的“开箱即用”功能提供文件夹级别的权限。 因此,我扩展了 .Net 的本机权限,并将解决方案作为整体 Web 应用程序的一部分提供。

    我相信他们有权使用整个代码库(如合同中规定的那样),但我觉得使用相同的方法和代码块来完成未来项目的扩展是合理的。

    另一个皱纹:
    我是在被一家咨询公司外包的时候做到这一点的。 在您看来,咨询公司是否有权返回并复制该解决方案,并将其作为自己的解决方案进行营销?

    • 2

      并不真地,

      我想我们同意。 我的观点是确保您拥有代码并且可以带着它走出大门。 如果您的开发人员正在为您编译代码并将其推送到您的站点 - 您没有代码。 我已经看到这种情况发生在图形、Flash、.NET、Java……任何需要源文件并被输出的东西上。

      道格

  2. 3

    我知道你来自哪里,虽然我不同意所有的 100%(我有警告),但公司应该始终牢记这一点。

    1. 绝对。 不能强调这一点。 我曾在一家这样做的小公司工作过,我对参与其中感到极度内疚。 我很高兴我能够离开那里。 客户应绝对保留对其域的控制权。 如果他们有足够精明的人,请不要让开发人员访问此内容。 如果没有,请确保开发人员至少有办法让您通过某种经销商界面更改信息/转移域。

    2. 我会部分同意这一点,但这取决于情况。 如果您正在部署一个简单的 PHP 应用程序并且需要低成本托管,那么无论如何,请获取 LunarPages 或 DreamHost 帐户或其他东西并将其转储到那里。 授予开发人员访问权限。 然而,低成本的共享主机肯定有它的缺点……尤其是对于更大的东西。 但是,如果您大到可以担心这一点,那么您应该有一个可以处理它的技术人员。 其中很多显然与信任有关。 如果可以的话,肯定会在合同中加入一些东西(限制等)。 如果开发人员不需要做任何花哨的事情,第三方托管就很棒。 我承认我很伤心,因为这真的是一个情境性的事情。 它还取决于站点的大小,使用的技术阵列。 如果它会很大,考虑雇用一个员工。 并不总是一种选择,但对于大东西来说更安全。

    3.这也是我以前的公司做的。 你可以离开,他们会给你 HTML、图像等。 但没有代码。 该代码基本上是一项租赁服务。 话虽如此,有拥有和拥有。 我一直在做非独家销售。 基本上,我需要能够重用我的组件。 我对拥有它的客户没有意见,用它做他们想做的事,让其他人继续工作……但我不会抵押自己,每次都必须重新发明轮子。

    4.总是。 总是。 总是。

  3. 4

    不错的帖子……做得好,尽管我不同意一项(#2):

    “您的开发人员可能拥有一家托管公司并且可以为您托管您的网站,这很好,但不要这样做。”

    虽然我理解这背后的逻辑,但在某些情况下,要求将您的项目托管在其他地方可能会适得其反。 如果开发您的网站或应用程序的公司有一个他们更喜欢使用的托管平台,那么他们使用它可能会更有效率和生产力。

    此外,从哲学的角度来看,如果您因为不想成为“人质”而拒绝使用开发人员的托管平台,那么这从一开始就树立了不信任的基调。 如果您真的不信任您的开发人员来托管他们,那么您真的想一开始就与他们合作吗?

    我知道确实存在很多关于这种情况的恐怖故事,但总的来说,我建议您专注于寻找您信任的开发人员。 您可以利用您的开发人员的主机,但仍然可以通过请求管理访问权限和进行自己的备份来保护自己。

    再次,好的帖子和非常有用的信息。

    谢谢!
    迈克尔·雷诺兹

    • 5

      喜迈克尔,

      这听起来像是一个信任问题,但我不这么认为——这实际上是一个控制和责任问题。 如果您打算在您的网站开发上投入大量资金,那么您必须确保您可以控制它的环境。

      商业中发生的事情会破坏关系,它们不一定是负面的。 也许您的开发人员/公司获得了一个非常大的客户,并且无法负担您的时间。 也许他们会改变业务目标。 有时他们的托管公司可能会遇到问题。

      我主张您控制并负责托管您的主机,这样您就可以依靠您的开发人员来完成他擅长的事情 - 开发!

      我很欣赏你的回击,迈克尔。

  4. 6

    我也是一名网络应用程序开发人员,我认为你已经一针见血了。 一些想法:

    我想大多数人都会同意(并且基于下面的评论)#1 是绝对的。 永远,永远不要这样做。 曾经。 在任何情况下。

    我对 #2 的看法可能与我的一些开发人员不同:我们拒绝为我们的客户托管最终产品(当然,我们为客户托管了一个测试服务器,以便在开发过程中测试驱动产品)。 我们很乐意帮助客户设置自己托管或寻找托管服务提供商。 我们根本不想涉足托管业务。 如果这意味着放弃工作,那就这样吧。 有很多很棒的托管公司或基础设施公司可以以更便宜的价格提供这项服务。 我们鼓励我们工作的可移植性,并将尽我们所能帮助托管它,即使客户在几年后更换托管服务提供商。

    对于#3,我们的客户获得了最终产品的所有源代码,但需要注意:对于解决方案中使用的第三方产品(例如 Telerik 或 Component One 的 Web 控件),我们可以为客户提供编译后的 dll第三方控件(比如网格)。 我们与那些第三方公司(我们提供给客户)的许可协议禁止我们重新分发这些类型控制的源代码,因为它是第三方的知识产权,而不是我们的。 使用这些类型的产品为客户节省了开发时间,并且比从头开始构建相同的功能要便宜得多。 在完成任何工作之前,我们都会提前了解这项政策。 当然,如果客户希望为自定义控件开发付费(而不是使用第三方的预构建产品),我们会提供该自定义控件的源代码以及其他所有内容。

    当谈到代码重用时,我们坦率地说,我们可以重用部分代码,除非它在任何工作完成之前专门为客户使用(例如专有业务流程)而专门开发。 当然,如果客户想要开发专有代码,他们可以使用。

    正如其他人所说,始终推荐#4。 总是!

    问候,
    蒂姆·杨(Tim Young)

你觉得呢?

本网站使用Akismet来减少垃圾邮件。 了解您的数据如何处理.