Software Engineer

Iniciando uma carreira em programação

Desde o começo da minha carreira com programação, com certeza a dúvida mais comum que ouvi, por meio das minhas participações ativas de comunidades e minha rede de contatos, sempre foi e é: como iniciar uma carreira em programação.

Meu propósito aqui é centralizar minha opinião de forma a responder essa pergunta com um pouco do meu conhecimento e trajetória, lhe revelar as habilidades fundamentais que você precisa desenvolver, quebrar alguns mitos e fornecer algumas dicas para você se destacar, caso você pretenda seguir essa profissão.

Já nesse primeiro momento, quero começar falando de uma verdade polêmica: não importa sua formação acadêmica ou sua idade, a programação é uma área acessível a todos. Claro que alguns podem ter mais dificuldade do que outros, o que é muito variável, mas com a dedicação e persistência necessária, qualquer um consegue chegar lá.

Mas também permita-me fazer um alerta: Se você pretende começar na área porque um curso ou alguém lhe prometeu ganhar 10k em 6 meses, ou porque acha que é um meio fácil de ganhar dinheiro, sugiro que repense sua decisão. Qualquer área pode lhe render dinheiro, mas definitivamente você precisa ser um bom profissional para isso, precisa dedicar tempo e esforço, e muitos anos de estudo. Não pense que tudo isso se resuma apenas em fazer um curso simples, conseguir um emprego e sair ganhando rios de dinheiro. Assim como qualquer profissão, requer profissionalismo e comprometimento.

Requisitos

Para iniciar uma carreira em programação, não há exatamente requisitos universais. No entanto, existem algumas características e habilidades que podem ser úteis e lhe ajudar a se tornar uma boa pessoa programadora:

  1. Curiosidade e paixão pela tecnologia: Um interesse genuíno e curiosidade em relação à tecnologia é bastante importante. Grande parte do seu estudo e trabalho, vai ser adentrar em problemas complexos e buscar soluções, portanto você precisa ter ânimo e gostar do que faz para de fato conseguir se sair bem. Há quem diga que trabalha sem essa paixão, mas particularmente eu não me vejo trabalhando com programação caso não tivesse-a.
  2. Habilidades de comunicação e trabalho em equipe: Embora a programação possa ser um trabalho individual em muitos momentos, a capacidade de se comunicar efetivamente e colaborar com outros membros da equipe é importante para projetos maiores. Comunicar-se bem é essencial.

Idade

Não há limite ou recomendação de idade para iniciar uma carreira em programação. Pessoas de todas as idades podem aprender a programar, seja por diversão ou por profissão. Desde estudantes do ensino médio até profissionais em transição de carreira, todos têm a oportunidade de se tornar programadores(as) bem-sucedidos(as). Existem vários casos de pessoas que iniciaram suas jornadas após os 50 anos, como é o caso do Maujor, conhecido como o Dinossauro do CSS, que revolucionou o cenário de desenvolvimento web no Brasil.

Matemática

Embora em muitos momentos a programação envolva lógica e resolução de problemas, não é necessário ser um(a) especialista em matemática para se tornar um(a) programador(a). Embora algumas áreas como ciência de dados e desenvolvimento de jogos possam exigir um conhecimento mais aprofundado de matemática, a maioria das tarefas de programação cotidianas não requer habilidades matemáticas avançadas.

Noções básicas de matemática, como aritmética e álgebra, são geralmente suficientes para a maioria das áreas de programação. Claro que, existem situações que ter um domínio de matemática pode lhe fazer achar uma solução ainda melhor, porém são ocasiões, e nesses casos você pode contar com ajuda de outros programadores e da comunidade, bem como buscar esse conhecimento quando necessário.

Faculdade

Essa é uma discussão muito relativa, que divide opiniões. Há quem defenda que é importante e há quem defenda que não. Mas uma coisa é fato: A obtenção de um diploma universitário em ciência da computação ou áreas relacionadas pode ser benéfica para a carreira em programação, mas não é um requisito obrigatório. No Brasil, a área de tecnologia não é regulamentada por um conselho, como outras áreas, portanto você não precisa de um diploma para de fato atuar como programador. Mas se você pretende imigrar, ou trabalhar em órgãos governamentais, um diploma pode ser sim um requisito.

Vale ressaltar que, muitas pessoas aprendem a programar por conta própria, utilizando recursos online, cursos, tutoriais e projetos pessoais. Então você não necessariamente precisa passar por uma faculdade para obter esse conhecimento. O mais importante é adquirir habilidades práticas em programação, construir um portfólio de projetos e demonstrar conhecimento e experiência por meio de sua capacidade de resolver problemas reais.

Qual a melhor instituição de ensino superior?

Essa definitivamente é uma pergunta bem relativa, e eu não me preocuparia com ela se fosse você. Um diploma superior é um diploma superior, e pelo menos na área de TI nunca vi isso ser levado tão ao pé da letra quanto a instituição. Entre naquela que esteja mais a seu alcance. Mas se essa informação é tão importante para você, procure pelo ranking RUF, ou pelo ranking do MEC que avalia as instituições de ensino em território brasileiro, o IGC (Índice Geral de Cursos Avaliados da Instituição).

Área de atuação

A programação oferece uma ampla variedade de áreas de atuação, cada uma com suas próprias demandas e oportunidades. Listaremos aqui algumas das principais áreas em que os(as) programadores(as) podem se especializar:

  1. Desenvolvimento Web: Nessa área, os(as) programadores(as) constroem sites, aplicativos e sistemas interativos para a web. Isso envolve linguagens como HTML, CSS e JavaScript para o front end (parte visual) e uma grande variedade para back end (parte lógica), como PHP, Ruby, Rust, Elixir, Python e até mesmo JavaScript, que pode ser usado em ambos os lados.
  2. Desenvolvimento de Aplicativos Móveis: Nessa área, você pode desenvolver aplicativos para plataformas como iOS (usando Swift ou Objective-C) ou Android (usando Java ou Kotlin), além das soluções hibridas, que funcionam em ambas as plataformas, como React Native e Flutter.
  3. Ciência de Dados e Análise: Aqui, os(as) programadores(as) aplicam técnicas estatísticas e de análise de dados para extrair informações valiosas a partir de conjuntos de dados. Linguagens como Python e R, juntamente com ferramentas como TensorFlow e PyTorch, são comumente usadas nessa área.
  4. Segurança Cibernética: Essa área envolve identificar vulnerabilidades, implementar medidas de segurança e lidar com ataques. Conhecimentos em linguagens como Python e C, juntamente com compreensão de redes e criptografia, são importantes nessa área.
  5. Inteligência Artificial e Aprendizado de Máquina: Com o avanço da inteligência artificial, há uma crescente demanda por programadores(as) com habilidades em aprendizado de máquina, processamento de linguagem natural, visão computacional e mais. Linguagens como Python e bibliotecas como TensorFlow e Keras são amplamente utilizadas nessa área.
  6. Desenvolvimento de Jogos: A área de desenvolvimento de jogos é uma das mais empolgantes e criativas dentro da programação, porém é um campo bastante desafiador e que vai necessitar de outras habilidades, como modelagem, sonorização, se tornando assim não tão acessível para quem está iniciando.

Qual é a mais fácil de começar?

A facilidade de começar em uma determinada área de programação é relativa e pode variar de acordo com as habilidades, interesses e disponibilidade de recursos de aprendizado. No entanto, em termos de curva de aprendizado e abundância de recursos, algumas áreas podem ser consideradas mais acessíveis para iniciantes:

  1. Desenvolvimento Web: O desenvolvimento web é uma área popular para começar, pois existem muitos recursos online gratuitos e cursos acessíveis que ensinam as bases do desenvolvimento web. Além disso, as ferramentas necessárias rodam em praticamente qualquer computador, o que pode facilitar seus estudos.
  2. Desenvolvimento de Aplicativos Móveis: Com o crescente uso de smartphones e aplicativos, o desenvolvimento de aplicativos móveis também oferece oportunidades interessantes para iniciantes. Existem muitos tutoriais e frameworks disponíveis para ajudar a dar os primeiros passos nessa área. Porém aqui, na maioria dos casos, você vai precisar de um computador um pouco mais potente, devido aos requisitos das ferramentas necessárias, tornando-a assim uma área um pouco menos acessível, mas ainda assim, proeminente.

Lembre-se de que, independentemente da área escolhida, o aprendizado contínuo e a prática são essenciais para se tornar um(a) programador(a) habilidoso(a). Esteja disposto(a) a explorar diferentes áreas, experimentar projetos e buscar recursos de aprendizado adequados ao seu estilo de aprendizagem. Eu mesmo comecei com programação de jogos, depois brinquei um pouco com programação mobile, para só então focar em desenvolvimento web, que é onde atuo hoje, porém ainda pretendo voltar a atuar com jogos. Então que fique claro que, com dedicação e perseverança, você poderá avançar em qualquer área de programação que escolher.

Qual linguagem começar?

Em um primeiro momento, é fundamental focar nos conceitos básicos da computação e programação, como algoritmos, estruturas de controle, variáveis, funções, tipos de dados e estruturas de dados. Dominar esses fundamentos proporciona uma base sólida para iniciar a jornada na programação e permite a criação de programas simples. Compreender esses conceitos básicos é essencial para progredir e se aprofundar na programação.

Mas esta é uma pergunta que divide muitas opiniões. Se você perguntar em qualquer comunidade, vai ter uma enxurrada de sugestões diferentes, em que geralmente são baseados no “se funcionou para mim, funciona para todo mundo”, portanto sabemos que não é bem assim. É importante que você mergulhe de cabeça em diferentes tecnologias, escolha algo que lhe seja acessível e lhe deixe confortável, e assim tire sua própria conclusão.

Porém, caso você esteja visando uma carreira, é recomendável aprender uma linguagem de programação popular e amplamente utilizada, pois isso pode fornecer mais oportunidades de trabalho e recursos de aprendizado. Mas recomendo que, use dados verdadeiros para definir o que é mais amplamente usada, e não opiniões de pessoas enviesadas. Recomendo consultar o StackOverflow Survey, uma pesquisa anual que coleta informações sobre a comunidade global de desenvolvedores de software.

Além disso, é importante considerar fatores como demanda de mão de obra, suporte da comunidade, recursos disponíveis, ecossistema de bibliotecas e frameworks, entre outros. Claro que, você precisa levar em consideração a area em que pretende atuar. Então pesquise você mesmo as opções, e tome sua própria decisão.

Mas não se preocupe, esta não é uma decisão única e irrevogável, durante sua caminhada você provavelmente vai lidar com várias tecnologias diferentes, então o importante é dar o primeiro passo e começar, e conforme evoluir, testando coisas novas.

Para lhe ajudar nessa escolha, posso lhe citar algumas linguagens, que ostentam uma comunidade bastante forte e ativa, como JavaScript, Ruby, Python, PHP, C# e Java no âmbito web, e no quesito mobile podemos citar Kotlin e Java para desenvolvimento Android e Swift para desenvolvimento iOS, e claro, as soluções híbridas, como React Native e Flutter. O importante aqui, é que você escolha uma dessas linguagens e estude seus conceitos básicos, como entrada e saída de dados, métodos e funções presente em sua livravia padrão (standard library), e comece a aplicar os conceitos de estrutura de dados, dentre outros.

Como me diferenciar de outros devs?

A prática é essencial para aprimorar suas habilidades de programação e demonstrar o seu comprometimento com a área. Ao criar projetos e compartilhá-los no GitHub, você mostra não apenas a sua capacidade técnica, mas também a sua dedicação em resolver problemas reais e desenvolver soluções práticas. Isso destaca a sua experiência prática e a sua capacidade de aplicar os conceitos aprendidos em situações reais. Além disso, a contribuição para o GitHub também demonstra a sua disposição em colaborar com outros desenvolvedores, aprender com a comunidade e construir um portfólio sólido. Essa combinação de prática ativa e compartilhamento de projetos diferencia você como um desenvolvedor comprometido e pronto para enfrentar desafios complexos na área de programação.

Participar ativamente de comunidades online, interagir com outros profissionais e até mesmo escrever conteúdo complementar aprimora ainda mais essa distinção, permitindo que você se destaque como uma figura proeminente e respeitada na comunidade de desenvolvimento. Se desafiar em plataformas como HackerHank e LeetCode é uma ótima forma de validar seus conhecimentos e aprender coisas novas, e com certeza vai te deixar a frente de muitos outros desenvolvedores.

Como conseguir emprego?

Para conseguir um emprego na área de programação, é importante destacar-se e criar conexões significativas na comunidade de desenvolvedores. Posso citar algumas práticas importantes:

  1. Participar de comunidades online: Junte-se a fóruns, grupos de discussão, plataformas de perguntas e respostas, como o Stack Overflow, e redes sociais voltadas para desenvolvedores. Essas comunidades oferecem a oportunidade de compartilhar conhecimentos, obter ajuda e se conectar com outros profissionais da área. Fica aqui o convite para participar de nossa comunidade no Telegram, o Clube dos Programadores.
  2. Contribuir em projetos de código aberto: Envolva-se em projetos de código aberto no GitHub ou em outras plataformas similares. Contribuir com código, com documentação, reportar bugs ou propor melhorias demonstra seu envolvimento ativo na comunidade e sua capacidade de trabalhar em equipe em um ambiente colaborativo.
  3. Participar de eventos e conferências: Participe de conferências, meetups e workshops relacionados à programação. Esses eventos são ótimas oportunidades para conhecer outros desenvolvedores, aprender com especialistas e estabelecer contatos profissionais valiosos.
  4. Construir um portfólio online: Crie um portfólio online para exibir seus projetos, contribuições e habilidades. Isso permite que os recrutadores e potenciais empregadores vejam seu trabalho e avaliem sua experiência prática. Tente escrever sobre seus aprendizados em sites como Medium e Dev.To, pois ensinar é uma ótima forma de validar conhecimento e conquistar autoridade no assunto.
  5. Networking com outros desenvolvedores: Busque ativamente oportunidades de networking com outros desenvolvedores. Isso pode ser feito por meio de eventos presenciais, redes sociais profissionais, grupos de interesse e até mesmo por meio de conexões estabelecidas nas comunidades online. Crie um bom LinkedIn, faça conexões com pessoas que compartilham do mesmo interesse. Isso vai permitir que você seja encontrado. É importante lembrar que o networking e a participação em comunidades online não são apenas para conseguir um emprego, mas também para desenvolver relacionamentos significativos com outros profissionais da área. Ao compartilhar conhecimento, ajudar os outros e estar envolvido na comunidade, você se torna um desenvolvedor mais valorizado e reconhecido. Aproveite essas oportunidades para aprender, crescer e construir uma rede sólida de contatos que podem abrir portas para futuras oportunidades profissionais.

Eu consigo emprego com tal curso?

Nenhum curso vai te garantir um emprego, e para ser sincero, o conhecimento adquirido em um só vai te deixar mais próximo de um emprego, se aplicado. Isto é, além de simplesmente ter um certificado, tenha em seu GitHub o código que demonstre que você adquiriu domínio daquele tema. Mas tenha em mente que copiar e colar os códigos de quem esteja ensinando e colocar no GitHub como seu é uma péssima prática, qualquer dev/recruiter com conhecimento intermediário vai saber que seu código é apenas copy e paste. Já vi pessoas com um milhão de certificados, mas sem conhecimento básico dos temas aos quais ela é certificada, não cometa esse erro.

Como ser encontrado?

Consideraremos aqui que você já definiu seu foco inicial e está focado em uma linguagem/tecnologia, bem como levou em consideração os aspectos mencionados acima. Agora o próximo passo é aplicar em algumas vagas, e ser encontrado. O primeiro passo é escrever um bom cúrriculo, que seja totalmente focado em sua carreira na área de programação e tecnologia. Prese pelo simples, esqueça outras experiências que você teve, que não estejam diretamente relacionadas a tecnologia, é irrelevante para um recrutador e isso só faz seu currículo ser descartado. Foque em descrever sua trajetória até o momento, bem como o que já construiu, que seja projetos pessoais ou não, focando principalmente nas dificuldades que teve de enfrentar, e como as superou. Isso não só prova que você é um excelente solucionador de problemas, mas que também aprende com eles.

A partir de agora, é importante se posicionar no mercado e se expor de forma profissional. Crie um LinkedIn e descreça bem seus aprendizados, faça conexões com outras pessoas que compartilham do mesmo interesse que você, e aos poucos você vai começar a ser notado pelo algoritmo do LinkedIn, recebendo assim alguns contatos de recrutadores em busca de profissionais com seu perfil. Mantenha-o atualizado sempre que possível, com suas habilidades e com links que achar interessante expor, como GitHub, artigos, dentre outros.

Tenho uma entrevista, e agora?

Já em uma segunda etapa, algumas empresas solicitam a execução e entrega de um teste técnico que prove suas habilidades, bem como a forma que você escreve código. Mas não se preocupe, esteja sempre pronto para essas situações, use e abuse de plataformas já mencionadas, como HackerHank e LeetCode, onde você vai conseguir resolver de problemas simples, envolvendo entrada e saída, bem como problemas mais complexos que exigem um conhecimento maior, e até conceitos matemáticos.

Conclusão

Seguindo esses passos, considere iniciada sua carreira em programação. Mas não se acomode, a carreira de programação demanda constante aprendizado, então esteja sempre atento as novas tendências e tecnologias, tenha em mente que o aprendizado constante é bastante importante. Caso veja que algo não está funcionando, não se preocupe, apenas mude sua direção e tente fazer algo diferente e seja paciente. Sempre há algo no que melhorar, seja no aprendizado, seja na hora de se aplicar para uma vaga. Esteja preparado(a) para enfrentar desafios e experimentar diversas áreas.

Obrigado pela leitura. Caso tenha alguma dúvida, sintam-se a vontade para me contatar nos comentários ou até no Twitter. Ficarei feliz em ajudar 🙂