Pergunta

A componente comum é uma biblioteca ou algum outro pedaço de código que é criado e mantido por um grupo e usado por muitos grupos.

Alguns problemas que temos são:

  • Os usuários não relatar problemas com os componentes.
  • Os usuários construir soluções para os componentes para atender às suas necessidades.
  • Eles quebram a compatibilidade com a versão tronco apenas para cumprir os seus prazos.
  • Os usuários acabam codificação de suas próprias soluções (menos robustos), porque eles acham que é melhor.

Como é que os seus componentes alça comuns organização?

As idéias que eu tenho:

  • Trate o componente como um projeto open source e requerem equipes para enviar patches.
  • modificações personalizadas Totalmente Desautorizar ao código.
  • ...
Foi útil?

Solução

O que você tem aqui pode ser um problema fatores humanos em vez de um técnico. Na verdade, pode ser primarly uma questão de aprendizagem (juntamente com o típico não inventado aqui síndrome).

Tendo trabalhado em grandes empresas, percebo que é difícil para uma pessoa nova para entender todos os recursos (ou seja, bibliotecas de código compartilhado) disponíveis para ele, muito menos como e quando usá-los corretamente.

Quando você tem uma nova contratação, é ele / ela recebem treinamento formal em sua biblioteca componente comum?

Depois, há o problema de que as pessoas são recompensados ??por. Em tempo de avaliação gestores recompensar as pessoas para a utilização dos componentes comuns, melhorá-los e submetê improvments volta para a biblioteca? Ou gestores simplesmente se preocupam com os seus próprios projectos.

Quanto ao seu grupo que mantém a biblioteca comum, que forma ou reconginition eles dão para as pessoas que tomam o tempo para sugerir ou enviar melhorias? Será que eles são escritos acima no boletim da empresa? Obter um bônus em dinheiro? Obter a sua foto na placa Bulliten?

Lembre-se, as pessoas são altamente improvável que fazer algo para uma empresa para a qual eles não recebem nenhum reconhecimento ou recompensa.

Outras dicas

Estamos tentando mover em direção a mais sistemas baseados em serviços, para que se crie uma funcionalidade especial para um projeto, ele pode ser usado de outro projeto através de um serviço web. Desta forma, há apenas uma instância do código.

Naturalmente, isso funciona melhor para alguns tipos de componentes. (Exemplo: recentemente criado um serviço de criação de PDF) do que outros (provavelmente um exagero para um utilitário de manipulação de string)

O único componente de sucesso que tenho visto por aqui é redistribuído em uma versão compilada (* .dll). Usuários reportar bugs e solicitar recursos diretamente com a equipe possuir, e implementá-las eles próprios. Há uma API para escrever seus próprios plugins para o material que é o mais provável para a mudança, para que as pessoas podem estender a funcionalidade em muitos casos.

Há sempre o trade-off para

  • convencer as pessoas a usar o componente
  • manter um nível razoável de qualidade, ao mesmo tempo

Não sei o que é a melhor coisa a fazer no seu caso, mas em geral tentar implementar a lógica do núcleo mesmo, manter o componente configurável / extensível para que as pessoas não precisam mudar o núcleo de todo o apoio tempo e boa oferta . Por alguma razão, alguns desenvolvedores tendem sempre a reinventar a roda no entanto estúpido é, então eu não me preocuparia muito sobre isso.

Uma boa maneira é instituir periódicas revisões de código. Durante estes se você encontrar uma roda re-inventado você pode aproveitar a oportunidade para tanto educar os desenvolvedores a usar a componente comum ou por que eles sentiram a necessidade de re inventar-lo e aliado seu raciocínio para o código original. requisitos desta forma de todos são feitos e os componentes são melhorados para todos.

tratá-los da mesma forma que faria bibliotecas de terceiros. Eu não iria mesmo deixar as outras equipes ver a fonte -. Fazê-lo pode levar a uma série de críticas desperdício de tempo e back-mordendo

Como grande é a organização? Eu vi essas coisas muito bem tratado em uma pequena organização (algumas dezenas de programadores total), onde um ou dois indivíduos são conhecidos por terem a propriedade de cada componente, e são sensíveis às solicitações de recursos.

É mais fácil marchar ao escritório de alguém (ou enviá-los), explicar o que você precisa, e tenha um dos seguintes:

  • o caminho esperado para fazer o que quiser,
  • acordo para adicionar o recurso necessário (ou dirigir um assecla a fazê-lo),
  • permissão para implementar o recurso necessário no componente comum,

Do que ele é apenas para lançamento em escrever soluções alternativas, começando um garfo, ou escrever um novo componente equivalente. Se os seus programadores são inteligentes, eles vão fazer o que eles acham que é mais fácil. O truque é para garantir que esta é a coisa certa.

Além de coisas realmente simples como listas ligadas, não havia um monte de roda-reinvenção acontecendo. Havia, muito raramente, garfos privados para determinados produtos, mais comumente para reduzir o tamanho do código por cortar as coisas. Mas a maneira usual de fazer isso era para modificar o componente original para ter mais opções de compilação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top