Competições Senac RS · Seletiva 26
Módulo 09 · Apostila teórica
Módulo 09 — Inglês técnico
Onde esse módulo entra. O sistema tá lapidado por dentro e por fora (módulo 08). Os dois últimos módulos da apostila não entregam tela nenhuma e mesmo assim decidem pódio: esse aqui e a apresentação. Inglês vale 15% da prova. É o terceiro maior peso, atrás só de front (40%) e back+banco (20%): mais que UX, mais que banco de dados, o triplo de versionamento. E as duas UCs que sustentam o módulo são as maiores do plano de curso inteiro, 108 horas cada, 216 somadas. O Senac não deu esse tamanho à toa. Só que inglês não tem semana no cronograma: tem o treino inteiro. Por isso esse módulo se lê diferente dos outros. O glossário (§5) e o catálogo de drills (§8) entram em uso já na primeira semana de agosto, porque alimentam o aquecimento diário de toda aula. O resto acompanha o treino e se consolida nas duas aulas dedicadas do guia.
1. Como 15% de inglês aparecem numa prova de programação
Não existe "a prova de inglês" com hora marcada. O inglês da Seletiva é instrumental: ele atravessa os quatro módulos do Projeto-Teste e pontua onde a competidora nem sempre percebe que está sendo avaliada.
- No enunciado e nas orientações. Parte do material da prova pode vir em inglês: um requisito, uma orientação técnica, um texto de apoio. Entender exatamente o que está sendo pedido é a UC5 acontecendo ao vivo. Ler errado um
mustou umup tomuda o que se constrói, e aí o ponto se perde antes de qualquer linha de código. - Na documentação. Quando bate a dúvida de sintaxe ou de parâmetro durante a prova, a resposta está na doc que estiver disponível, e doc de tecnologia é em inglês. Quem lê doc rápido destrava sozinha. Quem não lê, trava ou chuta.
- Nas mensagens de erro. Todo erro que o sistema cospe durante as 10h30 de prova está em inglês. Ler o erro e entender a causa em 30 segundos é a diferença entre um bug de 2 minutos e um bug de 40.
- Na fala sobre o sistema. A UC7 é a competência de explicar tecnicamente o que se construiu. A apresentação do Módulo D é em português, mas os termos são em inglês (endpoint, constraint, hash, token), e usar o termo certo com naturalidade é parte da imagem de competência que a banca avalia.
🎯 Onde mora o ponto. Os 15% de peso são a parte declarada. A parte escondida é que o inglês alavanca os outros 85%: enunciado bem lido vira requisito certo (front, back, banco), erro bem lido vira tempo recuperado, doc bem lida vira feature destravada. Inglês ruim não perde só os 15. Ele cobra pedágio em tudo.
⚠️ Pega-ratão: subestimar porque "não é tela". É a competência mais fácil de deixar pra depois, justamente porque não tem uma entrega visível. O antídoto é o formato desse módulo: nunca é uma tarde inteira de inglês, é 10 minutos todos os dias, sem exceção, de agosto até a véspera da prova.
2. A gramática que cai: inglês instrumental de requisito
Esquece conjugação de verbo irregular. O inglês que decide ponto na Seletiva cabe em meia dúzia de estruturas que aparecem em todo enunciado e em toda doc. Dominar essas estruturas é gramática a serviço da leitura de requisito.
2.1 Os modais que definem o que é obrigatório
Especificação técnica em inglês usa os modais com sentido padronizado. Existe até um documento clássico que fixou essa convenção pra internet inteira, a RFC 2119, e as provas seguem a mesma lógica:
| Palavra no enunciado | Força | O que significa na prática |
|---|---|---|
must / shall / required |
Obrigatório | Se não tiver, perde ponto. Prioridade máxima. |
must not / shall not |
Proibido | Se tiver, perde ponto. Tão grave quanto faltar um must. |
should / recommended |
Recomendado | A banca espera. Só fica de fora se o tempo acabar, e por decisão consciente. |
should not |
Desaconselhado | Evitar, a menos que haja um bom motivo pra defender. |
may / can / optional |
Opcional | Diferencial. Faz depois que os musts e shoulds estão de pé. |
Um trecho de enunciado do universo Wedding Pass, do jeito que poderia cair:
"The system must prevent duplicate check-ins. Each guest may bring up to five companions. The organizer should receive an alert when a table reaches 90% of its capacity."
Leitura de competidora nota 3: check-in duplo bloqueado é inegociável (must, e é a constraint UNIQUE do módulo 03 mais a verificação atômica do módulo 07); acompanhantes são permitidos com limite de cinco, incluindo o cinco (may + up to); o alerta de 90% é esperado, entra no plano, mas depois dos musts (should).
🎯 Modal lido vira ordem de ataque. A técnica de grifar requisitos do módulo 01 depende disso: must é a primeira lista, should é a segunda, may é a terceira. Quem trata tudo como igual gasta tempo de must em coisa de may, e o CIS não perdoa must faltando.
2.2 O imperativo das instruções
Documentação e orientação técnica falam com verbo no imperativo, sem sujeito: "Create a database named wedding_pass.", "Run the following command.", "Add the dependency to your project.". Imperativo em doc não é grosseria, é instrução: faça isso, nessa ordem. Quando uma orientação vem numerada em imperativo, a sequência importa; pular passo é a receita do erro esquisito dez minutos depois.
2.3 Condicionais de comportamento: if X, then Y
Todo comportamento de sistema se descreve com condicional, e o enunciado usa isso o tempo todo:
- "If the token is missing or expired, the server returns 401." (se acontecer, faça)
- "When a guest confirms the invitation, the system updates the status." (toda vez que acontecer)
- "Guests cannot check in unless the invitation is confirmed." (unless = a menos que; é um "if not" disfarçado)
- "The code must be valid; otherwise, the system displays an error message." (otherwise = caso contrário)
A diferença fina que muda implementação: if descreve uma possibilidade, when descreve uma regra que roda sempre que o evento acontece. Unless engana porque inverte: a frase acima diz que o check-in só passa com convite confirmado. Quem lê unless como "a não ser" solto costuma implementar a condição ao contrário.
2.4 Quantidades e limites
Requisito com número é requisito com pegadinha de fronteira:
| Expressão | Significado | Cuidado |
|---|---|---|
at least 8 characters |
no mínimo 8 | 8 passa |
at most / no more than 5 |
no máximo 5 | 5 passa, 6 não |
up to five companions |
até cinco | inclui o cinco |
more than 100 guests |
mais de 100 | 100 não conta |
between 1 and 10 |
entre 1 e 10 | em spec, normalmente inclusivo nas pontas |
per table / each guest |
por mesa / cada convidado | define o escopo da regra (a regra roda por linha, não no total) |
exceeds the capacity |
ultrapassa a capacidade | igual à capacidade ainda não excedeu |
⚠️ Pega-ratão clássico: implementar > onde o enunciado pedia >=. "Reaches 90% of its capacity" dispara no 90%, não depois dele. Na dúvida, traduzir a fronteira pra um caso concreto (mesa de 10 lugares: alerta com 9 confirmados) antes de escrever o código.
2.5 Voz passiva: quem faz o quê
Doc e enunciado adoram voz passiva: "The password is hashed before being stored.", "The request is rejected if the header is missing.". A pergunta de leitura é sempre a mesma: quem faz isso? Se a frase está descrevendo o comportamento esperado do sistema, quem faz é o código da competidora (ela precisa implementar o hash). Se está descrevendo o que a ferramenta já faz sozinha ("the connection is closed automatically"), é só saber que acontece. Confundir os dois gera tanto trabalho faltando quanto trabalho dobrado.
2.6 Falsos amigos e palavras que enganam
| Palavra | Parece | É de verdade |
|---|---|---|
actually |
atualmente | na verdade |
eventually |
eventualmente | uma hora, mais cedo ou mais tarde (certeza, não possibilidade) |
currently |
correntemente | atualmente (essa sim) |
push |
puxar | empurrar, enviar (git push manda pro remoto) |
pull |
— | puxar, trazer (git pull traz do remoto) |
data |
data | dados (date é data) |
library |
livraria | biblioteca |
support |
dar suporte | muitas vezes é "aceitar, ter a capacidade" ("MySQL supports transactions" = MySQL tem transações) |
resume |
resumo | retomar, continuar (currículo é résumé ou CV) |
record |
recorde | registro, linha de tabela |
argument |
discussão | argumento de função (o valor passado no parâmetro) |
parse |
— | interpretar, transformar texto em estrutura (não tem tradução boa; adotar o termo) |
🛠️ Gambiarra boa: o par push/pull no músculo. Quem traduz literalmente inverte o Git inteiro. A âncora que resolve: push empurra pra longe (meu código vai pro GitHub), pull puxa pra perto (o código do GitHub vem pra mim). Falar em voz alta uma vez por semana no drill já fixa.
3. Ler documentação: método, não tradução
3.1 Skimming e scanning
Duas habilidades diferentes, e a prova usa 90% uma delas:
- Skimming: passar o olho pra entender do que o texto trata. Títulos, primeiro parágrafo, negritos. Serve pra decidir "é essa página que eu preciso?". Dez segundos.
- Scanning: procurar uma informação específica numa página que já se sabe ser a certa. Qual parâmetro, qual valor default, qual o nome da função. É caça, não leitura.
Traduzir a página inteira não é nenhuma das duas. É o hábito que mais queima tempo de prova e o primeiro que o treino desmonta.
3.2 A anatomia das páginas de doc que a gente usa
Cada doc tem um esqueleto fixo. Conhecer o esqueleto transforma a página de parede de texto em mapa:
- MDN (JavaScript, HTML, CSS, HTTP): título → resumo de uma linha → Syntax (a assinatura da função) → Parameters (cada parâmetro explicado) → Return value (o que volta) → Examples (código pronto). A resposta quase sempre está em Syntax + Examples.
- MySQL 8.0 Reference Manual: páginas gigantes por tema, com tabelas de funções e exemplos no meio do texto. Não se lê, se faz Ctrl+F com o nome da função ou da palavra-chave (
DATE_FORMAT,FOREIGN KEY,ON DELETE). - php.net: o manual com a melhor estrutura do mercado: Description (assinatura) → Parameters → Return Values → Examples → User Contributed Notes. As notes são comentários de devs com soluções prontas pra casos reais; garimpo que às vezes economiza meia hora.
- Express (expressjs.com): doc curta, orientada a exemplo. A página da API lista método por método com um bloco de código cada.
🛠️ Gambiarra boa: o código é a língua universal. Bloco de exemplo se entende mesmo quando o parágrafo em volta está difícil. Em qualquer doc, ler o exemplo antes do texto: na maioria das vezes o exemplo responde e o texto vira opcional.
3.3 A rota dos 30 segundos
Padrão pra qualquer dúvida de sintaxe durante o treino e a prova:
- Ctrl+F na página com a palavra exata (nome da função, do parâmetro ou do erro).
- Exemplo primeiro. Achou um bloco de código que parece com o caso? Lê ele.
- Syntax/Description depois, só pra confirmar a ordem dos parâmetros.
- Parágrafo por último, só se ainda restou dúvida (geralmente sobre um caso especial).
Se em 2 minutos a página não respondeu, a página está errada: voltar e escolher outra, em vez de insistir traduzindo.
3.4 Exercício real de scanning (com gabarito)
Fazer cronometrado, 2 minutos por rodada, sem tradutor. É o mesmo formato do Drill 2 (§8).
Rodada 1: MDN, página do fetch().
1. Qual é o método HTTP default quando não se passa options?
2. O fetch() retorna o quê?
3. Em qual propriedade das options vai o corpo da requisição?
Rodada 2: MySQL Manual, página de Date and Time Functions.
1. Qual specifier do DATE_FORMAT imprime o dia com dois dígitos?
2. Como formatar uma data como 30/11/2026?
Rodada 3: php.net, página de password_hash().
1. Qual algoritmo o PASSWORD_DEFAULT usa hoje?
2. A função retorna o quê?
3. Qual função faz a verificação na hora do login?
Gabarito: R1: GET · uma Promise que resolve pra um objeto Response · body (string, via JSON.stringify). R2: %d · DATE_FORMAT(data, '%d/%m/%Y'). R3: bcrypt · a string do hash (que já embute salt e custo) · password_verify().
🎯 Como isso cai. Ninguém decora todo specifier de data nem toda option do fetch, e a banca sabe. O que separa nota 2 de nota 3 é a velocidade de recuperação: a competidora que acha %d/%m/%Y em 40 segundos segue no ritmo; a que trava no formato de data perde 10 minutos numa coluna de tabela.
4. Anatomia do erro: ler a mensagem que resolve
O erro em inglês é a orientação técnica escrita (UC5) que mais aparece no dia da prova. E ele sempre tem a mesma estrutura, em qualquer stack:
[TIPO DO ERRO]: [o que aconteceu] [detalhe: qual valor, qual chave, qual arquivo]
[onde: arquivo, linha, coluna]
[stack trace: o caminho de chamadas até chegar lá]
4.1 O vocabulário que os erros repetem
| Expressão | Sentido | Exemplo real |
|---|---|---|
cannot / could not / unable to |
não conseguiu | Cannot read properties of undefined |
failed to |
falhou ao | Failed to fetch |
missing / required |
faltando / obrigatório | JWT must be provided |
expected X, got Y |
esperava X, veio Y | Expected 2 arguments, got 1 |
not found |
não achou | 404 Not Found, command not found |
already exists |
já existe | Table 'convite' already exists |
denied / refused |
negado / recusado | Access denied, connection refused |
timed out |
estourou o tempo | Connection timed out |
invalid / unexpected |
inválido / inesperado | Unexpected token '<' |
out of range |
fora do intervalo | Out of range value for column 'acompanhantes' |
deprecated |
descontinuado (ainda roda, mas vai parar) | avisos amarelos no console |
🎯 Detalhe que separa nível: undefined vs is not defined. x is not defined significa que a variável não existe (erro de digitação ou de escopo). Cannot read properties of undefined significa que a variável existe, mas o valor dela é undefined (o objeto não veio: fetch que falhou, linha que a query não retornou, campo com nome errado). São dois bugs diferentes com caras parecidas, e quem sabe a diferença vai direto na causa.
4.2 Stack trace no Node: de cima pra baixo, até achar o seu arquivo
TypeError: Cannot read properties of undefined (reading 'nome')
at listarConvidados (/home/comp/wedding-pass/controllers/convidadoController.js:23:35)
at Layer.handle [as handle_request] (/home/comp/wedding-pass/node_modules/express/lib/router/layer.js:95:5)
at next (/home/comp/wedding-pass/node_modules/express/lib/router/route.js:149:13)
Como ler, na ordem:
- Primeira linha: tipo (
TypeError) + o que houve (tentou ler.nomede algo que éundefined). - Descer até a primeira linha que é do SEU código:
convidadoController.js:23:35(arquivo, linha 23, coluna 35). Tudo que temnode_modulesno caminho é o percurso interno do Express: ignora, não é lá que se mexe. - Ir na linha 23 e perguntar: o que aqui pode estar
undefined? (O resultado da query? Oreq.body? Um campo com nome trocado?)
4.3 Erro no PHP: a linha vem no final da mensagem
Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation:
1062 Duplicate entry '12' for key 'checkin.uq_checkin_convidado'
in /var/www/wedding-pass/api/checkin.php:18
Stack trace:
#0 /var/www/wedding-pass/api/checkin.php(18): PDOStatement->execute(Array)
#1 {main}
Leitura: uma exceção de PDO não tratada, violação de integridade, código MySQL 1062 (entrada duplicada) na chave única uq_checkin_convidado, disparada no checkin.php linha 18. Esse erro específico é um velho conhecido de propósito: é a constraint UNIQUE do check-in fazendo o trabalho dela (módulo 07). O bug não é o banco reclamar; é o código não ter tratado a reclamação pra devolver um 409 educado em vez de estourar na cara do usuário. Além do Fatal error (para tudo), o PHP solta Warning e Notice/Deprecated (avisos que não param a execução, mas apontam problema).
4.4 Os erros de MySQL que mais aparecem no treino
| Erro | O que diz | Causa típica |
|---|---|---|
1045 Access denied for user |
acesso negado | usuário ou senha errados na conexão |
1049 Unknown database 'wedding_pass' |
banco desconhecido | banco não criado ou nome errado no config |
1062 Duplicate entry '...' for key '...' |
entrada duplicada | UNIQUE violado (e-mail repetido, check-in duplo) |
1064 You have an error in your SQL syntax |
sintaxe SQL | vírgula sobrando, aspas erradas, palavra reservada |
1146 Table '...convidados' doesn't exist |
tabela não existe | nome errado (a tabela é convidado, singular) |
1451 Cannot delete or update a parent row |
FK bloqueou o pai | tentou apagar registro que tem filhos (é o RESTRICT agindo) |
1452 Cannot add or update a child row |
FK bloqueou o filho | inseriu filho apontando pra um pai que não existe |
ECONNREFUSED 127.0.0.1:3306 (Node) / SQLSTATE[HY000] [2002] (PHP) |
conexão recusada | o MySQL não está rodando, ou porta/host errados |
4.5 Os erros do navegador (console do front)
Failed to fetch/net::ERR_CONNECTION_REFUSED: a API não respondeu. API fora do ar, porta errada na URL, ou o servidor caiu. Primeiro check: o terminal do back.blocked by CORS policy: No 'Access-Control-Allow-Origin' header: o navegador bloqueou porque o back não liberou a origem. Falta o middleware de CORS (módulo 04).Unexpected token '<', "<!DOCTYPE"... is not valid JSON: o front pediu JSON e recebeu HTML. Quase sempre a API devolveu uma página de erro (404 ou 500) e oresponse.json()engasgou. O erro aponta pro front, mas a causa está no back ou na URL. 🎯 Esse é o erro que mais engana leitura apressada na prova.401 Unauthorizedem toda requisição: token ausente, expirado ou sem oBearerno header. Olhar a aba Network, não o código, primeiro.Cannot read properties of null (reading 'addEventListener'): ogetElementByIdnão achou o elemento. Id digitado diferente do HTML, ou o script rodou antes do HTML existir.
4.6 O método dos 30 segundos
Pra qualquer erro, sempre na mesma ordem:
- Tipo: que categoria de erro é? (sintaxe, conexão, constraint, undefined)
- Mensagem em português mental: traduzir a linha principal pra si mesma, sem tradutor.
- Onde: primeira linha do stack que é do meu código (arquivo:linha).
- Hipótese: o que naquela linha produziria essa mensagem?
- Teste: confirmar a hipótese (um
console.log, um SELECT, um print) antes de sair mexendo.
🛠️ Gambiarra boa: o erro entendido é o Google interno da prova. Sem internet livre, não dá pra colar a mensagem no buscador. Mas quem domina o vocabulário da §4.1 faz a "busca" de cabeça: Duplicate entry + nome da chave já diz o quê e onde. O treino diário do Drill 3 (§8) é exatamente pra instalar esse reflexo.
⚠️ Pega-ratão: ler o erro pela metade. No Node, a linha que importa é a primeira (mais o primeiro arquivo seu); no PHP, a mensagem se estica e o arquivo:linha ficam no final. E no MySQL, o número do erro (1062, 1452) diz mais que a frase em volta. Cada stack tem seu jeito, e ler pela metade em qualquer um deles leva pra caça no lugar errado.
5. O glossário por domínio
Regra de uso: essa é a base pronta. Na primeira semana de agosto ela vira um arquivo vivo no repositório de cada competidora (docs/glossario.md), e toda sexta-feira ganha os termos novos que apareceram no treino da semana (5 minutos, no fim do drill). Glossário que não cresce é glossário decorativo.
5.1 Palavras de enunciado
| Termo | Sentido | Exemplo em contexto |
|---|---|---|
must / shall |
deve (obrigatório) | The system must validate the input. |
should |
deveria (recomendado) | The organizer should receive an alert. |
may / might |
pode (opcional/possível) | Each guest may bring companions. |
required |
obrigatório | All fields are required. |
optional |
opcional | The phone number is optional. |
allowed / not allowed |
permitido / proibido | Duplicate entries are not allowed. |
at least / at most |
no mínimo / no máximo | At least 8 characters. |
up to |
até (inclusive) | Up to five companions. |
each / every |
cada / todo | Each table has a capacity. |
unless |
a menos que | ...unless the invitation is confirmed. |
otherwise |
caso contrário | Otherwise, an error is displayed. |
provided that |
desde que | ...provided that the code is valid. |
in order to |
para (finalidade) | In order to check in, the guest... |
such as |
como (exemplos) | Formats such as PDF or JPEG. |
e.g. / i.e. |
por exemplo / isto é | A unique code (e.g., A1B2C3D4). |
default |
padrão | The default status is "pendente". |
available |
disponível | Available seats per table. |
regardless of |
independente de | ...regardless of the user role. |
5.2 Banco de dados
| Termo | Sentido | Exemplo em contexto |
|---|---|---|
database / schema |
banco / esquema | Create a database named wedding_pass. |
table / row / column |
tabela / linha / coluna | The guest table has ten columns. |
record / field |
registro / campo | Each record represents one guest. |
primary key / foreign key |
chave primária / estrangeira | A foreign key constraint fails. |
constraint |
restrição | A UNIQUE constraint prevents duplicates. |
query |
consulta | The query returns confirmed guests only. |
join |
junção | Join the guest and table tables. |
sort / order by |
ordenar | Sorted by name in ascending order. |
ascending / descending |
crescente / decrescente | Descending order: newest first. |
aggregate |
agregar | COUNT and SUM are aggregate functions. |
transaction / commit / rollback |
transação / confirmar / desfazer | The transaction is rolled back on error. |
backup / restore |
cópia / restauração | Restore the database from the dump file. |
seed |
carga inicial | Seed the database with sample data. |
nullable / not null |
aceita nulo / não aceita | The table_id column is nullable. |
5.3 Back-end e API
| Termo | Sentido | Exemplo em contexto |
|---|---|---|
request / response |
requisição / resposta | The server sends a JSON response. |
endpoint / route |
ponto de acesso / rota | The /api/guests endpoint requires a token. |
method |
método HTTP | Use the POST method to create. |
header / body / payload |
cabeçalho / corpo / carga | Send the token in the Authorization header. |
status code |
código de status | Returns 201 when the guest is created. |
authentication |
autenticação (quem é você) | JWT handles the authentication. |
authorization |
autorização (o que você pode) | Authorization is based on user roles. |
role |
perfil/papel | Three roles: admin, organizer, reception. |
token / expired |
token / expirado | The token expires in two hours. |
hash |
resumo criptográfico | Passwords are hashed with bcrypt. |
middleware |
função intermediária | The auth middleware runs before the route. |
validate / validation |
validar / validação | Server-side validation is required. |
environment variable |
variável de ambiente | The secret is stored in an environment variable. |
parse |
interpretar/converter | The server parses the JSON body. |
stateless |
sem estado | REST APIs are stateless. |
concurrency / race condition |
concorrência / condição de corrida | An atomic update prevents the race condition. |
5.4 Front-end
| Termo | Sentido | Exemplo em contexto |
|---|---|---|
layout / grid |
disposição / grade | A two-column grid layout. |
responsive / breakpoint |
responsivo / ponto de quebra | The breakpoint is at 768px. |
component |
componente | A reusable card component. |
state |
estado | The four states: loading, empty, error, success. |
event / listener |
evento / ouvinte | Add a click event listener. |
render |
desenhar/exibir | The list is rendered from the API data. |
fetch |
buscar (a função e o verbo) | The page fetches the guest list. |
promise / async / await |
promessa / assíncrono | Await the response before rendering. |
input / form / submit |
campo / formulário / enviar | Prevent the default submit behavior. |
placeholder |
texto de exemplo no campo | A placeholder shows the expected format. |
disabled / hidden |
desabilitado / oculto | The button is disabled while loading. |
mask |
máscara de campo | A mask formats the phone number. |
storage |
armazenamento do navegador | The token is stored in localStorage. |
dropdown / modal |
lista suspensa / janela sobreposta | A confirmation modal before deleting. |
5.5 Git e terminal
| Termo | Sentido | Exemplo em contexto |
|---|---|---|
repository |
repositório | Clone the repository. |
commit |
gravar versão | Commit early, commit often. |
branch / merge |
ramo / mesclar | Merge the feature branch into main. |
conflict |
conflito | Resolve the merge conflict manually. |
push / pull |
enviar / trazer | Push your changes before leaving. |
stage / staging area |
preparar / área de preparação | Stage the modified files. |
remote / origin |
remoto / apelido do remoto | Origin points to the GitHub repository. |
untracked |
não rastreado | Untracked files appear in red. |
log / diff |
histórico / diferença | The diff shows what changed. |
directory / path |
pasta / caminho | Run the command in the project directory. |
run / install |
executar / instalar | Run npm install first. |
5.6 Palavras de erro
A tabela vive na §4.1 (é a mesma lista). No glossário vivo, esses termos entram no domínio "erros", de preferência colados no print do erro real em que apareceram.
🎯 Reconhecer é nota de leitura, usar é nota de fala. Bater o olho em constraint e entender já resolve a UC5. Conseguir dizer "I added a UNIQUE constraint to prevent duplicate check-ins" é a UC7. O glossário treina os dois estágios: primeiro a coluna do meio (reconhecer), depois a da direita (a frase inteira, em voz alta).
6. Falar do sistema em inglês
A apresentação da prova é em português. Mas a competência de comunicação técnica oral (UC7) se treina nas duas línguas, e falar do sistema em inglês tem dois retornos diretos: os termos técnicos saem naturais na apresentação (módulo 10 colhe isso), e a competidora fica pronta pra qualquer material ou interação em inglês que a prova trouxer.
6.1 O banco de frases prontas
Frases de verdade sobre o Wedding Pass, prontas pra adaptar ao sistema de cada uma. A meta não é decorar o banco: é falar cada uma em voz alta até sair sem pausa.
O sistema como um todo: - "Wedding Pass is a web system for wedding management." - "It has three user roles: administrator, organizer and reception." - "The front end consumes a REST API connected to a MySQL database."
Banco de dados: - "The database has six tables, and every table has a primary key." - "Each guest belongs to a wedding and may be assigned to a table." - "I added a UNIQUE constraint to prevent duplicate check-ins."
API e segurança: - "The API uses JWT for authentication." - "Every request must send the token in the Authorization header." - "If the token is missing or expired, the server returns 401." - "Passwords are hashed with bcrypt before being stored." - "I used prepared statements to prevent SQL injection."
Front-end: - "The interface is responsive: the layout adapts from mobile to desktop." - "Every screen handles four states: loading, empty, error and success." - "The form validates the input and shows a clear error message."
Funcionalidades: - "When a guest confirms the invitation, the system updates the status and checks the table capacity." - "The check-in uses an atomic update, so the same guest cannot enter twice." - "The dashboard shows the occupation per table, with an alert at 90% of capacity." - "The guest receives a confirmation receipt in PDF."
6.2 O padrão que sustenta qualquer arguição: I chose X because Y
Toda decisão técnica do sistema cabe numa frase desse formato, e é o mesmo músculo do banco de porquês do módulo 10:
- "I chose bcrypt because it was designed specifically for password hashing."
- "I chose an ENUM for the status column because there are only three possible values."
- "I put the capacity rule in the back end because the front end can be bypassed."
- "I used a UNIQUE constraint because it is the last line of defense against duplicates."
O formato força o hábito certo: nunca dizer só o que fez, sempre o que fez e por quê. Em qualquer língua, isso é o que separa descrição (nota 2) de justificativa (nota 3).
6.3 Narrar enquanto codifica 🛠️
A gambiarra de custo zero: durante o treino normal, explicar em voz baixa, em inglês, o que está fazendo. "Now I'm creating the check-in table, with a unique key on the guest id." Sem plateia, sem nota, sem hora marcada. Três frases por dia já mantêm o vocabulário ativo, e é treino de UC7 acontecendo dentro do treino de banco.
6.4 Pronúncia: as palavras que travam
Meta: clareza, não sotaque. A banca quer entender, não avaliar fonética. Mas algumas palavras técnicas têm pegadinhas que fazem a palavra sair irreconhecível, e essas valem 2 minutos de atenção:
| Palavra | Aproximação | Pegadinha |
|---|---|---|
column |
"cólum" | o n final é mudo |
foreign |
"fórin" | o g é mudo |
unique |
"iuník" | não é "uniquê" |
height |
"ráit" (com h aspirado) | não rima com "eight"; rima com "kite" |
width |
"uídth" | o th final existe, curtinho |
cache |
"cásh" | igual a cash; não é "cachê" |
queue |
"kiú" | as 4 últimas letras são mudas |
route / router |
"rut"/"ráut" | as duas pronúncias existem; escolher uma e manter |
suite |
"suít" | igual a sweet; não é "suáit" |
JSON |
"dgêi-son" | |
SQL |
"és-kiu-él" (ou "síquel") | as duas valem; "és-kiu-él" é a mais segura |
delete |
"dilít" | acento na segunda sílaba |
image |
"ímidj" | não é "imêidj" |
7. Diluir o inglês no treino (pra não virar matéria)
Inglês técnico morre quando vira "estudar inglês na sexta à tarde". Vive quando se dilui em quatro hábitos que não custam hora de cronograma:
- Ambiente em inglês. IDE, navegador e ferramentas configurados em inglês desde o primeiro dia. Cada menu virou flashcard grátis.
- Doc na fonte. Dúvida técnica vai primeiro na doc oficial (inglês), com a rota da §3.3. O vídeo dublado fica pra quando a doc não resolver. Resolve o problema e treina ao mesmo tempo.
- Glossário vivo com rotina. O arquivo da §5 no repositório, atualizado toda sexta no fim do drill. Termo novo que apareceu na semana entra com a frase real em que apareceu.
- O drill diário de 10 minutos. O motor de tudo, catalogado na §8. Nunca falha, nunca estica: 10 minutos, timer, todo dia.
🎯 A conta da constância. 10 minutos por dia, de agosto até a véspera da Seletiva, são mais de 14 horas de inglês técnico. Somando as duas aulas dedicadas, passa de 20 horas: quase o tamanho de um módulo técnico inteiro, sem gastar um turno sequer do cronograma. É assim que 15% da prova se treina sem ter semana própria.
8. O catálogo de drills de 10 minutos
É daqui que sai o aquecimento de inglês que abre toda aula de todas as guias. Regras da rotina:
- 10 minutos cravados, com timer. Estourou, acabou; o drill de amanhã continua de onde parou.
- Material preparado na véspera pelo professor (faz parte da "preparação prévia" de cada guia). Erro real do treino de ontem vale mais que erro inventado.
- Rodízio por fase: a tabela abaixo diz quais drills pagam mais em cada mês. Dentro da fase, variar pra não virar decoreba.
- Sexta tem apêndice: os últimos 5 minutos da sexta são de atualização do glossário vivo (§5).
| Fase do treino | Drills que pagam mais |
|---|---|
| Agosto (banco + API) | 1 (domínios banco/Git), 3, 10, 2 |
| Setembro (front + funcionalidades) | 1 (domínios front/API), 4, 8, 3 |
| Outubro (lapidação + apresentação) | 5, 6, 9, 7 |
| Novembro (reta final) | rodízio livre, com peso em 3, 8 e 9 |
Drill 1 — Palavra do dia
Como roda. O professor escolhe 5 termos do glossário do domínio da semana e mostra só a coluna da esquerda. Cada competidora explica o sentido; depois, cada uma monta uma frase em voz alta usando 2 dos termos, sobre o próprio sistema. Material. O glossário vivo (§5), aberto. Quando paga mais. O tempo todo; trocar o domínio junto com a fase do cronograma.
Drill 2 — Scanning cronometrado
Como roda. Uma página de doc aberta no telão (MDN, MySQL, php.net, Express) e 3 perguntas objetivas. 2 minutos por pergunta, no cronômetro, sem tradutor. Quem acha, fala onde achou (qual seção da página), porque o método importa mais que a resposta. Material. Uma página de doc ligada ao conteúdo da semana + 3 perguntas preparadas (modelo na §3.4). Quando paga mais. Agosto e setembro, quando cada semana traz ferramenta nova.
Drill 3 — Traduz o erro
Como roda. O professor mostra o print de um erro real que apareceu no treino de ontem (ou um da coleção das §4.4/§4.5). As duas aplicam o método dos 30 segundos em voz alta: tipo, mensagem em português, arquivo:linha, hipótese de causa. Sem abrir o código: o drill é de leitura, não de correção. Material. Prints de erros reais coletados durante a semana (o professor vai guardando). Quando paga mais. Sempre; é o drill mais rentável do catálogo, porque treina exatamente o gesto que recupera tempo na prova.
Drill 4 — Status code relâmpago
Como roda. O professor fala um cenário ("login com senha errada", "convidada criada com sucesso", "token expirado", "rota que não existe", "check-in duplicado"), e elas respondem o código e o nome em inglês (401 Unauthorized, 201 Created, 404 Not Found, 409 Conflict). Depois inverte: o professor fala o código, elas dão um cenário do Wedding Pass. Material. A tabela de status codes do módulo 04. Quando paga mais. Setembro, com a API viva e o front consumindo.
Drill 5 — My system in three sentences
Como roda. Cada uma descreve o sistema (ou o módulo da semana) em exatamente 3 frases, em inglês, de pé. Frase 1: o que é. Frase 2: como está construído. Frase 3: um destaque técnico. A outra escuta e diz qual das três ficou mais clara. Material. Nenhum; o banco de frases da §6.1 é a rampa de partida. Quando paga mais. Outubro, esquentando pro módulo 10.
Drill 6 — I chose X because Y
Como roda. Cada uma pega 2 decisões técnicas que tomou no dia anterior (qualquer tamanho: um tipo de coluna, um endpoint, um componente) e as formula em inglês no padrão da §6.2. Vale repetir decisão antiga com formulação melhor. Material. O trabalho de ontem; depois de outubro, o banco de porquês do módulo 10. Quando paga mais. Outubro e novembro, quando defender escolha vira rotina.
Drill 7 — Read aloud
Como roda. Cada uma lê em voz alta 4 ou 5 linhas de uma doc (parágrafo curto ou lista de passos) e resume em português em uma frase. O professor só corrige pronúncia que compromete a compreensão (tabela da §6.4); fluência vem com a repetição. Material. A doc da semana, qualquer trecho instrutivo. Quando paga mais. Outubro e novembro; bom pra variar quando os outros drills cansarem.
Drill 8 — Enunciado relâmpago
Como roda. O professor lê (ou projeta) um mini-requisito em inglês, no estilo do trecho da §2.1. Elas dizem: o que é must, o que é should, o que é may, e o que implementariam primeiro. 2 minutos por requisito, 2 ou 3 requisitos por drill. Material. Requisitos curtos que o professor escreve na véspera, misturando modais e limites numéricos (§2.4) do universo do sistema. Quando paga mais. Setembro em diante; é ensaio direto da leitura de enunciado da prova.
Drill 9 — Arguição relâmpago
Como roda. O professor faz uma pergunta em inglês sobre o sistema ("How does the system prevent duplicate check-ins?", "Where is the capacity rule enforced?", "What happens when the token expires?"). Nível 1: resposta em português usando os termos técnicos certos em inglês. Nível 2: resposta inteira em inglês, 2 ou 3 frases. Começar todo mundo no nível 1; subir pro 2 quando sair sem travar. Material. 3 perguntas preparadas sobre o que foi construído na semana. Quando paga mais. Outubro e novembro, junto do treino de arguição do módulo 10.
Drill 10 — Must, should ou may?
Como roda. O professor mostra 5 frases de spec (uma por vez) e elas classificam em obrigatório, recomendado ou opcional, justificando pela palavra ("must not: proibido, mais grave que faltar um should"). 30 segundos por frase. Misturar pegadinhas: unless, otherwise, up to, at least.
Material. Frases da §2 ou variações que o professor escreve.
Quando paga mais. Agosto, pra instalar a leitura de modal antes do primeiro TA.
9. Autoavaliação do módulo
- Num enunciado, qual a diferença prática entre
must,shouldemay? E por quemust noté tão grave quanto ummustfaltando? - "Each guest may bring up to five companions." Cinco acompanhantes passam na validação ou não? Que palavra define isso?
- O que significa
unlessnuma frase de requisito, e qual o erro clássico de implementação que ele provoca? - Qual a diferença entre skimming e scanning, e qual dos dois a prova usa mais?
- Qual é a rota dos 30 segundos pra achar uma resposta numa página de doc?
- Num stack trace do Node, como separar o que é do seu código do que é caminho interno do framework?
- O que diz o erro
1062 Duplicate entry for key 'uq_checkin_convidado', e por que ele pode ser um bom sinal? - Qual a diferença entre
x is not definedeCannot read properties of undefined? - O erro "Unexpected token '<'... is not valid JSON" aparece no front. Onde costuma estar a causa?
- Fala, em inglês, três frases sobre o teu sistema: o que é, como é construído, um destaque técnico.
- Formula em inglês, no padrão "I chose X because Y", duas decisões técnicas do teu sistema.
- Quais são os quatro hábitos que diluem o inglês no treino sem custar hora de cronograma?
Referências do módulo
- Plano de curso, UC5 (Analisar orientações técnicas em inglês escrito) e UC7 (Elaborar orientações técnicas orais). As duas UCs de 108h que ancoram o módulo; a bibliografia da UC5 usa a série Evolve (Cambridge University Press), base de inglês comunicativo do curso.
- RFC 2119 — Key words for use in RFCs to Indicate Requirement Levels. O documento que padronizou MUST/SHOULD/MAY em especificação técnica; a lógica que a §2.1 aplica ao enunciado da prova.
- MDN Web Docs (developer.mozilla.org). Referência de JavaScript, HTML, CSS e HTTP usada nos exercícios de scanning; a anatomia de página da §3.2.
- MySQL 8.0 Reference Manual (dev.mysql.com). Fonte das funções de data e da referência de mensagens de erro do servidor (os códigos da §4.4).
- Manual do PHP (php.net). Estrutura de página usada no exercício da §3.4; seções de funções e de tratamento de erros.
- Express — documentação oficial (expressjs.com). Doc curta orientada a exemplo, usada nos drills de scanning.
Inglês rodando por baixo de tudo, 10 minutos por dia? Então falta a última peça, o módulo onde a competidora senta na frente da banca e conta o que construiu: 10 — Apresentação e defesa.