Situação: O dba é um contratado externo que mantém todo o código DAL verificado no TFS. Seria bom, como desenvolvedor de front-end, poder adicionar colunas, ajustar os processos e outros enfeites, sem precisar esperar que esse cara responda aos seus e-mails para fazer o trabalho.
Pergunta: Qual seria uma solução / processo recomendado que permitiria um desenvolvimento mais rápido / ágil, mantendo a integridade dos dados, bem como o amor e a felicidade da paz entre a equipe?
asp.net
teamwork
team-foundation-server
team-building
configuration
spaghetticowboy
fonte
fonte
Respostas:
Martin Fowler e Pramod Sadalage escreveram um excelente artigo sobre esse assunto.
Todo desenvolvedor tem seu próprio banco de dados no qual as alterações podem ser feitas. Essas alterações são então comunicadas de volta (como um conjunto de alterações) ao DBA que as implementa no banco de dados mestre, para que ele ainda esteja envolvido no processo, ele provavelmente sabe melhor sobre as estruturas e necessidades do banco de dados. Eu acho que essa é a melhor abordagem, pois é satisfatória para todas as pessoas envolvidas no processo e também é muito ágil.
Você pode alterar o DAL de maneira semelhante. Basta fazer as alterações e fornecer um conjunto de alterações para o DBA quando você concluir, para que ele possa revisá-lo e mesclá-lo ao mestre dele.
fonte
Bem, quando estou fazendo o DBA, sou conhecido por trancar tudo, para que os malditos programadores sujos não consigam mexer com isso. Todo mundo pensa que sabe como fazê-lo melhor, e "ajusta" as coisas para torná-las mais fáceis para si, e isso causa uma bagunça profana.
A outra alternativa é abri-lo e deixar que os programadores se envolvam nele por um tempo, depois pule e imponha a ordem à medida que as coisas terminarem ... Isso é certamente mais "ágil", mas pode ser um pesadelo real, dependendo do que deve ser cortado ou alterado ... Os DBAs geralmente entendem melhor o projeto como um todo e algumas mudanças que parecem inócuas podem ser problemáticas.
Se ele for o único gatekeeper, ele precisa ter uma especificação fixa ou ser capaz de "vender" sua visão para o resto dos desenvolvedores.
fonte
Há um grande problema que supera qualquer outro problema:
Por que ele está autorizado a fazer isso? Ninguém deve fazer check-out de um arquivo, a menos que esteja fazendo edições ativamente. Deve haver uma política de equipe sobre check-out.
O contratado (gostando ou não) trabalha como parte de uma equipe e, às vezes, outros membros da equipe podem precisar fazer alterações. Este é um problema de comunicação. Infelizmente, não há uma maneira automatizada de corrigir esse problema de comunicação.
fonte
Em vez de camadas horizontais, prefiro trabalhar no silo através das camadas.
Dessa forma, nenhuma pessoa / equipe pode bloquear dessa maneira.
Isso também significa que você é um desenvolvedor com habilidades múltiplas e é capaz de mover recursos com muito mais facilidade.
Obviamente, existem seções (design da interface do usuário e design do banco de dados) que podem precisar de mais trabalhos especializados, mas você entendeu.
fonte
Simples, se você ainda não possui, deve ter 3 ambientes:
O ambiente de desenvolvimento deve ser administrado por seus desenvolvedores.
Você também pode querer adicionar um ambiente de RC.
Outra resposta: se vários ambientes não forem possíveis, você poderá desenvolver um repositório com zombaria ... Dessa forma, você cria seus modelos e, em seguida, seu contratante é responsável por fazer com que seus modelos correspondam ao banco de dados. De certa forma, isso é melhor, pois libera seus desenvolvedores de se preocupar com o banco de dados.
fonte
Seu problema me parece ser de mão-de-obra. É apropriado e necessário que todas as possíveis alterações da base de dados sejam aprovadas por um especialista em banco de dados. Se a pessoa atual não puder acompanhar o trabalho em tempo hábil, você precisará de mais especialistas em banco de dados.
fonte
Esta é uma questão de gerenciamento, tanto quanto técnica.
Certamente, existem razões válidas para um DBA (independentemente de estar no local ou não, contratado ou funcionário) para manter os desenvolvedores longe de fazer qualquer tipo de alteração no banco de dados.
No entanto, o principal problema que você definiu é o de disponibilidade. O seu gerente sabe que é desperdiçado tempo / dinheiro esperando esta pessoa? Caso contrário, você pode mostrar como todos estão sentados.
fonte