3

Estudando e praticando.

Parece resposta inútil. So que é basicamente isso mesmo.

Em uma faculdade por exemplo isso fica até bem visível. Você começa em Introdução à ciência da computação fazendo média de aluno, Fibonacci, essas humilhações pedagógicas tradicionais. Depois vem estrutura de dados, orientação a objetos, com seus sistema de locadora ou registro de alunos, Quando chega em arquitetura e engenharia de software que começam a aprecer os projetos que dá para chamar de programa de verdade… É só lá depois de uns 4 semestres que começa a aparecer uma noção razoável de como pegar “quero fazer X” e transformar em “vou precisar dessas partes aqui”.

E mesmo assim sai tudo horroroso no começo. Faz parte do aprendizado.

Porque programador experiente não olha para uma ideia e recebe uma visão divina com 13 classes perfeitamente desacopladas e modulares descendo dos céus em UML coberta de ouro. Ele já viu problemas parecidos antes. Então começa a reconhecer padrões. “isso aqui é uma máquina de estado”, “isso aqui é tratamento de entrada”, “isso aqui precisa ser persistido”, “isso aqui provavelmente vira uma interface”, “isso aqui vai ser uma merda de manter”. Essa última habilidade é a mais importante.


Mas tem outra pegadinha no seu caso. Pelo texto, desconfio que quando você fala “programa de verdade”, esteja imaginando aplicação gráfica.

Fazer aplicação gráfica realmente do zero é um trem bastante complexo, ainda mais se quiser rodar em Windows, Linux etc. Ninguém começa implementando janela, botão, fonte, evento de mouse, sistema de layout e renderização na unha só porque quer fazer uma agenda.

Use um framework.

Eu começaria pelo Qt. Instala o Qt Creator e fuce os exemplos que vêm com ele. São um material de estudo muito bom porque você consegue pegar um programa funcionando, mexer, quebrar, consertar e entender aos poucos como as partes se encaixam.

E aí de repente C++ começa a parecer um pouco com o mundo web que você já conhece. Tem componente, layout, propriedade, evento, callback… quase um HTML + CSS + JavaScript que tomou whey e foi para a academia.

Também recomendo muito o livro Professional C++, da Wrox. É um tijolo respeitável, mas ele ajuda justamente a atravessar esse buraco entre “sei a sintaxe de C++” e “consigo fazer um software útil com C++”.


E uma coisa importante. Programador experiente copia código dos outros o tempo inteiro.

Às vezes é na cara dura mesmo. Copia um exemplo da documentação ou uma resposta saudoso Stack Overflow ou, hoje, da IA.

Mas a maior parte da cópia é muito mais sutil.

É um pedaço de código que você leu cinco anos atrás e ficou perdido em algum canto da cabeça. É uma solução que existia naquele sistema legado em que você trabalhou, com 20 anos de história e 400 engenheiros tendo dado commit antes de você. É a implementação de uma biblioteca obscura dos anos 80 que você abriu numa madrugada só de curiosidade e, sem perceber, aprendeu alguma coisa com ela.

Depois de um tempo você nem sabe mais exatamente de onde vieram certas ideias. Elas simplesmente viraram repertório.

É aquela velha maxíma do nada se cria, tudo se copia.

Programação é uma atividade absurdamente cumulativa. A gente copia algoritmo, arquitetura, padrão, interface, convenção, ideia, erro e, às vezes, até o comentário // TODO.

A diferença entre o iniciante e o experiente não é que um copia e o outro não. Os dois copiam.

O experiente só acumulou uma biblioteca muito maior de coisas para copiar. E isso só aparece depois de fazer muitos projetos.

Alguns bons. A maioria ruins. Uns três que, anos depois, você abre o código e pensa “meu Deus, que tipo de animal escreveu essa porcaria?” Aí lembra. Foi você. Parabéns, está aprendendo..

Carregando publicação patrocinada...
1

Uma coisa que eu estou fazendo é a mesma coisa que fiz há muitos anos, quando comecei a aprender sobre computadores. Eu não sabia o que cada peça fazia, como funcionava e o que acontecia se determinada peça não estivesse presente.

Fui ao Google e comecei a pesquisar para que servia cada peça, como funcionava e etc. Com o tempo, fui entendendo como um computador funciona e o que cada peça faz.

Assim foi no xadrez. De um dia para o outro, fiquei obcecado por xadrez. Estudei cada movimento das peças separadamente, descobri o repertório, aprendi jogadas e jogava todos os dias. Com o tempo, comecei a perceber movimentos iguais, padrões e, com isso, sabia o que fazer. Não me tornei um mestre no xadrez, mas isso me fez ganhar algumas partidas.

Eu pedi para uma IA criar uma calculadora, desmontei cada bloco de código, cada função, variável, loop e etc. Comecei a estudar cada linha e cada bloco de código. E acho que consegui entender o “mindset” de um programador.

Primeiro, você estuda a linguagem, como funciona uma função, os tipos, como usar, o que é uma variável, como declarar uma variável, como manipular as variáveis, os tipos de variáveis existentes, o que é um loop, condicionais, orientação a objetos, o que é entrada de dados e etc. Após começar a entender como tudo isso funciona e se sentir mais confortável, quando eu for desenvolver um projeto (CLI, obviamente, pois pretendo ficar por um bom tempo criando programas CLI), é aí que entra o fluxo (eu acho que é assim que se fala). Você escreve o que o software deve fazer, cada funcionalidade e como o programa deve se comportar. Após escrever o fluxo do programa e já ter estudado a linguagem de programação, você sabe o que tem que colocar, onde vai a variável, qual tipo de variável deve usar, onde colocar uma função, onde colocar uma condicional, onde colocar o loop, como controlar a memória do programa, usar ponteiros e etc.

Aí, o que sobra é descobrir quais bibliotecas utilizar e como escrever e estruturar o código.

Essa foi a visão que eu consegui entender. Já tentei estudar C++ anos atrás, mas sempre sentia que estava desperdiçando meu tempo, até perceber o quanto eu gosto dessa linguagem. Não importa o quanto tempo leve, uma hora ou outra, eu acabo voltando a estudar essa linguagem.

Lembrando que tudo isso que escrevi é apenas uma visão que desenvolvi pesquisando e enchendo o saco das IAs e das pessoas kkkkk.

Posso simplesmente ter falado um monte de merda e sem sentido.