Dicas para um Desenvolvedor Iniciante
Tags: beginners, programming, career, productivity
Published: 2023-04-06 18:28:37


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/643i6tentj7vk0twnrxu.jpg)

## ALERTA INICIAL

Para além da área de computação, em se tratando de tecnologias de uma forma geral **se faz obrigatório dominar a língua inglesa** - ao menos tão mal quanto se consiga dominar a língua portuguesa. Aprender inglês não é sobre aprender outro idioma, é sobre se tornar um cidadão do mundo.

> Everyone has a plan until they get punched in the mouth. - Mike Tyson

## I. PRIMEIROS PASSOS

- **Entreviste especialistas** na sua área para entender o que é preciso saber e quais são as habilidades mais valiosas. Dedique um décimo do seu tempo para planejamento. O foco deve ser o que a pessoa fez, e não o que ela acha que você deveria fazer - as respostas são bem diferentes. Pergunte sobre o que eles fizeram de diferente em relação ao que as outras pessoas estavam fazendo.
- Especifique um **objetivo claro e realista** e faça uma engenharia reversa para entender como chegar a ele. **Registre o seu progresso** e não se compare com os outros!
- Seja criterioso mas **não se limite a uma única fonte de recursos** (vídeos, livros, blogs, etc).
- Se puder, **encontre um mentor** - nunca mais que um - ou uma comunidade.
- Desde o começo **encontre maneira de praticar seus conhecimentos e habilidades**. Mesmo que você precise usar um simulador.
- **Seja um amador**. Ou melhor, mantenha-se sendo um amador pelo resto da sua vida! Não existe nenhuma desvantagem nisso.

## II. ORGANIZE O SEU TEMPO

- Trabalhe com **time-blocking** (quando) sessões 25/5 ou 45/15 (idealmente 90/15). Mas não é sobre quantas horas, é sobre **prática deliberada**. Nela: i. existem objetivos claros e bem-definidos (parametrizados). ii. a submissão ao trabalho foco é total. iii. ocorre fora da zona de conforto (85% de acertos ou 5/6).
- Faça **planejamento de 12-semanas** e defina limites para as horas de trabalho - [*shutdown complete*](https://www.calnewport.com/blog/2009/06/08/drastically-reduce-stress-with-a-work-shutdown-ritual/)! Se você não se sentir completamente esgotado, a consistência do trabalho de longo-prazo será mais vantajosa. Trate a sua mente como o atleta trata seu corpo.
- A primeira palavra-chave é a **consistência**. Apareça todo dia, com a mesma rotina (se possível)! Faça diariamente, progrida em dificuldade, compartilhe conhecimento, ajuste o foco, repita - esse é o ciclo.
- A segunda palavra-chave é **indistraível**. Opere com alta intensidade, sem distrações. Tente entrar no [estado de flow](https://www.medicalnewstoday.com/articles/flow-state#getting-into-flow).

## III. EXECUTE SEU PLANO

- A escolha da linguagem com a qual iniciar é superestimada. Qualquer uma delas é apenas uma ferramenta na mão do programador - que em essência é um **resolvedor de problemas** - e por isso cada uma traz benefícios e desvantagens que variam de acordo com o contexto da solução. Em dúvida comece com Python, C ou Java, e você estará bem.
- Tenha uma postura ativa e **gaste ao menos metade do seu tempo construindo algo**. Prática com mãos na massa (hands-on practise)! Faça pequenos projetos, construir um portfólio é o que realmente conta. Não fique obcecado com a teoria no lugar da aplicação. Muitas coisas são mais fáceis de fazer do que de explicar.
- A melhor maneira de tomar notas é **construindo códigos com muitos - muitos - comentários**. As suas notas, por mais organizadas que sejam, não serão lidas por mais ninguém. Mas potenciais empregadores e programadores irão olhar o código que você produziu. Ainda, se possível, escreva documentações e aprenda um pouco de [markdown code](https://www.markdownguide.org/). Você pode consultar outras documentações e usá-las como exemplo.
- É normal esquecer coisas. Não enfatize demais a memorização de sintaxes. Apenas mantenha suas mãos sujas enquanto constrói pequenos projetos e **recebe feedback!** Não pule exercícios. Ajude outras pessoas a resolverem os problemas dela. Escreva sobre algo que aprendeu. Você pode construir uma reputação e relações de confiança **compartilhando o que você sabe!** Use blogs, vídeos, entrevistas, podcasts, webminars, artigos, apresentações em conferências. Não colecione cursos.
- Procure por **plataformas que ofereçam desafios**. É a melhor forma de active recall.
- Evite estudar coisas demais num curto espaço de tempo. **Não existe o método matrix!**

> You don't become confident by shouting affirmations in the mirror, but by having a stack of undeniable proof that you are what you say you are. Outwork yourself doubt. - Unknown Author

## IV. REVISE SEUS RESULTADOS

- Após finalizar, **analise e revise seus projetos**. O que poderia ter sido feito melhor? O que deu errado?
- Entre os projetos que sucederem, o que você reteve para ser reaplicado no futuro? Identifique coisas que são usadas recorrentemente e **trabalhe a excelência nesses fundamentos**.
- Você não é elevado ao nível dos seus objetivos. Você é rebaixado para o nível da sua rotina. **Construa hábitos!**
- É normal se sentir atordoado (overwhelmed) com tantos conhecimentos. Evite [*analysis paralysis*](https://www.investopedia.com/terms/a/analysisparalysis.asp#:~:text=Analysis%20paralysis%20is%20an%20inability,an%20inability%20to%20pick%20one.) e **aprenda sob demanda**  ou [just in time learning](https://www.growthengineering.co.uk/what-is-just-in-time-learning/#:~:text=As%20a%20learner%2C%20just%2Din,skills%20gap%20you%20have%20identified.)). Sempre se pergunte: "É realmente necessário mais informações ou é preciso apenas agir baseado em informações que já possuímos?"

> "Waste no more time arguing what a good man should be. Be one." — Marcus Aurelius

---

## PLATAFORMAS DE DESAFIOS INDICADAS

- [Beecrowd](https://www.beecrowd.com.br/judge/en/login)
- [Edabit](https://edabit.com/)
- [Hackerrank](https://www.hackerrank.com/)
- [Leetcode](https://leetcode.com/)
- [Dailycodeproblem](https://www.dailycodingproblem.com/forrest)