Há algum tempo, no meu Instagram (@soudanielcosta — me segue lá, pô!), postei um story a respeito da relação entre desenvolvimento e música. Como a única coisa que faço há mais tempo do que programar é tocar guitarra, uni o útil ao agradável e trouxe 5 dicas pra você virar um dev rockstar!
[EDIT 11/07/22] Para comemorar o 🤘 Dia do Rock (13/07) em grande estilo, convocamos todas as pessoas da Code Sense para montar uma playlist que é a nossa cara! 📻 Ouça no Spotify ou no final desse artigo.
Já vi várias analogias de desenvolvimento de software associadas a algum esporte. Por exemplo, nosso bom e velho “scrum” vem justamente do rugby. É muito bacana, porque o esporte sempre vem associado com equipe, vitória, união e isso é bom em projetos.
Mas pra mim, que sou um perna de pau (já fui jogador de basquete e judoca, bem antes de começarem a chegar os boletos e os joelhos pararem de colaborar), a analogia com esporte sempre vem com dor, suor, cansaço e possibilidade 50/50 de perder ou ganhar.
Prefiro então a analogia com a música: Um time de desenvolvimento é como uma banda e o cliente é como a audiência. E se um produto ou release é um concerto, cada sprint é como uma música do set. Para completar o show, a banda precisa tocar todas as músicas para a audiência.
Para dar um show digno da sua audiência, é necessário muito ensaio, e principalmente, que todos os músicos conheçam o repertório de cabo a rabo. Esse setlist é justamente o roadmap, e os trechos de cada música (cada solo, pausa, refrão) são justamente os requisitos.
O que mais não pode faltar numa banda? Entrosamento!
Todo mundo tem que tocar a mesma música, no mesmo tom, na mesma velocidade, e com os volumes todos bem equalizados, sem esquecer da proficiência em seus instrumentos. No final da música, ainda tem que ter certeza que a audiência gostou!
Viram? Programar é exatamente como tocar numa banda!
Vídeo de 2008 da minha antiga banda autoral Mindborn. Bons tempos!
1) Estude e pratique todos os dias!
Não pense que ter banda é coisa simples! É preciso tirar as músicas, praticar, aprender e praticar as técnicas que você não conhecia, praticar, praticar e praticar (já falei “praticar”?). Repita até o ponto em que você já saiba tocar cada trecho da música no tempo certo, do jeito certo, sem pensar e sem olhar pro instrumento.
Com a programação é igual: aprenda as ferramentas, entenda os paradigmas da linguagem usada, compreenda os design patterns dos frameworks, e principalmente saiba como identificar e resolver problemas. Saiba “afinar” o seu instrumento e conheça todos os timbres que ele fornece!
Escolha um software de edição que te ofereça tudo isso. Minha sugestão é o VSCode, que tem tudo o que você precisa e é totalmente 0800. 😉
2) Toque para a banda e não para você mesmo
Tive um colega de banda que SEMPRE aumentava o volume do seu teclado uns 25% depois da passagem de som, porque… 🤦♂️ bem, sei lá porquê. Mas acabava que ficava o show inteiro com aquele teclado altíssimo atrapalhando todos os outros músicos e deixando a audiência irritada com a estridência toda.
Num time de desenvolvimento, isso acontece com muita frequência. Muitos de nós têm um bichinho interno que nos empurra a querer implementar soluções complexas. Seja para não dar o braço a torcer em buscar soluções simples ou para mostrar como somos bons e capazes de trazer uma solução “fora da caixa”.
Sim, somos bons o suficiente! Porém o cliente e o resto do time não tem nada a ver com isso. Quando um de nós começa a sair do tom, seja por insistir em provar um ponto ou querer ficar acima do resto do time, o projeto inteiro sofre. E geralmente a maior prejudicada acaba sendo a entrega. Trabalhe com o único foco na entrega de valor.
3) Quando uma corda arrebentar, chama um roadie!
Vocês já devem ter visto alguns shows onde a corda de uma guitarra arrebentou no meio de uma música ou um cabo falhou e o microfone ficou sem som, e por aí vai.
Posso garantir pra vocês que alguma coisa do tipo acontece em praticamente todos os shows de todas as bandas. Mas a audiência muitas vezes não vê nada ou não é afetada, porque a banda toda está preparada para ocasiões como essa. Seja com um roadie (aquele rapazinho com lanterna na cabeça que entra pra ajudar os músicos) bem preparado, ou com o resto da banda improvisando até que o problema seja resolvido. Muitas vezes o vocalista começa a falar algo ou até a cantar outra música. Dá pra dizer que esse cara provavelmente é o gerente de projetos no seu time, a propósito. 😉
Lembra do bichinho interno de cima? Ele também é o responsável por não conseguirmos pedir ajuda, e muitos de nós acabam apanhando sozinhos horas e horas para bugs bobos.
Peça ajuda rápido. Dedique de 15 a 30 minutos na tentativa de solução do problema, e se não der certo, chame um colega! Se você trabalha sozinho, estude sobre RDD (Rubber Duck Debugging). O show não pode parar!
4) Toque sempre os clássicos!
Tenho certeza absoluta que o Metallica não suporta mais tocar Nothing Else Matters ou The Unforgiven. Eu apostaria dinheiro nisso. No entanto, quando fizeram uma turnê mundial apenas com o repertório selecionado pela internet (quem comprava o ingresso podia votar nas músicas que queriam ouvir e eles tocavam as mais votadas em cada show), essas músicas estavam presentes em TODAS as listas, e sempre dentre as mais votadas.
E o que isso tem a ver com desenvolvimento? Essa é fácil. Sim, você vai ter que fazer CSS, estruturar o HTML, fazer o sistema ser responsivo, e no final de tudo isso ainda vai ter que testar. Eu sei que é chato, e eu também não gosto. Mas faço, sempre fiz, e continuarei fazendo sempre que for necessário. Uma UI concisa e bem implementada evita bugs, deixa os usuários mais seguros em utilizar o sistema e reduz até os chamados de suporte!
5) Ensaio é pra corrigir os problemas, além de dar e ouvir feedback
O entrosamento de uma banda só vem quando um já sabe o que o outro vai fazer, quando todos já conhecem cada música, e principalmente quando todos conseguem se entreolhar e dar aquele toque pro colega que sempre se perde naquele pedaço específico daquela música (você já sabe quem é).
É tipo a daily/stand up meeting: um ambiente de confiança, onde todo o time está pronto para ouvir críticas construtivas a respeito do seu trabalho, bem como orientar onde e como os outros membros podem melhorar. Para receber esses feedbacks, precisamos deixar o ego de lado e estarmos abertos aos apontamentos do nosso time.
Lembre-se, não é sobre você, mas sim sobre aquele cabeludo que gastou todo o salário comprando o ingresso do seu show, ou sobre aquela garotinha que está chorando na primeira fila por ver o seu sonho realizado bem à frente dos seus olhos.
Da mesma forma, saber dar feedback é um ponto em que geralmente pecamos. Temos que ter empatia com os colegas e tentar comunicar nossas observações da melhor forma possível. Cada pessoa tem sua sintonia e sua forma de se expressar, não custa nada nos esforçar para que essa comunicação funcione da melhor forma.
Por fim:
Sabe aquele cabeludo batendo cabeça que gastou o salário inteiro com o ingresso do seu show (falei dele há pouco)? É o seu cliente, cara. Pegou todas as economias e usou pra te contratar e fazer o sistema que ele acredita que vai mudar a vida dele. Não decepcione esse cara! Ele está torcendo por você e contando contigo!
“Ain, Dani. Eu trabalho só atendendo empresas”. 💁♂️
Lembre-se que a esmagadora maioria das empresas brasileiras é pequena ou micro, e às vezes um sistema ou app é a forma menos cara do cara poder escalar o negócio dele e dar emprego a mais gente. E toda pequena empresa tem um grande e corajoso empreendedor por trás, enfrentando a tudo e a todos, e que pegou todo o dinheiro do seu próprio bolso para investir no trabalho que você está fazendo pra ele. Vamos dar a esse cara o show da vida dele!