Pergunta: Como desenvolvedores, podemos aprender com os processos da indústria de transformação? A adoção de seus processos pode aumentar a taxa de sucesso do desenvolvimento de software?
Resposta: Sim, claro. Há muitas lições que os desenvolvedores de software podem aprender com a fabricação, apesar de o desenvolvimento de software ser um processo criativo. O desenvolvimento de software é, por si só, um processo e inclui muitos outros processos. Quanto melhor você definir e controlar esses processos, melhor poderá controlar o processo de desenvolvimento de software em geral. Isso não significa que você deve prescrever todas as teclas digitadas por um desenvolvedor; significa apenas que, como desenvolvedor, você naturalmente executa tarefas em uma determinada ordem, e essas tarefas geralmente podem ser gerenciadas. aqui estão alguns exemplos:
rastreamento de defeitos: quando um erro é observado ou relatado, o que acontece com ele? Você o escreve em um pedaço de papel e o cola em uma ponta de 'investigação'? Mais tarde, você remove esses restos, um de cada vez, os investiga e, eventualmente, os move para o pico "resolvido"? Se você fizer isso sem falhas toda vez que receber um relatório de bug, terá um processo mensurado e bem definido, e provavelmente estará muito melhor do que alguém que tenha um sofisticado sistema de rastreamento de defeitos de alta tecnologia que é tão oneroso que alguns membros da equipe rastreiam os erros de outras maneiras, ou de modo algum.
controle de versão: existe uma boa chance de você usar o controle de versão onde trabalha e, obviamente, o controle de versão é muito mais útil quando todos usam da mesma maneira.
design do produto: você decide quais recursos implementar lançando dardos em uma parede coberta com post-its? Nesse caso, você tem um processo. Eu não acho que alguém argumentaria que é um ótimo processo, mas pelo menos é um ponto de partida. Se você mudar o processo, como pode ter certeza de que sua mudança foi realmente uma melhoria, a menos que você avalie antes e depois? Você não pode.
revisões de código: uma revisão de código seria útil se o processo de revisão e os critérios de codificação fossem alterados para cada revisão? Claro que não.
ciclo de vida de desenvolvimento de software: Toda a análise -> design -> implementação -> teste -> ciclo de manutenção é um processo que deve ser definido claramente.
Em cada um desses casos, a implantação de um processo permite medir entradas e saídas e determinar se as alterações efetuadas têm o efeito pretendido. Não ter processos no lugar significa que você está apenas tentando adivinhar quando tenta melhorar a maneira como trabalha. É realmente disso que se trata a manufatura, e só faz sentido emprestar as sucessivas ferramentas de refinamento da manufatura, quando apropriadas.
Existe um campo inteiro dedicado à definição e melhoria de processos usados para criar e manter software; isso se chama engenharia de software . Não é surpresa que você tenha dúvidas sobre o processo de desenvolvimento enquanto lê sobre o CMMI - o CMMI é um produto do Software Engineering Institute .
O desenvolvimento de software já adotou muitos conceitos de fabricação:
É difícil não ver a influência das partes intercambiáveis de Eli Whitney no desenvolvimento da OOP e no componente .
As técnicas de gerenciamento de projetos usadas no desenvolvimento de software não são muito diferentes daquelas desenvolvidas para a fabricação. Como apenas dois exemplos, o mundo do software adotou apenas recentemente o conceito Kanban, desenvolvido décadas atrás na Toyota, e os gráficos de Gantt foram utilizados na fabricação muito antes da construção do primeiro computador eletrônico.
Metodologias de gerenciamento da qualidade, como o Six Sigma, desenvolvido para fabricação, foram adaptadas ao desenvolvimento de software.
Apesar do ambiente pesado do processo, o desenvolvedor deve se engajar na criação de coisas "on the fly".
Você está me dizendo que alguém decidirá por si próprio adicionar um patch ao pacote de reconhecimento facial e o incluirá na criação de produção sem antes criar um problema no sistema de rastreamento, revisar o design, verificar o código no controle de versão ou fazer com que o pessoal do teste o analise primeiro? Nosso processo exige essas coisas por algumas boas razões. Se "on the fly" você quer dizer "fora do processo", isso é inaceitável.
Fazer as coisas rapidamente é contra o espírito da manufatura.
Novamente, se "on the fly" significa "fora do processo", você está certo. Mas se você acha que a fabricação não requer pensamento rápido e desenvolvimento de soluções criativas para os problemas, você está errado. Todos os tipos de problemas surgem no processo de fabricação - os cupcakes não têm enchimento suficiente de creme, as superfícies pintadas de repente param de passar no teste de controle de qualidade, 20% das peças acabadas não possuem um anel de retenção importante, o sistema de mistura de massa quebrou parte crítica...