A existência desses paradoxos não significa que as coisas são inúteis. Eu não os indico para frustrá -lo ou deprimi -lo. Todos os dias, paradoxalmente, as equipes ainda criam e enviam software de trabalho.
Aponto -os para garantir que eles existam, que precisamos aceitá -los e lidar com eles e, esperançosamente, evitar as armadilhas e buracos que eles apresentam. Não podemos eliminar a estranheza e o caos, mas podemos antecipá -los e lidar com eles. Nosso trabalho é enviar apesar deles.
Um último paradoxo pode ser que o software nunca seja realmente feito. Sempre há mais um recurso que você pode adicionar. Pelo menos com uma ponte, fica bastante claro quando o trabalho é concluído e que o produto funciona conforme projetado.
Os engenheiros civis podem reivindicar com razão que não
Duas pontes são exatamente iguais. No entanto,
pontes compartilham muitas características conhecidas e os materiais que são construídos
têm características conhecidas. O que eles fazem
tem muitos conhecidos e não tantas incógnitas desconhecidas quanto se poderia pensar.
Eu não sou um engenheiro civil e não tenho nada além de respeito pelas boas pessoas
que desenham e construa nossas pontes, mas eu aponto isso para contrastá -lo para
Software de escrita. Escrevendo bem,
O software de funcionamento é difícil. Todo projeto realizado pelo desenvolvimento de software
As equipes nunca foram feitas antes. Lá
são semelhanças entre os projetos, com certeza, mas qualquer projeto tem nuances,
requisitos e um suprimento abundante de incógnitas desconhecidas. Ou, pode -se dizer que o desenvolvimento de software é
Cheio de paradoxos que são desafiadores de lidar. Aqui estão quatro:
Ninguém sabe quanto tempo nada
vai levar. Os clientes querem e precisam
Saiba quanto tempo as coisas vão demorar.
Isso, francamente, é provavelmente o maior desafio que o desenvolvimento de software
As organizações enfrentam. Nós simplesmente
Não são capazes de dizer com certeza quanto tempo qualquer projeto levará. Claro, nós podemos
estimar, mas quase sempre estamos descontroladamente – às vezes drasticamente
superestimando, mas geralmente subestimando drasticamente quanto tempo
vai levar. Mas para nossos clientes, este é um mistério
E uma dificuldade. Não entendendo o
Primeira parte do paradoxo, eles não entendem por que não podem ter certeza quando
Eles terão uma nova peça de funcionalidade e estão obviamente frustrados quando
Não é entregue como prometido. Tentamos pontos de história e planejando poker e tudo
tipos de outras técnicas ágeis para descobrir quando as coisas serão feitas, mas nós
Nunca parece ser capaz de superar a lei de Hofstadter: “Sempre leva mais tempo do que você espera, mesmo quando você leva para
Lei da conta de Hofstadter. ”
Lei de Brooks – adicionando desenvolvedores
para um projeto tardio faz isso mais tarde.
Este é o mais estranho dos paradoxos para o
Observador casual.
Normalmente, se você perceber que não vai cumprir o prazo para arquivar
Sua cota mensal de encher tubos de creme dental, você pode colocar mais pasta de dente
preenchimentos de tubo no trabalho e faça a data.
Se você quiser dobrar o número de casas que você constrói em um determinado
ano, geralmente você pode dobrar as entradas – trabalho e materiais – e obter duas vezes
tantas casas, dê ou leve. No entanto, como Fred Brooks mostrou em seu livro O mês mítico do homem“Adicionando mão de obra
para um projeto de software tardio faz isso mais tarde. ”
Isso é um paradoxo, mas é o mais próximo de uma lei no desenvolvimento de software
nós vamos conseguir. Brooks mostrou isso porque
Novos membros da equipe exigem treinamento, tempo para aprender o contexto de um complexo
sistema e aumentar a sobrecarga da comunicação, eles não podem contribuir para o
Projeto imediatamente, aumentando os custos.
Quanto melhor você obtém na codificação, o
Menos código que você acaba escrevendo
Leva muitos anos para ganhar experiência como um
Desenvolvedor de software. Aprendendo o direito
maneira de codificar, o caminho certo para projetar e todas as pequenas sutilezas da escrita
O software limpo e sustentável não é feito da noite para o dia. Mas com muita frequência, à medida que você ganha isso
experiência, você é colocado em posições de liderança que realmente reduzem o
quantidade de código que você escreve. Em vez de,
Você acaba em reuniões de design, revisando o código escrito por outras pessoas e gerenciando
pessoas. E às vezes você é promovido
fora do código de escrita todos juntos. Isso não quer dizer que um desenvolvedor sênior
A contribuição diminui – isso geralmente não é o caso. O processo de planejamento de projetos, orientação
desenvolvedores mais jovens, aplicando padrões de codificação e percebendo a importância
é para todos escreverem um bom código – todos contribuem poderosamente para o sucesso de
um projeto.
Mas você ainda acaba escrevendo menos código.
Estruturas de desenvolvimento de software
E as ferramentas continuam melhorando e mais poderosas, mas nosso software ainda leva
Tanto quanto se desenvolver e nunca parece correr mais rápido.
Se você comparar como criamos aplicativos da Web
hoje com ReagirAssim,
AstroAssim, Next.jse
Outras ferramentas avançadas poderosas com trinta anos atrás, quando processamos dados e
Html usando o Interface de gateway comum (CGI)você logo
Perceba que avançamos o LightYear desde os primeiros dias. Sempre parece um paradoxo para mim que nosso
Os processadores ficam cada vez mais rápidos, mas o desenvolvimento de software nunca parece se mover
qualquer mais rápido. O trabalho sempre parece expandir
Para preencher e exceder não apenas os orçamentos de tempo, mas também todos os ciclos da CPU. Nossos sites parecem mais agradáveis, mas somos realmente qualquer
mais produtivo? Nossos sites correm mais rápido
e os dados do processo melhor? Claro, estes novos
estruturas e bibliotecas abstraem muitas complexidades (alguém quer
Escreva mais o código jQuery?) mas no
ao mesmo tempo introduz novos problemas, como oleodutos de construção longa, configuração
pesadelos e inchaço de dependência. A existência desses paradoxos não significa
As coisas estão sem esperança. Eu não os indico para frustrá -lo ou deprimi -lo. E, no entanto, todos os dias, as equipes ainda se formam e
software de trabalho de navio. Eu os aponto para ter certeza de que percebemos que
Eles existem, que precisamos aceitá -los e lidar com eles, e espero evitar
as armadilhas e buracos que eles apresentam. Não podemos eliminar a estranheza
e caos que eles podem nos apresentar, mas podemos antecipá -los e lidar com
eles. Nosso trabalho é enviar apesar deles. Um último paradoxo pode ser que o software seja
nunca realmente feito. Sempre há mais um recurso que você pode adicionar. Pelo menos com uma ponte, é bastante claro
quando é feito e que funciona como projetado.