O que é necessário para trabalhar como programador

Primeiramente quem sou eu na fila do pão para estar falando sobre isso ?


Me chamo Flou, estou embarcado nesta jornada em busca de trabalho como programador e já tenho alguma experiência com freelas. Ou seja, eu estou falando com base no caminho que estou trilhando. Tenho propriedade pra falar sobre o que aprendi até aqui e o resto é baseado em pesquisas e opiniões de amigos que já atuam no setor.

Esse texto se destina principalmente para pessoas que sabem muito pouco sobre essa jornada, mas que tem interesse. 
Ele convida quem ja está trilhando esse caminho para se esvaziar e encarar tudo como uma nova perspectiva!

INTRODUÇÃO


Pra conseguir trabalhar como programador em resumo:

Você precisa saber construir software que resolva algo e demonstrar isso pra quem contrata soluções em software. 
Seja para uma vaga de emprego ou para um freela.

Na medida em que descrevo com mais profundidade a respeito também irei sendo mais específico sobre as áreas que conheço e pretendo atuar. 
Digo isso porque fazer software é algo extremamente abrangente e pode variar desde plugins para programas, scripts, softwartes de desktop, softwares mobile, software para engenharia, medicina e muito mais MESMO. 
Programação está presente em praticamente todo aparelho eletrônico que existe. Ela não serve somente para fazer sites e aplicativos - como é o que mais se vê por aí.

E a verdade é que a grande maioria das vagas e oportunidades de trabalho com programação que podemos encontrar através da internet são para soluções web. Para fazer códigos Backend ou códigos Frontend.

Se você veio parar neste artigo é porque provavelmente você já sabe alguma coisa da área e procura algum trabalho em um desses dois pólos ou até mesmo ser Fullstack Developer, que é o programador que consegue fazer tanto o código que roda no servidor quanto o código que roda no cliente.


Se você não está entendendo nada do que eu to falando é o melhor gancho para te explicar uma verdade dolorosa que poucos que ensinam sobre programação na internet falam. 
Que é: Você tem que estudar muito e ter gosto por estudar, quanto melhor for sua capacidade de aprender mais resultado você vai ter.

Tecnologias da Computação, como em toda ciência, são construídas baseadas em tecnologias anteriores. 
Na Matemática, a multiplicação depende da soma. Na engenharia mecânica, o carro depende do motor. Toda tecnologia precisa de outra.

E porque eu to falando disso tudo ?

Quando você vai aprender um Framework de Frontend em Javascript para desenvolver uma aplicação web, é bem comum ficar confuso, principalmente quando a internet está recheada de tutoriais e até cursos pagos rasos que te prometem coisas difíceis de serem cumpridas.

Por exemplo:
''Aprenda python em uma aula''
"Aprenda Nodejs em 2 horas"
"Seja Fullstack em uma semana" 

Tudo mentira...
OBS: Se você for um programador experiente talvez isso faça alguns sentido, mas não da pra aprender de verdade nem assim. A experiencia e aprendizado se constroem com a pratica e repetição. E sinceramente anúncios chamativos como esses não são voltados para devs experientes, mas para iniciantes serem feitos de bobos.

É como aprender a fazer um carro em 7 dias... Mentira! Talvez você possa aprender a MONTAR um carro em 7 dias... e apenas um modelo de carro.
Fazer ≠ Montar 

A analogia de montar um único modelo de carro explica muito bem o que acontece hoje na área tech. É relativamente fácil seguir um tutorial ensinando a fazer um projeto com um framework. 
No fundo você só está montando um monte de peças que você sequer sabe pra que servem.

Então é fácil se perder fazendo vários tutoriais e não aprender NADA. 
É como se ensinassem a montar um fusca e depois um gol, mas você não faz ideia de como o motor funciona ou quais são os tipos de motores diferentes. 
Será que se um cliente pedir um carro com tração 4x4 você vai saber montar ? NÃO!

Vou cuspir alguns conceitos técnicos aqui pra você ver mais sentido na analogia do carro.

APRENDA A MOTIVAÇÃO HISTÓRICA DAS COISAS


Existe o Framework Next.js (Criado em 2016) que é um compilado de ferramentas, majoritariamente voltado para criar soluções frontend, ou seja código que roda no navegador. 
Ele é construído em cima da biblioteca React, que é uma solução construída em Javascript, que é uma linguagem de programação que roda no seu navegador dentro de uma máquina virtual que, por exemplo, no Chrome se chama V8.

O Javascript foi criado em 1995 para dar dinamismo às páginas estáticas do início dos anos 90 que eram como documentos do Word.

A linguagem trouxe algumas soluções, mas com o tempo se mostrou incompleta usada de forma pura, então vieram ferramentas como JQuery (2006) que abstraía do JS várias soluções necessárias no dia a dia do desenvolvedor já prontas e documentadas.

Na década seguinte surgiram abstrações mais modernas que solucionavam mais problemas como o React, Angular, Vu3. No caso do React que é apenas uma biblioteca e não um framework completo deixa o programador escolher como implementar as demais soluções necessárias para um projeto robusto de uma aplicação web, eis que surge o Next.js trazendo estas soluções de forma bem documentada.

A História se repete, as informações não. Eu resumi muuuita coisa com esse pequeno trecho da história, mas foi o suficiente para exemplificar a lição que vou te passar.

CONSELHO #01


Saber a história da internet vai te ensinar muito mais do que saber o framework da moda, porque você vai entender o porquê cada coisa é implementada daquele jeito e fica mais fácil entender como ela funciona.

Faça tutoriais sim, bote a mão na massa, mas aprenda a construir conhecimento sólido. Se você não entendeu um termo, pare e pesquise, mesmo que você leve horas. Essa parte não glamourizada da jornada do programador que é o ouro das mentes brilhantes.

Não adianta completar um tutorial e sair de lá como alguém que montou um monte de bloquinhos sem sentido, mesmo que demore o quíntuplo do tempo, acredite, ter questionado e pesquisado fez você economizar muito mais tempo na sua carreira.

Escrevo este artigo em Fevereiro de 2024, nunca tivemos um tempo melhor para aprender tecnologia de forma profunda e acelerada. Existe Chat GPT, Google Bard e afins, que por muitos são usados para gerar código.

Na minha opinião, isso é uma tremenda burrice, eles são muito melhores para nos explicar código, resumir artigos e te explicar o que cada coisa faz pra você entender o escopo completo do que para criar códigos pra você preencher buracos no seu projeto. Que só demonstram sua incapacidade de resolver um problema. Você se contrataria ?

COMO CONSTRUIR SOLIDEZ PARA SER CONTRATADO


Até o momento deste artigo apenas fui contratado para pequenos projetos e notados por alguns recrutadores, então vou dizer o que estou fazendo e um pouco de conselhos que recebi de profissionais da computação que admiro.

Vou me abster de falar sobre ser contratado para projetos freela de grande porte, ou seja viver de código como freela. Porque eu sei muito pouco sobre esse assunto. Mas se é a sua vibe recomendo terminar de ler o artigo para colher o que interessa para você e depois dê uma olhada nos conteúdos da Atekita Dev no Youtube. Ela tem experiência nessa área, fala sobre plataformas de freela etc.

Para ser contratado por uma empresa, ou seja, ser empregado. Existem majoritariamente 3 formas de ser contratado.

1 - Estágio

2 - Demonstração Técnica

3 - Indicação

Vou descrever um pouco sobre cada uma e depois dar minha opinião e experiência.

Estágio: Você começa a cursar o Ensino Superior em Ciências da Computação, Sistemas de Informação, Engenharia da Computação ou afins e fica atento a vagas por todos os meios possíveis. Geralmente o tempo mínimo que as empresas exigem é de um ano.

Demonstração Técnica: Excelência em Autopromoção, foque em ter o melhor currículo, um bom blog sobre seus estudos e projetos, participe de projetos, participe de comunidades, faça um bom portfólio e seja notado.

Indicação: Método subestimado por muitos que é um dos maiores preenchedores de vagas em empresas. Impressione e seja amigo de pessoas que trabalham nas empresas que oferecem os cargos que deseja trabalhar, seja indicado por um interno e consiga sua vaga.

Vou te dar um papo de coach que você precisa ouvir. Em qualquer um dos caminhos você vai precisar desenvolver suas habilidades sociais e comunicativas para além de sua capacidade técnica. Para conseguir um estágio, caso esteja cursando uma faculdade, vai ter que ir atrás, demonstrar interesse e será mais fácil ser notado e conseguir o que deseja, até porque vagas como do linkedin são o último lugar onde você deve procurar, já entrou em detalhes sobre isso...

Ser contratado por demonstração técnica é o caminho mais difícil se você quiser contar só com a técnica. Se você expandir seus horizontes e entender os reais desafios desse caminho eu diria que é também o mais prazeroso.

Conseguir uma vaga por indicação é algo muito comum e pouco buscado por desenvolvedores. Existe uma ordem que toda empresa segue ao realizar contratações: Indicação > Reposicionamento Interno > Banco de Candidatos > Vagas em Redes como Linkedin.

Você precisa ter um canivete suiço para ter as melhores chances, um conjunto de técnicas bem estruturado para conseguir a tão desejada vaga.

No final das contas qualquer um dos métodos vai funcionar melhor se você souber fazer networking, demonstrar bem o seu progresso de trabalho e agir de forma assertiva.

MINHA JORNADA E MEU CONSELHO


Aqui vai um conselho pra mim mesmo e para você que está nessa jornada. Foque em conseguir uma vaga por competência técnica e indicação em conjunto. Talvez você tenha contatos fortes e ainda falte muito conhecimento ou talvez você tenha muito conhecimento e não tenha bons contatos ainda, quem sabe nenhuma dessas opções... Ou tem as duas... O Importante é você ter clareza desse caminho e do que mais precisa focar.

DICAS DE ESTUDO

1 - Estude sempre buscando o fundamento das coisas, se deparar-se com algo que não entendeu, pesquise.

2 - Entenda a história da computação e da internet. (MUITO IMPORTANTE)
  
3 - Alterne entre estudos mais teóricos da computação e tutoriais mão na massa. Seguindo a analogia usada anteriormente: Se você está estudando a teoria de como os carros funcionam, fica meio difícil entender as coisas, mas se alguém te ensina a montar um carro e você monta junto com ela, toda aquela teoria começa a fazer sentido. Assim você vai conseguir acelerar seu aprendizado de forma consistente.

3 - Tente fazer projetos, o objetivo de fazer algo e resolver os problemas que serão gerados no caminho vai ser o mais próximo que você vai estar de um trabalho como programador. E a vantagem é que você pode começar a tentar projetos no seu escopo em qualquer etapa, pode ser uma calculadora de IMC ou uma Aplicação Fullstack em Nuvem. Se você acha que pode fazer, caia dentro.

4 - Aprenda Github assim que já conseguir fazer algum código. (recomendo começar por Javascript ou Python, pouco importa, você vai aprender várias linguagens) No Github é onde você DEVE hospedar todos os seus projetos e de quebra vai aprender a versionar seu código e upar pra nuvem via linha de comando. Algo que está presente no dia a dia de todo desenvolvedor. O Github é onde todo recrutador sério vai olhar para avaliar sua competência.

5 - Aprenda a comentar seu código e a documentar bem seus projetos no Github, não adianta nada ter um monte de repositório sem sentido lá. Demonstra descuido e recrutadores não têm tempo de ficar escovando os bits de seus códigos.

MATERIAIS QUE RECOMENDO


- Um guia que pode te ajudar a saber quais coisas estudar, com alguns caminhos predefinidos.

- Simplesmente um dos melhores lugares da internet para aprender Desenvolvimento Web, é sério, eu conheci através de um curso pago, saí do curso e comecei a aprender por lá. Sem enrolação e muito bem documentado. É em inglês então aqui vai uma lição APRENDA INGLÊS, nem que seja na marra, se não você vai estar muito atrás de seus competidores. Não ignore esse conselho.

- Especialmente a Playlist de Programação para iniciantes. Tem muita gente que não gosta do conteúdo dele por aí, sinceramente ignore-os. Os Videos do Akita às vezes te deixam mais confuso do que esclarecido de tantos termos e coisas que ele fala. E é pra isso que serve essa playlist, pra você ouvir um cara MUITO EXPERIENTE vomitando toneladas de informação organizadas e dizendo algumas verdades duras que a maior parte de quem querem te vender cursos de WebDev não falam. E aí você vai se familiarizando com os conceitos enquanto continua sua rotina de estudos normal.

- É em portugues e tem varios conceitos importantes da computação que vão fazer bastante diferença quando começar a enfrentar desafios de desenvolvimento.

- Um lugar para se desafiar e aprender, milhares de desafios de programação de básicos a super avançados para você treinar e testar suas habilidades.

- Minidocumentário sobre a teoria da informação muito bom.

- Documentário imprescindível para entender a história e evolução das tecnologias que usamos hoje.

Comentários