您的组织如何处理常见组件?

时间:2009-05-06 12:42:01

标签: collaboration project-organization

一个通用组件是一个库或一些其他代码,由一个组创建和维护,并被许多组使用。

我们遇到的一些问题是:

  • 用户不会报告组件问题。
  • 用户为组件构建变通方法以满足他们的需求。
  • 他们打破了与主干版本的兼容性,只是为了满足他们的最后期限。
  • 用户最终会编写自己的(不太健壮的)解决方案,因为他们认为这样做更好。

您的组织如何处理常见组件?

我的想法:

  • 将组件视为开源项目,并要求团队提交补丁。
  • 完全禁止对代码进行自定义修改。
  • ...

6 个答案:

答案 0 :(得分:2)

你在这里所拥有的可能是人为因素问题,而不是技术问题。事实上,它可能主要是一个学习问题(加上典型的未发明的这种综合症)。

在大公司工作之后,我意识到新人很难理解他可用的所有资源(即共享代码库),更不用说正确使用它们的方式和时间。

当您有新员工时,他/她是否在您的公共组件库中接受过正式培训?

然后是人们获得奖励的问题。在审核时,管理人员会奖励人们使用通用组件,改进它们并将改进提交回图书馆吗?或者管理者只关心他们自己的项目。

对于维护公共图书馆的小组,他们给那些花时间建议或提交改进的人提供了什么形式或重新定义?他们是否写在公司简报中?获得现金奖励?在bulliten板上拍照?

请记住,人们极不可能为没有得到认可或奖励的公司做点什么。

答案 1 :(得分:2)

我们正在努力转向更多基于服务的系统,因此,如果我们为一个项目创建特定功能,则可以通过Web服务从另一个项目中使用它。这种方式只有一个代码实例。

当然,这对某些类型的组件(例如:我们最近创建了一个PDF创建服务)比其他组件更好(对于字符串操作实用程序可能有点过分)。

答案 2 :(得分:1)

我在这里看到的唯一成功的组件是在编译版本(* .dll)中重新分发的。用户直接向拥有团队报告错误和请求功能,他们自己实现。有一个api用于为最有可能改变的东西编写自己的插件,因此人们可以在很多情况下扩展功能。

总是需要权衡

  • 说服人们使用您的组件
  • 同时保持合理的质量水平

不确定在您的情况下做什么是最好的事情,但一般情况下尝试自己实现核心逻辑,保持组件可配置/可扩展,这样人们就不需要一直改变核心并提供良好的支持。出于某种原因,一些开发人员总是倾向于重新发明轮子,但它是愚蠢的,所以我不会太担心它。

答案 3 :(得分:1)

一种好方法是定期进行代码审查。在这些期间,如果您发现轮子重新发明,您可以利用这个机会教育开发人员使用通用组件,或者为什么他们觉得需要重新发明它并与原始代码结合起来。这样就可以满足每个人的需求,并且每个人都可以改进组件。

答案 4 :(得分:1)

以与第三方库相同的方式对待它们。我甚至不会让其他团队看到消息来源 - 这样做会导致大量浪费时间的批评和反咬。

答案 5 :(得分:1)

该组织有多大?我已经看到这个东西在一个小型组织(总共几十个程序员)处理得非常好,其中一个或两个人知道每个组件的所有权,并且对功能请求做出响应。

更容易前往某人的办公室(或邮寄他们),解释您的需求,并获得以下其中一个:

  • 做你想做的事的预期方式,
  • 同意添加所需的功能(或指示一名小兵这样做),
  • 在公共组件中实现所需功能的权限,

只是开始编写解决方法,启动fork或编写等效的新组件。如果您的程序员很聪明,他们会做他们认为最简单的事情。诀窍是确保这是正确的。

除了链接列表之类的非常简单的东西之外,还没有进行大量的轮盘改造。对于特定产品,很少有私人叉子,最常见的是通过砍掉东西来减少代码大小。但通常的做法是修改原始组件以获得更多构建选项。