Boss é cético em usar um sistema de controle de versão para um novo projeto, devo?

9

Consulte /software/109817/superior-refusing-to-use-subversion

Minha pergunta é semelhante, mas aqui estão as principais diferenças no meu cenário:

  • Estamos iniciando um novo projeto do zero, usando PHP e tecnologia da web. Não haveria tempo de inatividade no desenvolvimento, como o adotaríamos desde o início, se eu puder.

  • Minha equipe de desenvolvimento consiste em mim e meu chefe. Nós somos o departamento de "TI" de uma empresa relativamente pequena.

O aplicativo da Web substituirá um aplicativo herdado por absolutamente nenhum controle de origem. Devido a variações nos requisitos legais geográficos, foi tomada a decisão (antes da minha contratação) de dividir o aplicativo em 7 diretórios completamente separados para cada versão. Desenvolvedores diferentes fizeram coisas diferentes em lugares diferentes e em momentos diferentes depois disso. Corrigir alterações entre eles, bem, acho que poderia ser melhor, acho que é por isso que estou postando.

A proposta do meu chefe, colada diretamente a partir de um email:

  • As atualizações devem ser enviadas como pacotes na pasta SUBMISSIONS. O pacote deve conter todos os arquivos relevantes, bem como um arquivo 'UPDATE.NFO' que contém uma descrição da atualização, uma lista de todos os novos arquivos incluídos (com descrições) e uma lista de todos os arquivos modificados com detalhes de modificação.

  • Os pacotes de atualização devem se concentrar em um elemento individual e não se desviar da finalidade pretendida. O código deve ser projetado para ser modular e reutilizável sempre que possível.

  • Todos os pacotes enviados devem ser instalados no ambiente de teste de cada desenvolvedor logo após o envio. Cada desenvolvedor deve revisar a nova adição e expressar quaisquer preocupações sobre sua instalação no ambiente de produção. Uma atualização de pacote padrão deve ser realizada por no mínimo 3 dias úteis para esse processo de revisão antes de ser carregada no ambiente de produção. Atualizações / correções de alta prioridade podem ignorar esse requisito.

A razão pela qual o controle da fonte foi inventado é tornar tudo automático, certo? Sugeri subversão, porque era isso que eu usava na faculdade. Boss não gosta de subversão porque "Isso faz uma bagunça no código" (isto é, usa magia binária e não é claramente legível). Tentamos uma vez, mas acho que tentar usá-lo no Windows cometeu erros estranhos em maiúsculas / minúsculas e não conseguimos verificar nossos arquivos. Não sei se é apenas subversão ou todos os produtos de controle de origem que são questionáveis.

Então, que tipo de argumento devo fazer com meu chefe? Ou ele está certo, e pode haver o risco de perder todo o nosso trabalho de algum bug estranho?

Ou estou completamente errado? O controle de origem é realmente necessário na minha situação? Este é o nosso principal software crítico para os negócios, pelo que acabará sendo enorme, sem dúvida. Mas há apenas 2 desenvolvedores (agora).

Além disso, se eu não posso convencê-lo, haveria algum sentido em usá-lo apenas para mim? Estou falando como alguém com experiência muito limitada, na verdade, usando svn; tudo o que eu realmente sei é checkout e commit. Quais são os recursos do controle de origem (podem incluir outros produtos além do svn) que ajudariam no meu esforço de desenvolvimento individual?

Por favor, não "consiga outro emprego" comentários. Isso não é útil para o debate.

DFPercush
fonte
25
"E, por favor, não faça comentários sobre" arrume outro emprego ". Por que não? Seu chefe está condenado.
precisa saber é o seguinte
9
Mesmo que você não consiga convencê-lo, ainda é útil usá-lo em particular para si mesmo. Assim, você pode editar livremente seus arquivos sem medo. Você tem vários "pontos de salvamento" para os arquivos em que trabalha. Mesmo que você precise ter o SVN em sua caixa local ... melhor do que nada.
Lord Tydus
10
@ S.Lott, acho que o OP tem o direito de especificar os limites da questão. "Obter outro emprego" não é viável, por exemplo, se o OP mora em um país pequeno e seu sogro é o chefe de um trabalho no qual o OP recebe o dobro ou o triplo do que ele ' vale a pena no mercado aberto. Em suma, isso não faz parte da questão.
Dan Rosenstark
8
@ S.Lott I, on the other hand, think that the OP is being silly in trying to specify the bounds on the answer....Bem, o limite específico não é nada tolo. Os conselhos de carreira estão fora de tópico e, embora uma resposta que responda à pergunta e ofereça conselhos de carreira seja perfeitamente adequada para mim, não acho que seja tolice para a OP especificar que ele não se importa com conselhos de carreira.
yannis
9
@ S.Lott O que eu acho bobo, por outro lado, é o conselho de carreira em si, especialmente quando é "procurar outro emprego". Existem tantas variáveis ​​desconhecidas que acho impossível levar a sério esse conselho.
Yannis

Respostas:

35

Não pergunte a ele. Não conte a ele. Mostre a ele.

Instale svn, ou git, ou o que você quiser em alguma máquina extra. Pratique você mesmo até se sentir confortável não apenas usando, mas explicando. Se você quiser deixá-lo confortável com seu novo sistema, precisará estar mais do que confortável com ele. Você precisará ajudá-lo a se recuperar facilmente quando ele estragar uma mesclagem ou verificar algo no lugar errado.

Quando estiver pronto, mostre a ele exatamente do que está falando. Mostre a ele que isso não "bagunça" nada. Saliente que ele não apenas permite recuperar qualquer versão anterior do seu código com facilidade, mas também permite saber exatamente o que mudou entre as duas versões.

Saliente que, se alguma coisa acontecer com o servidor (bug grave, vírus, hacker, falha no disco ...), os dois parecerão heros se puder reconstruir instantaneamente a versão necessária. Saliente, também, que você parecerá duas vezes melhor se conseguir produzir qualquer versão sob demanda. Pesquise seu email antigo e compile uma lista de problemas que você teve no ano passado que você poderia ter evitado com o controle de versão.

Dê a ele uma folha de dicas que facilitará o uso do seu sistema de controle de versão.

Finalmente, sugira algumas opções, mas deixe a decisão para ele . Você deve configurar seu próprio servidor ou usar um dos muitos serviços hospedados ? Você deve usar svn, git ou algo mais? Você deve migrar todos os sete projetos para o sistema ou experimentá-lo com um ou dois primeiro?

Caleb
fonte
9
+1 para "não conte, mostre (depois do treino)"
Javier
2
Mas, como alguém disse, não usá-lo para a sua própria cópia
0fnt
3
+1 parasearch your old e-mail and compile a list of problems you've had over the past year that you could have avoided with version control.
Daenyth
Além disso, a exibição pode ser mais fácil se houver algo para mostrar. Eu recomendaria usar algo com uma GUI, como por exemplo, SourceTree para git. Dessa forma, parece menos intimidador, é mais fácil de aprender, ninguém precisa ter medo de atrapalhar todo o sistema com um pequeno erro de digitação e já é praticamente uma versão gráfica da cola que você mencionou.
R. Schmitz
28

Os benefícios do controle de origem vão muito além de permitir que vários desenvolvedores trabalhem em um único pedaço de código. Eric Sink, o fundador do SourceGear , lista alguns motivos convincentes para usar o controle de origem como um desenvolvedor exclusivo :

- It's an undo mechanism.
- It's a historical archive.
- It's a reference point for diff.
- It's a backup.
- It's a journal of my progress. 
- It's a server. 

Eric também tem um bom tutorial de controle de fonte para iniciantes . Há um tutorial on-line gratuito do Mercurial disponível por Joel Spolsky, o Mercurial é um sistema de controle de versão distribuído popular.

Como próximo passo, sugiro que você comece a usar o controle de origem localmente em sua máquina, como um desenvolvedor exclusivo. Muito em breve, seu chefe perceberá que você é capaz de pura magia, como em questão de minutos, se não segundos, até que ponto um bug super-crítico ocorre e você diria a ele exatamente quais contas de clientes foram afetadas e precisam ser corrigidas antes de tudo o inferno se abre. Ou ser capaz de desfazer quaisquer alterações que o CEO desaprova de maneira super rápida.

E, finalmente, antes de tentar convencer seu chefe, você pode se aprofundar no tópico sobre tratamento de objeções . São 101 de vendas.

Se malsucedido - siga em frente o mais rápido possível, não há muito sentido em perder seu tempo inclinando-se nos moinhos de vento.

Vlad Gudim
fonte
11
+1 para o artigo de Eric Sink. +1 por sugerir hg. O git é a moda, mas a pergunta afirma claramente que op é um iniciante no controle de fontes e hg é um pouco mais fácil de entrar do que o git. +1 para o tutorial hg. +1 por fornecer uma referência orientada para vendas, é assim que você lida melhor com os chefes de cabelos pontudos (-0,5 por ser um link de pesquisa no Google). +1 para a referência de Dom Quixote. Esse é o tipo de resposta que me faz querer criar contas duplicadas para que eu possa votar mais de uma vez.
yannis 3/11
11
Essa resposta basicamente diz tudo. Apenas mais uma razão pela qual você deve usar o controle de origem por conta própria: se e quando você seguir em frente, ter alguma experiência com o controle de origem ficará bem em seu currículo. Não ter essa experiência não ficará bem.
quer
10

Sim, o uso do controle de origem, mesmo que seja apenas para você, vale totalmente a pena. O Git, por exemplo, funciona muito bem para um desenvolvedor autônomo e permite que você faça coisas como ramificação e mesclagem (com o menor custo possível) e versão das alterações à medida que avança.

O SVN - ou qualquer sistema de controle de versão, na verdade - também permite que você faça isso, mas a fusão é um pouco mais problemática.

Dan Rosenstark
fonte
Eu concordo com o uso do Git. Eu o uso para projetos, mesmo se eu sou o ÚNICO desenvolvedor.
DanO 3/11/11
Eu também estou começando. Eu não faria isso com o SVN ... mas com o Git, é tão fácil criar e gerenciar um repositório sem sequer lidar com um servidor, que fica mais difícil justificar não dizer git inito segundo em que você começa a trabalhar em algo.
Chao
sem o direito, .gitignoreum repositório Git é basicamente inútil. Essa é a única coisa que você precisa ter em lugar além degit init
Dan Rosenstark 18/09/2013
" mas a fusão é um pouco mais problemática " - se o OP usar ele mesmo, não haverá muita fusão, existe? Fundir de volta seu próprio ramo de recursos em seu próprio mestre, talvez, mas qualquer código que ele recebe de seu chefe prefere entrar em um novo commit, não? Não tenho experiência com SVN, apenas git.
R. Schmitz
11
"Não haverá muita fusão" até que exista. Qualquer projeto, mesmo que seja um hobby, acabará exigindo que a equipe de desenvolvimento (que pode ser uma pessoa) trabalhe em duas coisas ao mesmo tempo. Então você tem que mesclar, e em algum momento você encontrará conflitos de mesclagem.
Dan Rosenstark 02/03/19
5

Se eu não posso convencê-lo, haveria algum motivo para eu usá-lo apenas para mim?

Sim. Há benefícios em usá-lo apenas para você. Você obtém o histórico de alterações para poder ver o que é diferente.

Não. Não há benefício, porque seu chefe condenou seu projeto a um monte de retrabalhos inúteis porque eles estragaram tudo.

S.Lott
fonte
Não é apenas que você pode ver o que é diferente, você pode alternar entre a nova versão e qualquer versão antiga em dois segundos.
gnasher729
3

Eu recomendo, como mencionado antes do uso do git, a razão nº 1 porque qualquer VCS é uma rede de segurança em caso de desastre. Procure o adesivo "Em caso de incêndio: git commit, git push, deixe o prédio". O código pode ser armazenado em outro lugar, mas não em um laptop que possa quebrar, ser roubado ou qualquer outra coisa ... até mesmo um servidor de rede local não é o lugar mais seguro para algo tão valioso quanto o código.

Número 2. Rastreabilidade de alterações, quem fez o que, quando, etc ... Mescla, Desfaz. Número 3. Diferente da ferramenta mágica para o número 2 e muitos outros casos. Número 4. Ramos Número 5. Marcando versões, lançamentos, etc.

Você pode encontrar mais informações sobre um dos fluxos de trabalho mais comuns do git aqui: https://nvie.com/posts/a-successful-git-branching-model/

Eu sei que o uso do git pode ser intimidador no começo, mas é um bom investimento para uma habilidade e um item obrigatório para qualquer equipe de desenvolvimento.

Sobre o seu problema com o caso de texto, evite usar o Tortoise, eu sei que a maioria das pessoas o usa como uma GUI para o git, pois era muito comum para o SVN, portanto, pode ser a primeira escolha, em vez disso, use a linha de comando ou outra GUI como o github desktop ou o SourceTree da Atlasian.

Daiki
fonte