Corra para ter software funcionando
Coloque algo real em funcionamento o mais rápido possível
Software que funciona é a melhor maneira de construir momentum, unir sua equipe e descartar ideias que não funcionam. Isso deve ser sua prioridade número um desde o início.
É ok fazer menos, pular detalhes e tomar atalhos em seu processo se isso levar a um software em funcionamento mais rápido. Uma vez lá, você será recompensado com uma perspectiva significativamente mais precisa sobre como prosseguir. Histórias, wireframes, até mockups em HTML, são apenas aproximações. Software em funcionamento é real.
Com software real e em funcionamento, todos ficam mais próximos do verdadeiro entendimento e acordo. Você evita discussões acaloradas sobre esboços e parágrafos que acabam por não importar de qualquer forma. Você percebe que partes que você pensava serem triviais são na verdade bastante cruciais.
Coisas reais levam a reações reais. E é assim que você chega à verdade.
Coisas Reais Levam ao Entendimento
Quando um grupo de pessoas diferentes se propõe a tentar descobrir o que é harmonioso... suas opiniões sobre isso tendem a convergir se elas estiverem criando coisas reais em escala completa. Claro, se estiverem fazendo esboços ou jogando ideias, elas não concordarão. Mas, se você começar a fazer a coisa real, tende a se alcançar um entendimento comum.
—Christopher Alexander, Professor de Arquitetura (de “Contrasting Concepts of Harmony in Architecture”)
Coloque em Funcionamento o Quanto Antes
Eu não acho que já estive envolvido com um projeto de software — grande ou pequeno — que foi bem-sucedido em termos de cronograma, custo ou funcionalidade que começou com um longo período de planejamento e discussão e sem desenvolvimento concorrente. É simplesmente fácil demais, e às vezes divertido, gastar tempo valioso inventando recursos que acabam sendo desnecessários ou inimplementáveis.
Isso se aplica em todos os níveis de desenvolvimento e “colocar algo real em funcionamento” é um mantra fractal. Não se aplica apenas ao projeto como um todo, é pelo menos igualmente aplicável ao desenvolvimento em menor escala de componentes dos quais o aplicativo é construído.
Quando há uma implementação funcional de um componente chave disponível, os desenvolvedores querem entender como ele vai ou não funcionar com a parte deles no aplicativo e geralmente tentarão usá-lo assim que puderem. Mesmo que a implementação não seja perfeita ou completa no início, essa colaboração precoce geralmente leva a interfaces bem definidas e recursos que fazem exatamente o que precisam.
—Matt Hamer, desenvolvedor e gerente de produto, Kinja