Escondida sob uma camada de código, existe uma linguagem que anseia por ser aprendida.

No momento da redação deste artigo, a busca "qual linguagem de programação aprender primeiro" retorna 517 milhões de resultados. Cada um desses sites vai exaltar uma linguagem específica, e 90% deles, em última análise, vai recomendar Python ou JavaScript.
Sem mais delongas, gostaria de declarar oficialmente que todos esses 517 milhões de sites estão errados e afirmar que a linguagem que deve ser aprendida primeiro é lógica fundamental.
Apenas saber programar não é suficiente. O mercado está tão saturado de graduados de faculdades e cursos que a posição de júnior praticamente já deixou de existir*. Para ter sucesso no mundo de hoje, você deve tanto programar quanto ter um pensamento lógico fundamental avançado.
* aqui e adiante, por favor, lembre-se de que esta é uma tradução e a situação no mercado de trabalho do autor pode ser diferente da sua (assim como outros nuances), o que, no entanto, não torna o artigo original pior — nota do tradutor.
Minha primeira aula de informática
Meu primeiro contato com a informática foi um curso eletivo que fiz no 10º ano. No primeiro dia, ao entrar na sala, fiquei maravilhado ao ver várias tigelas de sorvete e uma variedade de coberturas. Depois que todos se acomodaram, a professora proclamou:
«Hoje nós vamos degustar sorvetes feitos por nós mesmos. Mas com uma condição: vocês devem elaborar uma lista de instruções específicas para fazer a sobremesa, e eu seguirei»
«Sem problemas», pensei, «esta aula não vai demorar». Em menos de um minuto, escrevi uma receita incrível para o sorvete dos meus sonhos:
- Colocar três bolas de sorvete de framboesa em uma tigela
- Abrir o molho de chocolate e adicionar duas colheres de sopa na mesma tigela
- Adicionar chantilly na tigela
- Polvilhar tudo com palitinhos de açúcar e colocar uma cerejinha por cima
Minha professora — «computador» nesta doce metáfora — fez uma apresentação mais sarcástica e literal do que eu já vi antes. Ela começou a furar o recipiente de sorvete com uma colher de sorvete, sem nem tocar na tampa.
«Tudo bem, tudo bem, mas primeiro é preciso abri-lo!» — exclamei, tentando pegar a sobremesa o mais rápido possível.
«Você não escreveu isso nas instruções, e eu não consegui preparar o sorvete para você. PRÓXIMO!»
Vamos avançar até a tentativa nº 2
- Abra o sorvete de framboesa, retirando a tampa
- Colocar três bolas de sorvete de framboesa em uma tigela
- Abrir o molho de chocolate e adicionar duas colheres de sopa na mesma tigela
- Adicionar chantilly na tigela
- Polvilhe tudo isso com palitinhos de açúcar e coloque uma cereja em cima
Agora, definitivamente não deve haver problemas. Eu até verifiquei, por precaução, se todos os ingredientes para a criação da minha obra-prima culinária estavam abertos.
A professora removeu a tampa, pegou um poco e colocou três bolas de sorvete na tigela. «Finalmente meu lindo sorvete começou a se concretizar!» Em seguida, ela abriu o molho de chocolate e adicionou duas colheres de sopa na tigela. Não «adicionou o molho de chocolate de duas colheres de sopa» — não se engane — ela, é claro, colocou as colheres na tigela. Sem molho nelas. Mais uma vez não fui detalhista. Depois que o restante foi feito da mesma maneira, recebi uma tigela de sorvete com duas colheres de sopa, mal visíveis sob um mar de chantilly. No topo, havia alguns palitinhos de açúcar.
Parece que, neste momento, finalmente percebi: o computador é lógica em um vácuo. Ele não sabe das circunstâncias ao seu redor e não faz suposições. Ele apenas executa instruções claramente formuladas e as segue palavra por palavra.
Meu resultado final foi o resultado de uma longa, mas necessária sequência de tentativas e erros:
- Abra, se ainda não tiver sido feito, cada uma das seguintes embalagens: sorvete de framboesa, molho de chocolate, chantilly, palitinhos de açúcar.
- Pegue uma tigela e coloque-a diante de você
- Pegue uma colher de sorvete e, um a um, coloque três bolas de sorvete de framboesa na tigela. Coloque a colher de sorvete de volta no lugar.
- Pegue o frasco de molho de chocolate, pegue um pouco de molho e despeje o conteúdo da colher de sopa na tigela. Repita a ação de pegar e despejar o molho mais uma vez. Coloque a colher e o frasco de volta no lugar.
- Pegue e vire a embalagem de chantilly de cabeça para baixo e, segurando-a sobre a tigela, despeje sobre o sorvete por 3 segundos, depois volte a embalagem ao lugar.
- Pegue o frasco de palitinhos de açúcar, despeje cerca de quarenta palitinhos na tigela e coloque o frasco de volta no lugar.
- Pegue uma cereja da tigela com cerejas e coloque-a em cima do sorvete.
- Entregue a tigela com o sorvete pronto e a colher ao aluno.
O último ponto foi especialmente importante, pois sem ele, na penúltima vez, a professora simplesmente começou a comer meu sorvete.
Mas isso é programação. É a criação intensa de um conjunto meticuloso de instruções para o computador. Essencialmente, é isso que cada linguagem de programação se resume — à elaboração de instruções.
Carreira em programação
A programação alcançou um ponto em que é difícil discutir como uma única indústria, assim como é difícil usar uma única palavra "programador" como descrição de vaga. Dois desenvolvedores podem ser igualmente procurados pelo mercado, conhecendo linguagens completamente diferentes, o que significa que a capacidade de desenvolver é mais importante do que o conhecimento de uma linguagem específica. Um atributo universal comum a todos os desenvolvedores de sucesso é lógica fundamental.
O melhor programador é aquele capaz de olhar o código de uma nova perspectiva. E isso é fundamental, porque a maioria dos produtos de software é um conjunto de fragmentos mal documentados de código ruim. Eles precisam ser constantemente reunidos, tapando lacunas conforme necessário. Pessoas que não conseguem unir pontos díspares em uma linha única permanecerão, para sempre, em segundo plano.
Tudo isso me leva a mais uma declaração, desta vez em negrito: o conhecimento fundamental sempre foi e será primordial para o programador.
As linguagens vêm e vão. Frameworks se tornam obsoletos, e as empresas reagem à demanda, alterando a pilha de tecnologias utilizadas. Existe algo que nunca mudará? Sim — o conhecimento fundamental, que por ser chamado de fundamental, está na base de tudo!
Como melhorar o conhecimento fundamental
Foto de Christopher para
Se procura um ponto de partida para melhorar seu raciocínio lógico fundamental, tente começar por aqui:
Conheça a complexidade do seu programa
Também conhecida como Big O A "complexidade do algoritmo" refere-se à dependência do tempo de execução do programa em relação ao tamanho de seus dados de entrada (n). Manter-se atualizado sobre os algoritmos utilizados é um passo importante.
Conheça suas estruturas de dados
As estruturas de dados estão na base de qualquer programa moderno. Saber qual estrutura usar em cada caso é uma disciplina em si. As estruturas de dados estão diretamente ligadas à complexidade do tempo de execução, e escolher a estrutura errada pode levar a problemas fundamentais de desempenho. A busca de um elemento em um array é igual a O(n), o que demonstra o custo elevado de usar arrays como dados de entrada. A busca em uma tabela hash é O(1), o que significa que, neste caso, o tempo de busca de um valor não depende do número de elementos.
Em entrevistas, já vieram pessoas que afirmavam que buscar em um array era mais rápido do que em uma tabela hash. Esse era um sinal claro de que não devíamos contratá-las — conheça suas estruturas de dados.
Leia / assista / ouça
Sites como , e são uma excelente escolha para aprender novas linguagens de programação. Mas para os fundamentos, consulte livros sobre princípios, práticas e estilos de codificação. Os livros mais recomendados são 'Padrões de Projeto', 'Refatoração: Melhorando o Código Existente', 'Código Limpo' e 'O Programador Pragmático'. Finalmente, todo desenvolvedor deve ter uma cópia de '' à mão.
Pratique!
Não é possível fazer omelete sem quebrar os ovos. Sites como , , , e oferecem milhares de desafios interessantes para testar seus conhecimentos sobre estruturas de dados e algoritmos. Tente resolver um problema que lhe chama a atenção, publique sua solução no Github e, em seguida, veja como outros o abordaram. Isso nos leva ao último ponto:
Leia o código dos outros
O maior erro que você pode cometer ao longo do caminho do desenvolvimento é percorrê-lo sozinho. O desenvolvimento de software é, em grande parte, um trabalho em equipe. Nós criamos padrões juntos, cometemos erros juntos e, apesar de todas as dificuldades, nos tornamos melhores juntos. O tempo gasto lendo o código dos outros valerá a pena. Apenas certifique-se de que se trata de um bom código.
A melhor dica que posso lhe dar é nunca ter vergonha de não saber algo. Nossa indústria é enorme e a quantidade de tecnologias é imensa. Leva muito tempo e esforço para construir uma visão geral, ainda mais para se tornar um profissional em algo específico, e muito mais para aprimorar suas habilidades na sua área. Eu lhe informarei quando eu mesmo alcançar isso.
Fonte: habr.com
