Superficial, básico e avançado
Tags: webdev
Published: 2024-03-09 17:34:25

Ufa, finalmente meu primeiro artigo de 2024. Criei ~~vergonha na cara~~ coragem e resolvi sentar e escrever um pouco.

> Vou voltar a escrever coisas técnicas com frequência, prometo

Mas antes de tudo, queria deixar claro que este ~~bait~~ post aqui é mais uma reflexão do que algo técnico. Não tem referências, não é uma verdade absoluta. Apenas uma reflexão.

Afinal, como dividimos os níveis de conhecimento? Por exemplo, costumamos ver uma divisão entre básico, intermediário e avançado, certo?

Aí é onde entra minha reflexão.

## Um pouco de contexto
Esses dias estava conversando com uns colegas de trabalho e de repente chegamos nesse tema, sobre o que considerar básico ou avançado. 

Pra mim, um dos problemas é que esta divisão pode causar um pouco de ansiedade em algumas pessoas, pois elas se consideram no "básico" e se vêem muito longe do conhecimento que consideram "avançado".

O outro problema advém da régua que estamos nivelando. Ao determinar que tudo se começa pelo básico, e ao vermos que o distanciamento para o avançado é muito grande, isto pode nos deixar presos ao que consideramos básico, portanto, sempre nivelando o conhecimento médio para *baixo*.

## O básico não é o que parece
Minha provocação é que o básico não deveria ser considerada a *porta de entrada* do conhecimento em algum tema.

Ao entrarmos em alguma nova área de conhecimento, estamos de fato em uma *superfície*, portanto coloco este nível de conhecimento como *superficial*. Após termos um conhecimento superficial sobre algo, é o momento de entrarmos no básico, o que significa aprofundar um pouco mais neste conhecimento de tal modo que possamos estar **dominando** este conhecimento básico.

Veja, não vamos considerar o *domínio em algo* como sendo expert ou avançado naquele conhecimento. Não. O domínio do básico deveria ser de tal forma que todos nós buscamos se tivermos algum interesse e, principalmente, se formos atuar com aquele tema no dia-dia.

## Deturparam o básico
Muito se vê comentarem sobre o problema das pessoas saberem o básico ou então criticarem quando alguém compartilha algum tipo de conteúdo considerado "básico".

Algumas definições de _básico_ no dicionário:

> Que serve como base; essencial, basilar.

> O mais relevante ou importante de; fundamental.

Ou seja, o básico tem muito a ver com o *fundamental*, ou *essencial*. Ao meu ver, é _extremamente importante_ dominarmos o básico se quisermos atuar com este conhecimento de forma frequente.

## Teu conhecimento é superficial
Muitas vezes, o que pensamos ser o conhecimento básico em algo é, na verdade, um conhecimento superficial. 

Sabemos apenas a superfície. Temos uma noção de como aquilo funciona. Mas não conhecemos profundamente.

Avançar para o básico consiste em aprofundar neste conhecimento. E o básico pode muitas vezes parecer **complexo**.

Mas calma, já explico como dominar o conhecimento básico, e não precisa se desesperar, é necessário apenas um certo grau de dedicação que no fim vai fazer se sentir melhor e mais próximo do que consideramos *avançado*.

## Domínio do conhecimento básico
Okay, mas como dominar o conhecimento básico? Aqui entra uma técnica muito sofisticada que consiste em:

- fazer tutoriais
- praticar

> Ah, Leandro. Você tá de BRINCADEIRA COM A MINHA CARA??

Calma, xofem. Tutoriais são extremamente importantes. Faça tutoriais, um, dois, três, quantos puder. Tire conclusões. Descarte o que não vale a pena.

E depois pratique com aquilo que já sabe. Por exemplo, ao aprender uma nova linguagem de programação, é muito útil escrever um projeto, trecho de código, algoritmo, estrutura de dado, whatever o que quiser que você já tenha feito em outras linguagens.

Isto se chama *prática*. A prática vai fazer você sair do nível "tutorial" e aprofundar em conceitos básicos, o que naturalmente vai te fazer dominar este nível do conhecimento.

Uma breve analogia (detesto analogias mas aqui vai) é quanto aos níveis de inglês, ou qualquer outro idioma. Muitos pensam que fluência em inglês está no último patamar *mas não*, a fluência está em todos os níveis: é possível saber apenas o básico do inglês mas buscar fluência dentro do básico.

É sobre isto que estou falando.

## Saindo do superficial
O lance é que podemos sair do superficial. Este conhecimento de superfície costumo dizer que é como "molhar o pé na piscina". Molhou, a água tá boa? Dá um mergulho, sente a piscina (lá ele com analogia de novo, aff).

O superficial nos dá uma noção, mas sentimos que não dominamos. Sentimos muita dificuldade. Pra mim, muitas dificuldades em algo denunciam um conhecimento superficial, e não o básico.

Ao sair do superficial e buscarmos dominar o básico em algo, estamos subindo a régua, isto nos coloca mais próximos do que consideramos "avançado", mas sem adicionar ansiedade.

## Tá mas o quê é avançado?
Pra mim, o avançado é *basicamente* (trocadilho não intencional) se aprofundar ainda mais naquela área do conhecimento. É quando você, apesar de estar confortável com o conhecimento de base e não ficar bloqueado com frequência, quer entrar mais em detalhes e talvez buscar ser ainda mais proficiente naquela área.

Não vou aprofundar em como entrar no avançado, talvez fique pra outro post. Mas aqui meu foco é saindo de superficial e entrando no básico.

## Vamos a exemplos práticos
Por exemplo, em web, o conhecimento superficial seria saber que eu digito algo no navegador e alguma coisa acontece no servidor. Daí vou olhar o servidor pra ver o que aconteceu. Vejo logs, erros, etc e tento entender esses erros, perguntando, pesquisando e usando outros métodos. 

Já o conhecimento básico me coloca num ponto onde sei que por trás desse pedido do navegador, está acontecendo a resolução de nome, roteamento, conexão TCP através da internet, onde do outro lado há uma aplicação rodando em uma porta do sistema operacional atravé de TCP, etc e etc. Este conhecimento me ajuda a aumentar o vocabulário na área e a *extrapolar* para outros contextos que não web, facilitando na resolução de problemas (troubleshooting).

Já o avançado é quando vou hackear roteadores, usar sysdig para fazer bait de hackers no meu servidor, entre outros aspectos (sigh).

## Outro exemplo prático
Compiladores. Saber que nossa linguagem é "compilada" para código de máquina é um conhecimento superficial. Conseguimos seguir adiante com este conhecimento? Claro. No dia-dia muitos de nós fazemos CRUD, não é?

Mas o conhecimento básico nos coloca em outro patamar, como entender que está acontecendo a etapa de análise léxica, parsing, otimizações, transformações etc antes de ser gerado de fato o código de máquina. Dominar o básico de compiladores pode ser essencial para identificar pontos de performance em alguma aplicação quando a "água bater no pescoço" em um problema bicudo. 

Se você estiver no superficial em compiladores, okay ninguém vai te cobrar nada. Mas imagina fazer parte do grupo que foi lá, arregaçou a manga e fez aquele tweak no interpretador adicionando uma mísera flag apenas porque você sabe *o básico de compiladores*? Então...

Já o avançado de compiladores considero que seria entender a fundo as otimizações, criar o próprio JIT, fazer patch em runtime, escrever algoritmos de parsing e coisas do gênero. 

And so on...

## Conclusão
Veja, cara pessoa leitora, que não quero causar aqui algum tipo de entropia. Quero apenas que entenda que é possível dominar o básico sem ansiedade, sem toda a carga imposta para saber coisas avançadas em algo.

Ao dominar o básico, um dia você pode encontrar inspiração e vontade para ir mais a fundo no avançado (mas isto não é de todo obrigatório), mas entenda que o conhecimento básico é que nos faz subir no conhecimento, nivelando a régua pra cima, e não pra baixo.

> Mas tudo o que você disse não é o mesmo que básico, intermediário e avançado?

Interprete como quiser, mas a percepção de estarmos no básico nos afasta do intermediário. Bora sair do básico e ir pro intermediário então, se isto ajudar...rs

> Mas eu não quero saber o básico, quero ficar apenas no superficial

Tá tudo bem também. É a sua escolha saber o superficial em algo. Se isto não causa nenhuma ansiedade ou te faz mal por não saber coisas mais "avançadas", é perfeitamente aceitável continuar no superficial :)

That's all folks!