Você provavelmente já se perguntou o que significa “pensar como um programador” e como você faz isso. Essencialmente, trata-se de um meio mais eficaz de resolver problemas. Todos nós temos problemas grandes e pequenos. A forma como lidamos com eles é, às vezes, bastante aleatória. A menos que você tenha um sistema, provavelmente é assim que você “resolve” problemas (foi o que fiz quando comecei a codificar):

  1. Tente uma solução.
  2. Se isso não funcionar, tente outro.
  3. Se isso não funcionar, repita o passo 2 até ter sorte.

Às vezes você tem sorte. Mas essa é a pior maneira de resolver problemas, além de ser uma enorme perda de tempo. A melhor maneira envolve a) ter uma estrutura e b) praticá-la.

pensar com um programador

1. Entender

Saiba exatamente o que está sendo perguntado. A maioria dos problemas difíceis só são difíceis porque você não os entende (ta aí porque este é o primeiro passo).

Como saber quando você entende um problema? Quando você pode explicar isso em um simples português.

Você se lembra de estar preso a um problema, começa a explicá-lo e vê instantaneamente buracos na lógica que você não viu antes?

É por isso que você deve anotar seu problema, rabiscar um diagrama ou contar a alguém sobre isso (ou coisa… algumas pessoas usam um pato de borracha).

2. Planejar

Não mergulhe direto na solução sem um plano (e, de alguma forma, espere que você possa atrapalhar seu caminho). Planeje sua solução! Nada pode ajudá-lo se você não conseguir anotar as etapas exatas.

Na programação, isso significa não começar a invadir imediatamente. Dê tempo ao seu cérebro para analisar o problema e processar as informações.

Para obter um bom plano, responda a esta pergunta:

Dada a entrada X, quais são as etapas necessárias para retornar a saída Y?”

Nota: Os programadores têm uma ótima ferramenta para ajudá-los com isso… Comentários!

3. Dividir

Preste atenção. Este é o passo mais importante de todos. Não tente resolver um grande problema. Em vez disso, divida-o em sub-problemas. Estes sub-problemas são muito mais fáceis de resolver.

Em seguida, resolva cada sub-problema um por um. Comece com o mais simples (simples significa que você sabe a resposta ou está mais perto dessa resposta).

Depois disso, o mais simples é que esse sub-problema que está sendo resolvido não depende da resolução de outros.

Depois de resolver todos os sub-problemas, conecte os pontos.

Conectar todas as suas “sub-soluções” lhe dará a solução para o problema original. Parabéns!

Esta técnica é uma conexão de soluções para resolver o problema maior. Lembre-se (leia este passo novamente, se for necessário).


4. Preso?

A essa altura, provavelmente você está sentado pensando “Isso é legal e tudo mais, mas e se eu estiver preso e não conseguir resolver um sub-problema?”

Primeiro, respire fundo. Em segundo lugar, isso é justo. Não se preocupe, amigo. Isso acontece com todos!

A diferença é que os melhores programadores / solucionadores de problemas são mais curiosos sobre erros do que irritados.

Aqui estão três coisas para tentar enfrentar um golpe:

 – Debug: percorra passo a passo sua solução tentando descobrir onde você errou. Os programadores chamam isso de debuggin.

 – Reavaliar: Dê um passo atrás. Olhe para o problema de outra perspectiva. Existe algo que possa ser abstraído para uma abordagem mais geral?

Outra maneira de reavaliar é começar de novo. Apague tudo e comece novamente com novos olhos. Estou falando sério. Você ficará perplexo com a eficácia disso.

 – Pesquisa: Ah, bom e velho Google. Você leu certo. Não importa qual problema você tenha, alguém provavelmente resolveu. Encontre essa pessoa / solução. Na verdade, faça isso mesmo se você resolveu o problema! (Você pode aprender muito com as soluções de outras pessoas).

Advertência: não procure uma solução para o grande problema. Apenas procure soluções para sub-problemas. Por quê? Porque a menos que você tenha dificuldades (mesmo um pouco), você não aprenderá nada. Se você não aprender nada, desperdiçou seu tempo.

Na prática

Não espere ser ótimo depois de apenas uma semana. Se você quer ser um bom solucionador de problemas, resolva muitos problemas!

Prática. Prática. Prática. Será apenas uma questão de tempo até você reconhecer que “esse problema pode ser facilmente resolvido com <inserir conceito aqui>”.

Puzzles de xadrez, problemas de matemática, Sudoku, Go, monopólio, video-games, cryptokitties, bla… bla… bla…

Na verdade, um padrão comum entre as pessoas bem-sucedidas é o hábito de praticar “microssolução de problemas”. Por exemplo, Peter Thiel faz xadrez e Elon Musk joga videogames.

Isso significa que você deve apenas jogar videogames? De modo nenhum. Mas o que são video-games? Isso mesmo, resolução de problemas!

Então, o que você deve fazer é encontrar uma saída para praticar. Algo que permite resolver muitos micro-problemas (idealmente, algo que você goste).

 


Consiga um emprego!

Está buscando novas oportunidades com desenvolvedor?  Acesse a ProgramaThor, uma startup focada no recrutamento de desenvolvedores. Para se candidatar às vagas para programador e receber notificações em casos de matching, basta de cadastrar e completar seu perfil corretamente.

VAGAS PARA PROGRAMADORES

Compartilhar