Ronaldo
Ronaldo Desenvolvedor, pai, cidadão do mundo.

A super simplificação do developer

Cursos rápidos prometem fazer programadores da noite para o dia. Mas o buraco é bem mais embaixo.

A super simplificação do developer

A internet anda pipocando de cursos milagrosos que transformam qualquer pessoa em programador. E muita gente tem investido dinheiro nesses cursos na esperança de se tornarem developers.

Sim, saber uma linguagem de programação, qualquer que seja, é importante, mas não o mais importante. Saber uma linguagem de programação não faz de você um programador, da mesma forma que saber português não faz de você um escritor de livros. Existe muito mais por detrás de um programador que a vã linguagem de programação.

O que estes cursos milagrosos não ensinam é a estruturar o pensamento lógico. Falta o conhecimento de algoritmos, estruturas de dados, padrões de projeto e por aí vai. Paradigmas, como programação funcional, procedural e orientada ao objeto, programação linear, programação declarativa e modelamento processual e relacional estão sendo deixados de lado.

Estas coisas são de extrema importância para que um programador consiga escrever código de qualidade. Como um programador pode criar uma rotina que interage com um banco de dados relacional se não faz a menor ideia do que é um banco de dados relacional?

O problema é que estamos vivendo uma coqueluche de startups e estas startups, talvez pela limitação de recursos, procuram por programadores faz-tudo que possam surgir com uma solução mirabolante como se programar fosse como tirar um coelho da cartola. Com isso, os programadores são super-simplificados e passam a ser pessoas que tem seu conhecimento limitado a linguagens de programação. E só.

As startups que vêem o programador como a sua tábua de salvação terminam com um produto cuja manutenção é cara e altamente dependente de quem escreveu. Não há preocupação com o ciclo de vida do software e o resultado é que a startup, do ponto-de-visita técnico, tem vida curta.

Pensamento Lógico

O pensamento lógico é, na minha opinião, essencial para a escrita de programas confiáveis, eficazes e eficientes. Infelizmente, não é algo que seja muito intuitivo: trata-se de como aprender a dar ordens a uma coisa que não vai questionar absolutamente nada e vai executar ao pé da letra tudo o que você disser.

Hoje em dia as linguagens de programação são basicamente imperativas, ou seja, você precisa dizer o que quer que seja feito ordenando ao computador que faça determinada coisa. Para entender por que isso pode ser complicado, experimente escrever, em português mesmo, uma lista de instruções explicando como dar o laço no sapato. Imagine que um robô vai fazer o que você está dizendo. Isto é muito complicado e muito pouco intuitivo.

Porém, esta é a forma como escrevemos programas hoje em dia: imperativamente. E dentro deste aspecto, é preciso construir o pensamento lógico para que você consiga descrever com a menor quantidade possível de instruções o que quer que seja feito. Além disso, é preciso entender o que é a modularização, ou seja, uma forma de dividir o problema que você tem em problemas menores e criar soluções para cada um dos problemas menores no intuito de resolver o problema maior.

Sintaxe e Semântica não é tudo

A linguagem de programação é, na verdade, a peça menos importante a ser aprendida. Imagine que que a linguagem é onde você vai escrever a expressão do seu pensamento. Porém, é preciso aprender a pensar primeiro antes de expressar-se.

Ao contrário das linguagens naturais, aqui estamos expressando o pensamento de forma que um computador possa executar instruções de maneira a materializar seu pensamento, seja em termos de números, gráficos, sons ou qualquer outra forma que seja possível em um computador.

Assim, se você tende a ser prolixo, o seu programa também será prolixo, cheio de instruções desnecessárias. Se você é objetivo, seu programa também será muito objetivo.

Não supersimplifique

Um programa de computador, qualquer que seja a plataforma na qual irá executar, é, antes de mais nada, uma peça de engenharia. Ali foram gastos conhecimentos em estruturas de dados, modelamento matemático, análise de dados e problemas e mais uma série de outras disciplinas não menos complicadas.

O bom programador sabe projetar bem o que vai escrever. Não sai escrevendo para “ver no que vai dar”. Quando isto acontece, costumo dizer que se escreve software por coincidência, ou seja, o programa coincidentemente funcionou mas não se sabe o por que.

É importante completar que o programador não tem balas de prata. Trata-se apenas de mais um profissional envolvido em um projeto de desenvolvimento de software. É preciso ainda ter analistas de sistemas, de negócio, profissionais de modelagem e análise de dados, designers e mais uma penca de outros profissionais caso você queira desenvolver software de qualidade.