É tarde, estou pronto para ir para casa depois de concluir os cálculos cad para um projeto de mola enquanto estou sentado em minha mesa às 16h de sexta-feira. Na indústria de serviços, chamamos isso de hora das bruxas. É onde uma catástrofe pode acontecer no momento mais inoportuno de uma tarde de sexta-feira. Sempre achei que era superstição.
Entreguei ao técnico meu projeto de mola e ele foi para a máquina CNC para configurar a máquina para fabricação. Depois de dez minutos, o técnico de primavera vem até minha mesa e me dá um tapinha no ombro. Meu dedo sumiu, ele respondeu. Eu pensei que não o tinha ouvido corretamente e me virei apenas para ver seu sangue em todos os meus desenhos. Eu perguntei, o que aconteceu? Um pedaço do material da mola ficou preso na máquina CNC. Como parte de seu melhor julgamento, ele decidiu que era melhor remover o material de aço com o dedo da máquina em vez de usar a haste de metal ao lado dele.
Como resultado, a máquina pegou seu dedo e o processou. A máquina CNC cuspiu na outra ponta. Corri para a máquina CNC e recuperei seu dedo solto. Depois de colocar o dedo na bolsa, levei-o às pressas para o hospital, apenas para que o resto do dedo fosse amputado.
Não é a introdução que você esperava? Nem eu, mas este foi o início da minha carreira como engenheiro de software.
Tirei folga no dia seguinte para decidir se esse era o rumo da minha carreira. Eu não queria mais trabalhar no setor de manufatura industrial. Então, apresentei minha carta de demissão. Entreguei meu telefone comercial, carro da empresa e todo o equipamento. Minha renúncia foi efetivada imediatamente. Eu precisava de tempo para descobrir o que queria fazer. Eu amo construir coisas com software. Venho construindo aplicativos com Linux por diversão desde os doze anos, mas agora queria levar o desenvolvimento de software a sério pela primeira vez. Estabeleci uma meta para mim. Levei os próximos 365 dias para definir minha meta de entrar em uma empresa de tecnologia de software. Então, escrevi nove passos que daria para alcançar meu objetivo. Isto é o que eu fiz:
1) Comecei pesquisando e identificando os tipos de funções de engenharia de software que me interessavam.
Quem você quer ser neste campo? Foi uma das primeiras perguntas que me fiz quando comecei. Meu objetivo era treinar como Back-End Engineer e ganhar dois anos de experiência para fazer a transição para DevOps. Fiz questão de aprender explicitamente como o back-end funciona e concluir projetos de portfólio para ganhar confiança em minhas habilidades de codificação. Ganhei conhecimento suficiente sobre o front-end para ser competente, mas optei por não me especializar. Depois disso, comecei a procurar campos de treinamento de codificação que tivessem uma alta taxa de sucesso em encontrar candidatos a empregos na indústria de tecnologia. A próxima etapa foi aprender antes do início do treinamento de codificação.
2)Construa uma base sólida em ciência da computação e programação fazendo cursos online, lendo livros e aprendendo novas linguagens de programação.
Quando comecei a aprender HTML, levei uma semana, e aprender o que eu precisava para CSS levou de 2 a 3 semanas. Quando comecei a aprender JavaScript, levei nove meses para aprender. Lutei com métodos de aprendizado, promessas e loops de eventos, etc. Por algum motivo, não entendi bem o suficiente para progredir. Quando comecei meu estágio, fui incumbido de aprender o GO, que nunca havia aprendido ou ouvido falar. Comecei minha abordagem para aprender o idioma de maneira diferente. Decidi ler a documentação do idioma oficial no GO, o que levou dois dias inteiros. Então fiz duas semanas de prática com o idioma por conta própria. De alguma forma, tudo no ano passado deu certo. Demorou dois meses para aprender uma nova linguagem de programação. Pouco depois, comecei a trabalhar em correções de bugs e a enviar minhas primeiras solicitações pull. Moral da história – falhe mais rápido. Quanto mais você luta com esta carreira, mais você vai aprender. É uma das melhores, mas mais frustrantes maneiras de seguir em frente. As lutas que tive com JavaScript me permitiram aprender GO. Eu sei que posso aprender qualquer outra linguagem de programação. Analisei os requisitos de trabalho que exigem idiomas específicos e ignoro seus requisitos devido à minha capacidade de aprender qualquer idioma.
3) Obtenha experiência prática trabalhando em projetos pessoais e contribuindo para projetos de código aberto.
Todas essas são ótimas sugestões que fiz, mas precisava de algo que me desse uma vantagem clara em relação aos outros candidatos que se candidatavam às mesmas funções juniores. Como eu conhecia meus objetivos, sabia que precisava encontrar um mentor na área para ajudar a me orientar. Uma vez que nos conectamos, Ele foi capaz de me orientar profissionalmente e também me ajudar a debater sobre os problemas que surgiram. A experiência do mentor no início de sua carreira é inestimável e não deve ser negligenciada.
4) Faça networking participando de eventos do setor, juntando-se a comunidades on-line relevantes e conectando-se com pessoas no campo da engenharia de software.
Não posso enfatizar isso o suficiente – o networking é a chave para o sucesso. Se você está procurando emprego, pode haver a possibilidade de que alguém em sua rede possa dar uma recomendação ou avisar sobre uma vaga. Tenho visto mais engenheiros contratados por conexão do que por experiência e conhecimento devido à sua rede. Isso permitiu que eles fossem menos examinados durante os desafios de codificação e entrevistas técnicas. Também conheço engenheiros talentosos que ainda estão procurando emprego um ano depois do treinamento de codificação porque não estão dispostos a se conectar com outras pessoas. Não subutilize este poderoso recurso.
5) Faça um estágio ou aprendizado para ganhar experiência no trabalho e aprender com profissionais experientes.
Na cultura atual de querer tudo agora, houve uma mudança significativa de trabalhar como estagiário não remunerado para ser compensado enquanto trabalhava. Inversamente, as empresas não querem contratar estagiários, a menos que tenham alguma experiência. Quando procurava um estágio, concentrei-me na cultura da empresa, na pilha técnica e nas oportunidades de aprendizado. Eu estava pensando em conseguir um emprego. Eu tinha as habilidades técnicas para me tornar um desenvolvedor, mas o ajuste da empresa era o tópico mais importante da minha lista. Quanto mais você fizer algo, maiores serão as chances de melhorar e aprender com essas experiências.
6)Prepare-se para entrevistas técnicas praticando desafios de codificação e exercícios de quadro branco.
A melhor maneira de se preparar para três palavras. Pratique, pratique, pratique. Eu não posso enfatizar isso o suficiente. Praticar e resolver desafios de codificação ajudará você a melhorar suas habilidades de resolução de problemas e a se familiarizar com muitos algoritmos e estruturas de dados diferentes. Entenda o problema, para saber e entender o que precisa ser feito antes de começar a codificar. E, por último, divida o problema e elabore um plano para resolver a solução. Eu já era competente como desenvolvedor como parte do meu ano de estudo. Fiz aproximadamente um desafio de codificação por semana para ajudar a aumentar minha confiança.
7)Procure oportunidades de emprego pesquisando quadros de empregos on-line e páginas de carreiras da empresa e entrando em contato com recrutadores.
Este deve ser um acéfalo. Candidatei-me a todos os empregos e a todos os empregos. Eu precisava lançar uma rede ampla e poderia começar em qualquer lugar para entrar no software. Eu não me importava se era estagiário, queria estar perto da equipe de software para aprender e ganhar experiência prática em um ambiente de desenvolvimento real. Mesmo que eu não fosse qualificado para o trabalho, ainda assim me candidatei. Se a função fosse para um sênior, eu ainda me inscrevi. A inscrição me deu a experiência de entrevistar e aprendi o fluxo e refluxo do processo de entrevista.
8) Crie um portfólio do seu trabalho para mostrar a potenciais empregadores. Esta é uma boa maneira de mostrar experiência técnica e know-how e ganhar prática.
Todo desenvolvedor deve ter uma página pessoal e um repositório online. Estou falando por experiência própria sobre por que acredito que isso seja opcional (para mostrar a um possível empregador). Todos os engenheiros do meu grupo da comunidade (desenvolvedores de back-end, engenheiros de dados e desenvolvedores de banco de dados) não foram questionados sobre seus portfólios e foram solicitados a fazer um desafio de codificação antes de uma entrevista formal. Seu portfólio era insignificante para ajudá-los a conseguir um emprego. Se você é um desenvolvedor front-end, desenvolvedor de interface do usuário, desenvolvedor da Web ou desenvolvedor de UX, precisará ter um portfólio robusto, essencial para que seu potencial empregador veja seu conjunto de habilidades de front-end. Até mesmo potenciais empregadores recusaram ou mostraram desdém ao ver meu portfólio. Minha estratégia para conseguir um emprego era focar em passar no desafio de codificação e na entrevista técnica/quadro branco. Depois de receber um estágio, o foco era ser um ótimo membro da equipe e ser o mais útil possível durante o (s) sprint (s). Hoje em dia, uso principalmente meu repositório online como referência para soluções que criei e que possa usar no futuro, ou como notas de software que guardo para mim.
9) Seja paciente e persistente – a procura de emprego pode levar tempo e pode exigir o envio de muitos aplicativos, mas mantenha-se positivo e não desista, valerá a pena! Defina expectativas realistas.
Nenhum plano é 100% infalível e não desanime se demorar mais do que o esperado. Eu também fiquei flexível. Meu objetivo era ser um engenheiro de DevOps, mas estava aberto a qualquer função em software. Tive muita sorte porque meu patrocinador de estágio estava procurando um desenvolvedor de back-end. E em 365 dias, consegui entrar no espaço DevOps e finalmente concluir meu objetivo.