Imagine a seguinte situação. Você está sendo operado do coração em um hospital e, de repente, ouve o médico dizer que esqueceu de ligar o monitor cardíaco. Ah, ele também acabou de perceber que a sala de cirurgia não tem respirador…
Ninguém em sã consciência admitiria um erro desses. Afinal, esse tipo de desleixo profissional pode custar a vida do paciente. Mas, guardada as devidas proporções, é exatamente isso que acontece — com muita frequência — no mercado de TI.
Eu gosto de pensar no software como se fosse um organismo vivo. Então. quando eu preciso fazer uma alteração, tenho que fazer isso sem matá-lo. Eu chamo este conceito de “Live Software”.
Na minha carreira, percebi que, para manter meu software saudável, é preciso adotar uma série de cuidados para que ele esteja sempre consistente e íntegro.
É esta condição que permite desenvolver o sistema, enquanto ele serve ao seu propósito. Caso contrário, o software vai perdendo qualidade, acumulando erros até que ele para de atender ao usuário e morre.
Neste artigo, quero compartilhar com você três estratégias que vão mudar a sua forma de programar e vão ajudar a manter seu software forte e livre do risco de morte.
#1 Programe como um chef de cozinha
Em uma cozinha profissional, antes de começar a preparar os pratos, o chef e sua equipe fazem o mise em place. Trata-se de um termo francês que significa “colocado no lugar” ou “posto em ordem”.
É nesse momento que eles vão separar e preparar todos os ingredientes e instrumentos necessários para fazer os pratos. Assim, na hora de cozinhar, tudo já está à mão e a equipe não precisa ficar correndo de um lado para o outro atrás dos recursos.
No desenvolvimento de software também tem que funcionar assim. O setup é fundamental. Tudo precisa estar ao alcance de apenas um comando.
Se entra alguém novo na equipe, não faz sentido ele passar dias ou até semanas tentando ajustar a máquina para começar a contribuir com o time. É fundamental ter organização para que o ambiente desenvolvimento seja rapidamente preparado com apenas um comando.
O mesmo pensamento se aplica às mudanças feitas no código. Tudo tem de ser automaticamente testável.
É um grande desperdício de energia e dinheiro ficar manualmente testando se alguma coisa quebrou com a alteração.
Por fim, quando você termina uma funcionalidade e precisa entregar para o cliente, nada de copiar arquivos em pendrive e sair correndo para a sala dos servidores, se logar como root, tirar o sistema do ar e atualizar a nova versão.
Com um comando você precisa ser capaz de lançar uma release para o cliente sem intervenção manual. Se você quer ser visto como um profissional de alto nível, tem que trabalhar com métodos de alto nível.
#2 Automação com um toque humano
Um dos maiores trunfos da tecnologia é poupar o tempo que gastamos em atividades repetitivas. Por isso, não consigo entender que programadores — que trabalham com tecnologia todo santo dia — não aproveitem essas possibilidades de automatização.
Não estou dizendo que navegação manual no sistema seja desnecessária. Ela é fundamental para a criação do design de interação e a experiência do usuário. Mas, uma vez definido o fluxo de uso, o computador deve entrar em cena!
Os testes para garantir o comportamento do sistema devem ser automatizados.
Quanto mais fácil for adicionar um teste automático no seu projeto, mais fácil vai ser adicionar funcionalidades ou mudar o seu comportamento. A execução de milhares de testes precisa ser rápida e sempre ao alcance de um comando.
#3 Pronto é quando está no ar!
Uma das maiores ciladas no desenvolvimento de software é a síndrome do funciona na minha máquina. É aquela história do “tá pronto! Só falta colocar no ar”.
É fundamental que você conclua cada tarefa entregando o que foi desenvolvido para o cliente. Concluir uma tarefa também envolve o deploy da aplicação para que o cliente possa usá-la.
Só assim você vai conseguir receber o feedback para saber se está ou não no caminho correto. Até alguém poder usar o que você desenvolveu, você está no escuro. Tudo está no campo da crença — o cliente acredita que foi claro na demanda e você acredita que entendeu tudo perfeitamente.
Por isso, até que você consiga o feedback do cliente sobre o uso do que foi desenvolvido, nada está pronto.
Quanto mais rápido o cliente obtiver o retorno sobre o investimento feito, mais confiante ele estará para continuar investindo no projeto. Essa é a chave para estabelecer um ciclo de feedback positivo.
A arma secreta
Na minha jornada, descobri que há um elemento-chave que conecta essas três estratégias: o Python.
A linguagem é, para mim, o Jarvis do Homem de Ferro. Trata-se a tecnologia que permite ao Tony Stark materializar todas as suas ideias mirabolantes em um curto espaço de tempo — e de uma forma até divertida.
Essa sensação de ter as ferramentas à sua disposição para fazer o que você se propõe, é exatamente o que eu sinto com Python e todo o ecossistema da linguagem.
Python vem com baterias inclusas — há uma imensidão de bibliotecas disponíveis que te permitem fazer praticamente tudo que você imaginar. E não para por aí. A linguagem tem uma comunidade ativa e parceira que dá vida a um ecossistema que gera valor para todos os envolvidos.
Estamos diante de uma linguagem feito por programadores e para programadores.
Essas qualidades fazem com que a adoção da linguagem só cresça a cada ano e seja usada por empresas como Industry of Light and Magic, Disney e Pixar.
Além disso, quando falamos de desenvolvimento web, temos vários frameworks escritos em Python para você desenvolver grandes aplicações web. O mais popular e meu favorito é o Django.
Python e Django é uma combinação incrível para o desenvolvimento eficaz de aplicações web.