Um colega meu teve a impressão de que nosso departamento de software era altamente avançado, pois usamos um servidor de compilação com integração contínua e software de controle de versão. Isso não coincidiu com o meu ponto de vista, pois eu só conheço uma empresa que produzia software sério e também não tinha. No entanto, minha experiência é limitada a apenas algumas empresas.
Alguém conhece alguma empresa real (maior que 3 programadores) , que atua no ramo de software e não usa essas ferramentas? Se essa empresa existe, existe alguma boa razão para não fazê-lo?
version-control
continuous-integration
daramarak
fonte
fonte
Respostas:
Não tenho certeza se você os chamaria de um ato sério, mas o MySpace é muito ruim nessa frente: consulte http://highscalability.com/blog/2011/3/25/did-the-microsoft-stack-kill- myspace.html .
fonte
Você ficaria surpreso ao ver o que a realidade pode fazer com o senso comum ;-)
Eu acho que ainda existem algumas empresas por aí que não usam um sistema de controle de versão. Curiosamente, em todos os casos que vi até agora, não é porque eles se opõem de bom grado ao uso de tais sistemas, mas porque não sabem que existe algo como o SVN! Quanto a mim: concordo totalmente com você e não consigo imaginar uma situação em que não queira usar nenhum tipo de controle de versão. Inferno, estou empurrando meus próprios arquivos pessoais (documentos do word etc.) no meu PC doméstico para um repositório GIT.
No caso do sistema de integração contínua, é um pouco mais comum não empregá-los nas operações do dia-a-dia. Às vezes, também porque as pessoas não sabem que esse sistema existe, mas também vi casos em que a desculpa - muito questionável - por não usá-los é que "não somos suficientemente complexos" ou "está funcionando muito bem sem integração contínua, então, por que se preocupar em adicionar outra tecnologia? " É claro que não está uma avaliação realista - mas para responder à pergunta original: Não é tudo que incomum.
fonte
Atualmente, quase todas as empresas do meu setor (bancário) usam controle de versão. Mas é certamente possível desenvolver software com sucesso sem controle de versão. 20-30 anos atrás. nós fizemos exatamente isso.
Eu diria que muitos bancos, talvez até a maioria, não usam um servidor de compilação com integração contínua. Se você já está fornecendo software com sucesso sem integração contínua, é perfeitamente racional continuar nesse caminho.
fonte
Apenas para colocar um contraponto à resposta do @ RoadWarrior:
Eu trabalho para um banco. Passei os últimos 3 anos implementando o controle de versão e agora consegui obtê-lo em cerca de 20% da nossa base de código (que é bastante grande, temos aproximadamente 20 desenvolvedores e desenvolvemos nossos sistemas há> 16 anos)
Através de meus contatos na indústria (Banking), eu sei de uma tonelada de outros institutos financeiros que não tem o que qualquer pessoa em sã consciência iria chamar controle de versão.
Sim, nossa indústria (desenvolvimento de software) é muito mais triste do que a maioria gostaria de admitir.
fonte
controle de versão: em meu primeiro trabalho, há 25 anos, não havia um sistema de controle de versão como tal, mas esse era o RSX11 nos PDP-11s. No entanto, havia um nível muito alto de controle de qualidade com revisões formais de design e código (isso era na indústria nuclear).
Desde então, todo trabalho utiliza sistemas de controle de versão, incluindo SCCS, PVCS, clearcase, cvs e perforce.
Portanto, na minha experiência, o uso do controle de versão é praticamente universal no desenvolvimento sério de software.
integração contínua: isso é mais um problema, especialmente em locais com muito código legado que provavelmente nem tem muito em termos de testes automatizados. É preciso um investimento muito grande para mover o código existente para um ambiente de IC e, embora provavelmente seja útil no final, é difícil convencer a gerência a se comprometer com esse investimento sem obter ganhos a curto prazo.
Eu trabalhei em um local (um grande banco) que possuía IC em alguns projetos e implementamos um tipo de sistema de CI em nosso projeto que facilitou muito as coisas, mas levou cerca de 6 meses para ser feito.
fonte
Eu imagino que a maioria das empresas não usa essas coisas, porque elas não entendem os benefícios e seus desenvolvedores não querem aprender ou têm medo de "mexer no pote", fazendo coisas diferentes de como estão sendo. feito antes.
fonte
Embora eu seja um funcionário agora, costumava trabalhar por conta própria como consultor de banco de dados. Durante esses muitos e muitos anos, estive em algo entre 800 e 1000 empresas, desde o nível de mãe e filho até a Fortune 100.
Vi relativamente poucos lugares que faziam integração contínua, mas não me lembro de ter visto uma empresa que não usava controle de versão. Eu vi alguns onde não havia repositório centralizado para código controlado por versão. Programadores individuais usavam o controle de versão em seus próprios computadores ou mantinham o código controlado por versão em algum lugar abaixo do diretório inicial no servidor.
Eu não acho que nenhuma dessas empresas estivesse no negócio de software, mas seus programadores certamente estavam.
fonte
Não, eu odeio dizer isso, mas isso é verdade. Nos últimos dois lugares em que trabalhei (uma divisão de um banco e uma empresa financeira), fui eu quem implementou o sistema de controle de versão. Vários locais (especialmente lojas que não são de software) não entendem por que é realmente necessário para o desenvolvimento a longo prazo. A equipe normalmente começa como uma ou duas pessoas e depois cresce a partir daí, ainda que dolorosamente. Com uma ou duas pessoas, você pode sobreviver (não muito bem) sem ela, porque pode estar em comunicação quase constante entre si.
A construção contínua é um caso totalmente diferente. Se eu tivesse que adivinhar, apostaria que quase 90% dos locais onde o desenvolvimento é feito não tem uma solução de IC em vigor. Eu vou a conferências e a maioria das pessoas fica impressionada com o fato de uma organização que não seja um MS ou o Google. O que eu descobri é que a gerência não quer gastar a pequena quantia em dinheiro para colocá-la em funcionamento, mesmo que isso economize muito tempo.
Os maiores motivos que encontrei para isso são:
As pessoas na gerência subiram na hierarquia da mesma organização. Eles nunca usaram e não precisaram, por que precisariam mudar agora? Alguns que eu encontrei têm apenas medo de mudar. Algo novo é assustador e os impediria de tirar o pó de seu antigo compilador e ajudar os mais jovens em momentos de necessidade. Outras vezes (e com mais frequência), eles têm orçamentos sempre apertados e precisam tomar decisões sobre onde gastar dinheiro. Para nós, implementar essas é uma necessidade óbvia, mas é porque as usamos antes. Conhecemos os benefícios, eles não.
Os gerentes são pessoas que não são de TI e tudo o que eles fazem aqui é que você deseja gastar dinheiro com algo que não era necessário antes.
A maioria dos argumentos que ouvi de pessoas se concentram nas melhores práticas, etc., e essas são verdadeiras, mas o que a maioria dos desenvolvedores não entende é que você precisa defini-la em termos de uma situação financeira quando está nesse cenário. Com essa quantia de dinheiro que você gastará, economizaremos X e você precisará de números para fazer o backup. Isso nem sempre é verdade, mas tem sido minha experiência no passado.
fonte
Eu diria que muitas pessoas não usam o controle de origem porque podem estar codificando por conta própria e estão acostumadas a fazer backup da base de código em um servidor central ou disco rígido USB periodicamente. Há um ano, me forcei a começar a usar o SVN porque sabia que seria benéfico a longo prazo. Demorou um pouco para me acostumar, mas agora tenho um monte de histórico de código que posso referenciar constantemente. Gostaria agora de tê-lo implementado há quatro anos quando comecei.
Integração contínua? Use-o apenas se precisar. Para mim, existem apenas dois engenheiros de software, portanto não nos beneficiaríamos da integração contínua, porque trabalhamos em nosso próprio software.
fonte
Ha, você acha que está avançado porque tem SCM e um sistema de CI? Deixe-me dizer-lhe que é hora amadora quando se trata disso.
Muitas empresas fazem o mínimo necessário, porque é tudo o que realmente precisa . Se funcionar, e você obter boas versões reproduzíveis sem grandes esforços, não há nada que precise ser corrigido. A última coisa que você deseja fazer nessas circunstâncias é começar a "consertar" as coisas, especialmente quando se trata de tirar recursos administrativos do trabalho deles para configurar e administrar seus novos servidores e criar sistemas.
No entanto, algumas empresas exigem sistemas um pouco mais rigorosos, uma vez que não apenas fazem a compilação, mas controlam os requisitos até a implantação por meio de planos e resultados de testes, analisando o código, procedimentos de check-in no estilo do fluxo de trabalho e líder de equipe designado gerenciamento de pacotes de trabalho. É um gerenciamento de configuração real e fique feliz por não precisar trabalhar nesse tipo de ambiente!
Já trabalhei em algumas empresas e não consigo pensar em nenhuma que não tenha alguma forma de SCM. Alguns deles eram mais abrangentes que outros, mas todos tinham um sistema que funcionava bem para eles, mesmo os que usavam o VSS.
fonte
Mesmo com dois programadores quando você trabalha em aplicativos complexos e uma lista de tarefas, pode ser difícil não alterar as mudanças um do outro.
Até nosso antigo software de gerenciamento de versões mostrava as alterações lado a lado e permitia que elas fossem aplicadas em qualquer direção. As alterações teriam sido perdidas em mais de uma ocasião sem ela.
Vejo vários benefícios advindos da CI, mas não consigo imaginar por que nenhuma empresa não faria uso do software de controle de versão.
fonte
O último trabalho em que trabalhei sem controle de versão foi em 2006 (sou desenvolvedor da Web, FWIW). A empresa tinha apenas 2 ou 3 desenvolvedores antes de me contratar, mas eu fui o primeiro de 10 desenvolvedores contratados em apenas alguns meses. Uma das primeiras coisas que fiz quando fui contratada foi introduzir o controle de versão (CVS, porque eu não sabia o quanto isso era péssimo!), Mas muitos dos desenvolvedores contratados depois de mim não conseguiram fazê-lo funcionar em seus desenvolvedores. ambientes, então não o usei. Ah, mencionei que eles nem tinham instâncias locais do aplicativo em execução? Eles invadiram o código no servidor. E sem testes automatizados, é claro. Eu me encolho quando penso nisso.
Antes disso, fiz alguns trabalhos de programação do AS / 400 sem controle de versão. Não sei se um VCS decente estava disponível para esse ambiente.
Agora eu uso o Git para todos os meus projetos individuais, e meus últimos trabalhos também o utilizaram.
O IC é uma questão diferente. É ótimo ter, e eu o incentivo, mas é menos essencial que o controle de versão, pelo menos para projetos menores em linguagens interpretadas. A maioria dos meus trabalhos recentes teve servidores de IC; entre outras coisas, significa que ninguém pode esquecer de executar o conjunto de testes completo antes da implantação.
fonte
Definitivamente, encontrei alguns aqui e ali, mas principalmente pequenas empresas. O problema que vejo com mais frequência são as empresas que realmente têm SCM, mas consideram muitos projetos pequenos demais ou sem importância para acompanhar neles.
fonte