Olá! Espero que esteja bem. Sou Rafael Barbosa, funcionário de técnologia do Banco do Brasil. Espero que eu possa te ajudar.
Os conselhos que vou dar aqui servem para qualquer um que precise aprender uma lignuagem de programação em pouco tempo. Se fosse uma postagem por si só eu daria o título:
Como aprender a programar em um mês
Meio clickbait, mas é real: dá pra aprender o básico de uma linguagem em um mês.
Enfim, vamos para as dicas (que são, na verdade, um roteiro, um caminho para adquirir as habilidades que o edital te exige):
Mapa do caminho: as habilidades a desenvolver
As habilidades que você deve buscar desenvolver, de acordo com esse trecho do edital que postou, são: 1. escrita de códigos de processamento dados (inclusive, acessando um banco de dados); 2. leitura e análise de códigos; 3. refatoração de códigos; 4. criação de testes unitários.
Como o tempo é curto, o meu conselho é focar nas habilidades que dão mais fruto em pouco tempo: leitura e análise de códigos, escrita básica (focando no que o edital pede); se der tempo, refatoração e testes unitários.
1. Leitura e análise: o 'core' do que um programador faz
Assim como ao aprender uma língua estrangeira, você pode focar em 20% do vocabulário e entender 80% das sentenças, da mesma forma é com a programação. Escolhe um ou dois tutoriais de cada linguagem que será cobrada, começando das que você sabe menos, leita, memorize. Depois foque em aplicar o que você leu, analisando o código, ou seja,tentando entender o que cada trecho faz. Links com tutoriais para cada linguagem mencionada: tutorial de Python, tutorial de Java, tutorial de JavaScript.
2. Escrita, ou 'gugu dádá'
Voltando à analogia da língua estrageira: a escrita/conversa é fundamental para fixar o que se aprendeu e para verificar se realmente aprendeu. Como uma criança aprendendo a linguagem humana, é mais fácil começar imitando o pouco que já aprendemos; assim, temos meio que um loop que se retro-alimenta: testamos o que aprendemos, aprendemos mais, testamos novamente... e cada vez ficamos melhores. Para evoluir essa habilidade de escrita você pode treinar com esses sites de resolução ed problemas, como URI Online Judge (ICPC), ou Leetcode. Esse tipo de site funciona da seguinte forma: te é dado um problema, por exemplo, recebendo dois números inteiros, retornar o resultado da soma deste; você escreve o código em alguma linguagem que o site aceite (normalmente tem Java, JavaScript e Python); submete o código e o próprio site julga se o seu código resolve o rpoblema proposto. Você pode começar com os problemas mais simples, fazendo em todas as três linguagens que precisa aprender.
3. Repetição e refinamento
Então, primeiro você aprende o básico para ler aquela língua, depois vai retro-alimentando a habilidade de leitura-análise com a habilidade de escrita -- repetindo o processo, aumentando o level dessas duas skills até ser bom o suficiente para entrar uma guilda de aventureiros e partir pro mundo real (ou enfrentar um boss, como o seu caso, a prova). Nesse ponto, você deve notar que te faltam algumas habilidades mais fundamentais; alguns conceitos preliminares que podem te ajudar muito nesse aprendizado²: o que é um algoritmo, como funcionam os computadores exatamente, por que meu código demora tanto a executar etc. Você pode sanar essas dúvidas com essa playlist do Hallison Paz: Playlist de Estrutura de Dados.
4. e 5. Refinamento da escrita: refatoração e testes
As duas últimas habilidades, da reescrita e da criação de testes unitários, estão relacionadas com a qualidade do software.
Refatorar um código é como pegar um texto antigo que você escreveu e reescrever, mantendo a mesma idéia, porém tentando escolher melhor as palavras para dizer melhor o que se quer dizer. Sobre refatoração, você pode ver esse vídeo aqui. Uma boa ideia é refatorar os códigos que você fez para resolver os problemas simples, no ponto dois.
Já os testes unitários servem para que você teste cada pequena parte do código, de modo que o computador possa verificar se você está realmente fazendo o que se propôs. Você vai ter que aprender a fazer testes unitários em cada uma das linguagens, deixo aqui um início: testes em java, testes em Python, testes em Javascript.
Esse é um progrma para início dos estudos. Como eu não sei qual a sua rotina, quanto tempo você tem por dia, como você organiza os seus estudos, não posso te dar dicas mais específicas. Resumindo:
- Aprender o básico da linguagem com tutoriais (ou na documentação mesmo);
- Programar códigos que resolvem problemas simples, usando como guias sites como este
- Repetir os dois últimos passos até cobrir o mínimo do edital (neste caso, operações básicas da linguagem de programação, soma, subtração, multiplicação, divisão, potenciação, funções já construídas na linguagem; acesso a um banco de dados)¹
- Aprender o básico sobre qualidade de software, o que é uma refatoração, quando e como efetuar uma refatoração
- Aprender a fazer testes unitários
Seguir esses passos para cada linguagem que você queira aprender.
É isso, essas são as minhas dicas (é mais um roteiro de estudo). Qualquer dúvida pode mandar um e-mail: rafael.1940.b@gmail.com [quem mandar spam será amaldiçoado até a 8ª geração 👹].
¹ Esse critério de "quando será estou bom o suficiente numa determinada habilidade" é algo difícil de ser ter. Tenho planos de fazer uma lista de 'chekpoints' definitiva, que se possa consultar e verificar a senioridade em cada tema; por enquanto, ainda estou mapeando as habilidades atômicas do programador. ² Mais ou menos como a gente nota, lá pros dez anos de idade, que precisa aprender um pouco de gramática -- na analogia da escrita
Muito obrigado, Rafael! Muito gentil da sua parte ser tão detalhista, espero que seja útil para mais pessoas por aqui! Vou olhar todas as referências com calma e retorno em breve.