O que eu aprendi como desenvolvedor em 18 meses

Resumo

E aí pessoal, beleza?

A ideia deste post é compartilhar um pouco da minha história e do que aprendi nos últimos 18 meses como desenvolvedor Java.

Esse post é particularmente especial, pois é o primeiro que escrevo com um foco menor na parte técnica e maior na parte pessoal e de carreira. Então vamos lá !

Jornada até o primeiro emprego

Bom, tudo começou na minha infância. Com os meus aproximadamente 12 anos, ganhei um computador de presente do meu pai, que na verdade era usado por quase toda a família na época (meu pai, irmã e eu). O computador foi o primeiro contato que eu tive com algo de ‘tecnologia’, por assim dizer.

Assim como muitos da minha geração, eu costumava comprar jogos (na época em CDs) para me divertir nas horas vagas na minha infância/adolescência. Cito alguns dos jogos que jogava: Diablo II, Age of Empires I e II, Hulk, Age of Mithology, Ghost Recon, Tactical Ops, Soldier of Fortune, e outros…

Por tabela, acabei desenvolvendo muita curiosidade sobre como o computador funcionava. Além de lidar com a máquina, fiz alguns cursos básicos de informática sobre Windows, Word, Excel, Internet, Power Point, Page Maker e alguns outros softwares que nem existem mais. Aos 16 anos, também fiz um curso de montagem e configuração de computadores. Naquela época estavam bombando os famosos ‘notebooks’. Em paralelo, meu pai me ajudou financeiramente para fazer um curso de inglês durante dois anos.

Terminei o ensino médio e não sabia o que fazer da vida. Normal para a maioria, infelizmente. Eu sabia que gostava de números e não gostava de nada relacionado com área de saúde ou humanas. Então pensei em arquitetura. Mas minha nota no ENEM (Exame Nacional de Ensino Médio) não era suficiente para a universidade mais próxima de minha cidade (Dom Pedrito - DP) e eu não queria estudar mais um ano para o ENEM, então escolhi o curso de Engenharia de Computação, curso que existia em uma universidade bem próxima de DP, em Bagé. Escolhi esse curso por fazer mais sentido com o que eu já tinha interesse desde o começo: computadores, números, etc.

Bom, pulando a história sobre a formação em si, entrei em 2011 e me formei em 2015. Em 2016, tive a oportunidade de ser professor substituto do curso de Engenharia de Computação na Unipampa (universidade que estudei). Logo após, em 2017, iniciei o mestrado em Computação Aplicada na Unipampa em parceria com a Embrapa e por um ano e meio fiz as duas atividades simultaneamente. Em maio de 2018, terminou o contrato de professor substituto e pude focar minhas atividades para terminar o mestrado (que foi concluído em fevereiro de 2019).

Engenheiro de computação e mestre em Computação Aplicada. Gostei muito de dar aulas e de fazer pesquisas. O caminho natural era prosseguir com o doutorado e buscar uma carreira no ensino superior. Eu cheguei a desenvolver uma proposta de doutorado com três páginas sobre HMC (Hierarquical Multilabel Classification). Entrei em contato com um professor na UFSCAR, mas não pude seguir adiante. Descobri que ia ser pai. No momento em que a ciência estava seriamente ameaçada de cortes de bolsas e por questões financeiras, decidi mudar o rumo da minha vida.

Em maio de 2019 comecei a procurar emprego na área que eu achava que mais gostava: Ciência de Dados. Não obtive sucesso, a maioria das vagas eram para pessoas com experiência na área e quando não era, a concorrência acaba sendo com pessoas mais qualificadas (doutorado, estágio no exterior, etc). Então comecei a restringir menos as minhas opções de carreira, criei meu github e comecei a compartilhar meus trabalhos no Instagram, LinkedIn e Facebook, criei este site e comecei a buscar vagas na área de desenvolvimento e, logo neste começo, comecei a receber propostas de trabalho. Percebi rapidamente que a demanda por profissionais em desenvolvimento era muito maior se comparada com a demanda por analistas e cientistas de dados.

Uma estatística interessante (eu acho): enviei currículo para 95 empresas no Sul e Sudeste do Brasil. Obtive retorno positivo de 4 empresas e negativo de aproximadamente 20 (o restante não respondeu, comprovando o que muitos dizem sobre a falta de retorno nos processos seletivos). Dessas 4, avancei para as entrevistas em 2 e uma delas recebi uma proposta. Cabe ressaltar que a maioria das vagas que busquei foram para júnior e expondo que eu tinha graduação e mestrado, porém que não tinha experiência de mercado (só a de professor substituto em instituição pública). Foi então em outubro de 2019, após aceitar a proposta que tinha recebido, que começou minha jornada como desenvolvedor backend.

De forma objetiva, o que eu aprendi tecnicamente até agora?

A maior parte da minha carreira, antes de ser desenvolvedor, tinha trabalhado com as linguagens C e R. C no ambiente acadêmico e R com análise e visualização de dados e desenvolvimento de algoritmos de Machine Learning. Isso me ajudou muito na transição para a linguagem Java. Java é mais fácil do que C, porém tem a carga adicional de se compreender o paradigma de orientação à objetos e o ecossistema em volta do mesmo.

Posso dizer que aprendi muito sobre o ecossistema Java, principalmente o Java 8 e 11.

Junto com o Java, aprendi do zero sobre diversas ferramentas/tecnologias:

Posso dizer que essa era a minha maior dúvida antes de entrar no mercado: com quais ferramentas vou trabalhar? que tecnologias vou precisar aprender? como é o fluxo de trabalho de um desenvolvedor em uma empresa, em uma equipe?

Os pontos citados acima ajudam um pouco a responder essa dúvida.

Backstage…

Esse é um compilado bem legal, são vários aprendizados para um ano e meio de trabalho.

Porém, cabe mencionar que eu estudava algumas horas além do meu horário de serviço para preencher eventuais gaps de conhecimento que surgiam no caminho. Um deles que me recordo claramente foi o de testes automatizados: qual a melhor forma de fazer? quais as boas práticas? como fazer quando temos DAOs e acesso ao banco?

Acredito que ter essas dúvidas no início da carreira seja normal, nem mesmo profissionais mais experientes tem as respostas para tudo. Com a experiência que tenho hoje, ainda preciso tirar algumas dúvidas no Google ou no Stackoverflow sobre algum aspecto específico de uma tecnologia/ferramenta. É normal. Acho que superei esse sentimento de que temos que saber tudo decorado.

Mais importante que isso, é saber o fundamento das decisões: devo fazer testes para este controller? é o momento certo de fazer testes? TDD? Nesse ponto, pode ser que a internet atrapalhe pela ampla variedade de respostas que são geralmente subjetivas e controversas. Este é um dos pontos em que os profissionais mais experientes, líderes, ou referências técnicas do time podem ajudar. Com alguns minutos de conversa, você pode ser poupado de semanas de estudo e pesquisas por pessoas que vivem no mesmo contexto que você e já passaram por essas situações.

Soft skills (ou human skills, como alguns preferem)

Vou mencionar aqui algumas habilidades que vejo como importantes e essenciais para ter sucesso no trabalho em equipe:

  • boa e correta comunicação;
  • comunicação assertiva;
  • educação;
  • empatia;
  • paciência;
  • autonomia (levemente direcionada por alguém mais experiente, se possível);
  • foco no cliente;
  • colaboração;
  • aprendizado constante de novas tecnologias ou teorias;
  • flexibilidade;
  • controle emocional e trabalho sob pressão;
  • boa gestão do tempo;
  • liderança;

Nem todas que citei acima são essenciais para todos. Depende do contexto de onde o profissional está inserido. Se você é líder de um time, liderança se torna essencial. Se você é o liderado, um determinado nível de autonomia se torna essencial, pois ninguém gostaria de ser interrompido a cada 15 minutos com dúvidas simples (ou com perguntas mal formuladas).

Posso ter esquecido alguma habilidade que me ajudou, com o tempo vou adicionando aqui.

Referências que me ajudaram

Além dos meus colegas de trabalho e equipe (Moysés, Luana, Fábio, Rogério, Rodrigo, Kathleen e Flávia), que me ajudaram muito na minha evolução profissional e pessoal, tenho algumas referências que me ajudaram nesse início de jornada como desenvolvedor. Abaixo cito essas referências:

Dicas rápidas

  • Inglês é fundamental;

  • Soft skills são tão importantes quanto as hard skills. O tempo mostrará isso;

  • Aprenda a vender o seu peixe. Faça o seu marketing pessoal;

  • Tenha um portfólio público e acessível, com soluções criadas e/ou customizadas por você no Github;

  • Se você não é autodidata, faça um curso técnico e/ou uma graduação em um curso de computação;

  • Caso faça graduação, complemente a formação com cursos online na carreira que almeja seguir;

  • Agarre as oportunidades que surgirem. Se tiver mais de uma, escolha a que for mais adequada para você;

  • No início de tudo, experiência vale mais do que salário (isso caso você tenha condições de viver por um tempo com um salário abaixo do que pretende ter);

  • Tenha uma boa gestão do seu tempo;

  • Tenha o perfil sempre atualizado e adequado à vaga que você busca no LinkedIn;

  • Tenha um bom Networking;

  • Pesquise a média dos salários do cargo que busca, ou na empresa que você quer, no Glassdoor, por exemplo;

  • Treine antes das entrevistas técnicas e com o Recursos Humanos (RH);

  • Evite aprender sobre frameworks antes de aprender a base (exemplos: não comece com ReactJS sem antes entender o básico de HTML, CSS e Javascript);

  • Matemática e estruturas de dados são importantes;

  • Não espere oportunidades aparecerem, corra atrás delas ou as crie;

Cada uma dessas dicas pode ser aprofundada em um assunto futuro neste blog, fique ligado ;)

Posso ter esquecido alguma dica que me ajudou, com o tempo vou adicionando aqui.

Considerações Finais

Espero que este relato tenha auxiliado você de alguma forma na sua jornada e carreira como iniciante na área de desenvolvimento. E, ainda, que possa ter esclarecido para você algum caminho para que possa chegar no primeiro emprego.

Se você deseja apoiar o meu trabalho de escrita sobre os mais diversos assuntos de tecnologia, compartilhe meus artigos em suas redes sociais. O objetivo é o de contribuir com o compartilhamento de experiências práticas em desenvolvimento de software e sobre tecnologia com a comunidade brasileira (em PT-BR).

Valeu !! Até o próximo post !!