Você não precisa saber de tudo para ser um bom programador
Como já escrito aqui
Era início de 2012, na faculdade, conversa vai, conversa vem, tomo uma decisão que mudou minha vida. Fazer um curso de desenvolvimento WEB focado em PHP + MySQL. Cadastro feito, começam as aulas e estava certo que eu estava no caminho certo. Aprendi como funciona o básico de sistemas WEB e fiquei encantado vendo tudo que criei, funcionando.
É hora de dar as caras no mercado. Olho as vagas de estágio e todos precisam de tecnologias as quais eu não conhecia ou nem tinha ouvido falar. Normal, tinha acabado de começar. Finalmente consigo meu primeiro estágio e aprendo um monte de framework CMS.
Depois de um tempo, vi que estava na hora de crescer. Recebo uma proposta de estágio em uma fábrica de software e me deparo com um outro mundo de tecnologias. Aprendo todas novamente e vou me sentindo um ótimo programador.
Segui esse fluxo por alguns anos. Projeto novo, tecnologia nova e cada vez mais me sentindo um bom programador. Aí que começa a ilusão.
Decido arriscar mais ainda e vou tentar empreender. "Poxa, eu sei programar, sei construir sistemas do zero. Só falta uma boa idéia e esperar meu bolso encher". Fui otário.
Nem tão otário assim… Depois de alguns anos como desenvolvedor, descobri o valor do cliente. Descobri que se eu usar a última versão do melhor framework não interessa para ele, se ele pode subir uma planilha que agiliza o trabalho dele. Aprendi o que é MVP.
Depois da falha, voltei ao mercado. Empresa nova, tecnologia nova. Será que voltei no tempo? Não! Era um produto que esta em constante crescimento e cada vez maior o número de requisições, cada vez mais funcionalidades.
A partir disso, eu fui entender o que é ser um bom programador. Um bom programador precisa entender o motivo do que ele esta fazendo aquilo e conhecer todos os riscos caso aquilo ali tenha algum tipo de problema. Quem ainda não subiu algo errado para produção, se prepare, porquê é bem paia.
Fui responsável, junto com outro desenvolvedor, em desenvolver uma plataforma de integração de pagamento junto com banco de dados. Um outro desenvolvedor disse para fazermos tudo com testes de unidade. Apenas mais uma tecnologia César? Não. Claro que utilizamos uma tecnologia de testes de unidade, mas o conceito e o que aquilo representou para o futuro da plataforma, fazendo com que tenha um número de problemas consideravelmente menor do que outras coisas sendo desenvolvidas.
Uma sensação estranha com aquilo. Sinto que subi um degrau como desenvolvedor naquele momento. O que fazer agora para continuar nesse ritmo?
Nunca fui desses desenvolvedores que soltam foguete quando um framework lança uma nova versão. Acho mais bacana o que eles tem para oferecer como arquitetura. Abri a documentação de um e vi coisas que nunca tinha ouvido falar. IOC, Queue, mock, OAuth (eu sei que nenhum desses conceitos tem ligação um com o outro) e etc.
Cara, que felicidade em ter dado esse rumo na minha carreira como desenvolvedor! Minha visão de arquitetura de software aumentou bastante quando fiz isso.
Aprendi e ainda estou estudando alguns conceitos utilizados em arquiteturas. Aprendi o valor de seguir padrões de código que uma comunidade inteira se movimenta para criar. Conheci novos design patterns. Que loucura!
Comecei olhar mais nesses novos conceitos de arquitetura de software que estão sendo falados no mercado: API First, Microservices e etc. Uma coisa vai se conectando a outra e fui vendo a importância de cada um daqueles conceitos estudados.
Consegue ver a diferença? Não falei o nome de nenhuma linguagem ou framework em nenhuma hora do post.
Não vou nem perder meu tempo falando que cada linguagem tem suas vantagens e desvantagens, que cada projeto tem suas próprias necessidades e que você vai conseguir achar a melhor ferramenta para ele, porquê isso já é figurinha repetida nesse nosso mundo de desenvolvimento.
Não sou o melhor desenvolvedor do mundo, mas sinto que se alguém tivesse me falado isso no início da minha carreira, eu não teria perdido tanto tempo estudando uma nova linguagem, um novo framework.