Carreira

Como pensar como um programador ao resolver problemas

Como pensar como um programador ao resolver problemas


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Você quer aprender a resolver problemas como um programador de computador? Então você veio ao lugar certo.

Aqui, exploramos como o programador mediano lida com problemas e sugerimos maneiras de ajudá-lo a fazer o mesmo. Um futuro melhor e mais eficiente de solução de problemas espera por você.

Pelo menos em teoria.

RELACIONADOS: 9 DOS MEMES DO PROGRAMADOR MAIS ENGRAÇADOS AGORA

O que é solução de problemas em programação?

Antes de começar, pode valer a pena descobrir o que a solução de problemas tende a significar para os programadores.

De acordo com a Escola de Computação da Universidade de Utah, geralmente é definido como:

"A resolução de problemas [é] a resolução de problemas é o cerne da ciência da computação. Os programadores devem primeiro entender como um ser humano resolve um problema, depois entender como traduzir esse 'algoritmo' em algo que um computador pode fazer e, finalmente, como 'escrever' a sintaxe específica (exigida por um computador) para fazer o trabalho. "

Parece simples na superfície, mas, como você está prestes a descobrir, é na verdade algo mais como uma "arte" do que uma ciência (até certo ponto).

Segure firme ...

Como você pensa como um programador?

Steve Jobs disse a famosa frase que "todos neste país deveriam aprender a programar um computador porque ele ensina você a pensar". Esta é uma mensagem muito poderosa e não significa necessariamente que você precise se tornar a próxima Ada Lovelace, Steve Wozniak ou Bill Gates.

O desenvolvimento de "habilidades pessoais" ou "meta-habilidades", como aprender a pensar de forma clara e crítica, renderá dividendos em muitos aspectos da sua vida.

Principalmente em sua carreira profissional, seja qual for o caminho que você escolheu, seja engenheiro ou não.

Junto com outras "meta-habilidades" importantes, como tomar perspectiva, detectar dor, contar histórias, entrevistar e conectar os pontos, dominar essa habilidade é amplamente considerado essencial em nosso mundo tecnologicamente complexo. Na verdade, muitos empregadores priorizam a resolução de problemas e, até certo ponto, a codificação básica em relação à maioria das outras habilidades ao procurar novas contratações em potencial.

"Habilidades de resolução de problemas são quase unanimemente a qualificação mais importante que os empregadores procuram ... mais do que proficiência em linguagens de programação, depuração e design de sistema.

Demonstrar o pensamento computacional ou a capacidade de quebrar grandes e complexos problemas é tão valioso (se não mais) do que as habilidades técnicas básicas necessárias para um trabalho. ” - Hacker Rank.

Então, como você pode desenvolver essa habilidade? Bem, uma maneira é tentar pensar como um programador.

Se você conhece alguém em seu grupo de amigos, sua primeira parada pode ser para ter uma discussão franca e aberta sobre isso. Pode parecer estranho no início, mas você aprenderá rapidamente e amará o processo.

Mas, essencialmente, os programadores aprendem, geralmente por tentativa e erro, a se tornarem progressivamente mais eficazes na solução de problemas. A maioria das pessoas, a menos que você tenha desenvolvido um sistema robusto, provavelmente envolverá algo como o seguinte:

1. Tente uma solução.

2. Se não funcionar, tente outro.

3. Se isso também falhar, enxágue e repita a etapa 2 até encontrar algo que funcione (talvez por sorte).

Embora pareça uma abordagem razoável, esta metodologia está sobrecarregando sua energia mental e, mais importante, um tempo valioso e insubstituível (seu único ativo real na vida). Este é, com efeito, o método de força bruta para resolver problemas.

Os programadores são mestres em uma maneira mais sutil e eficaz de fazer isso por meio de uma estratégia de planejar, fazer, verificar e agir. Isso envolve, com efeito:

1. Ter uma abordagem de estrutura para resolver um problema.

2. Pratique, aprenda com os erros, analise e melhore até dominá-los.

Embora, inicialmente, isso exija um grande investimento de seu tempo, uma vez que você esteja bem versado nisso, você terá que pagar dividendos no futuro. Você também deve tentar cultivar alguns outros hábitos de estilo de vida (como os de Elon Musk) que o ajudarão a resolver problemas usando uma mentalidade de programador.

Como posso melhorar minhas habilidades de resolução de problemas de programação e desenvolver uma mentalidade de programador?

Como mencionamos anteriormente, a melhor maneira é desenvolver uma estrutura para resolver problemas e então praticar, praticar, praticar. Mas o que significa ter uma estrutura para solução de problemas?

Existe uma vasta biblioteca apenas sobre este assunto, mas, em essência, uma estrutura de solução de problemas terá alguns, se não todos, dos seguintes componentes principais:

1. Divida e entenda o problema em questão

O primeiro passo em sua estrutura de solução de problemas deve ser tentar saber exatamente o que está sendo solicitado ou exigido. Muitos problemas, aparentemente intransponíveis, são apenas assim porque, inicialmente, não os compreendemos em sua totalidade.

Então como você faz isso? Um indicador de que você entendeu o problema é ser capaz de explicá-lo em um inglês simples ou mesmo em um diagrama.

Ao pensar e vocalizar o problema, você encontrará rapidamente as lacunas na lógica ou em seu próprio entendimento que pode ter esquecido de antemão. Este é um processo do qual a maioria dos programadores está bem ciente.

Escreva o problema, tente esboçá-lo (talvez usando um mapa mental) e tente explicá-lo a outra pessoa.

2. Falhar em planejar é planejar falhar (fazer um plano e dividir um grande problema em outros menores)

O próximo passo é tentar formular um plano de ataque. Como tudo na vida, nunca comece algo antes de fazer isso (especialmente coisas como investir seu dinheiro).

Divida os problemas maiores em pedaços menores e mais digeríveis e pense em maneiras de eliminá-los da lista. Você provavelmente desenvolveu algo semelhante a isso durante seu período de estudos na universidade ou em qualquer outro momento de sua vida.

Para os programadores, eles não vão direto ao ponto sem que essa fase seja classificada. O tempo investido nesta fase irá economizar uma tonelada de tempo perdido mais tarde.

Esta é a mentalidade do programador.

Tente responder a uma pergunta como, "dada uma entrada, quais são as etapas que preciso para retornar outra saída?", Etc. Sem mencionar uma rede de conjunto de instruções "se isso então aquilo ou alguma outra coisa".

Isso é crítico para os programadores, pois eles precisam desenvolver sub-rotinas, funções, métodos e procedimentos, e outros bits menores de código, que devem funcionar como um todo.

Um erro em um pode impactar, e geralmente afetará, outras partes do código e pode até levar a problemas como loops infinitos. Ao trabalhar cada estágio do problema principal dessa maneira, os erros e as soluções podem ser resolvidos à medida que aparecem.

Também não é incomum que um travamento exija a solução de problemas em vários pedaços menores de código autocontidos. Esta é, em essência, uma maneira de conectar os pontos.

Por outro lado, esse também é um dos principais motivos pelos quais os comentários são usados ​​no código por programadores. Especialmente quando se trabalha em equipe (ninguém consegue ler a mente do outro).

Mas, nós divagamos.

Você não deve ter medo de pedir ajuda, ou então alguma pesquisa. Você pode não ter que reinventar a roda. Mas NÃO confie nas soluções dos outros para seus problemas, pois você não aprenderá e desenvolverá sua própria mente e habilidade em uma área específica.

"Se eu pudesse ensinar a cada programador iniciante uma habilidade de resolução de problemas, seria a 'técnica de reduzir o problema' ...

Reduza o problema ao ponto em que você saiba como resolvê-lo e escreva a solução. Em seguida, expanda o problema um pouco e reescreva a solução para que corresponda e continue até estar de volta ao ponto de partida. "- V. Anton Spraul.

3. "Fique no alvo", você pode e vai ficar preso às vezes

"Os melhores planos de ratos e homens muitas vezes dão errado", como disse Robert Burns. Não se preocupe, isso é esperado e frequentemente adotado.

Mas, o que você faz quando não consegue resolver um problema, especialmente durante a programação?

Enquanto muitos levantam as mãos à primeira vista de um problema ou solução que falha, a maioria dos programadores desenvolveu uma atitude de curiosidade em relação aos "bugs".

Sem mencionar a determinação de consertá-los.

Quando eles surgem, os programadores geralmente iniciam um processo, uma função mental se você quiser, do seguinte:

  • Envolva-se em um processo de depuração, percorrendo passo a passo a solução escrita para encontrar problemas óbvios (como mau uso da sintaxe).
  • Se isso falhar, reavalie dando um passo para trás e tente "encontrar outro ângulo" para o problema. Alguma coisa pode ser abstraída ou está faltando alguma coisa? Em outras palavras, você está "perdendo a floresta pelas árvores"? É muito comum ficar tão atolado nos detalhes que muitas vezes perde a visão geral.
  • Se tudo falhar, você pode simplesmente começar tudo de novo - você ficará surpreso com as soluções que podem ser encontradas.

4. A prática leva à perfeição

Um pequeno clichê? Talvez, mas você não pode esperar resolver todos os problemas ou subproblemas complexos da noite para o dia. Ser bom em qualquer coisa leva tempo para praticar, falhar, tentar novamente e dominar.

À medida que você acumula sua experiência na solução de problemas, o processo se torna cada vez mais rápido à medida que você identifica os métodos usados ​​anteriormente e que podem ser aplicados em uma determinada situação. Na verdade, muitas das pessoas mais bem-sucedidas participam regularmente da "minissolução de problemas".

Alguns jogam xadrez, outros sudoku, outros ainda palavras cruzadas ou até jogos de computador regularmente. Tente encontrar um que você goste e trabalhe essa massa cinzenta!

E, provavelmente o mais importante de tudo, não tema o fracasso. Você aprenderá muito mais onde errar do que onde for bem-sucedido. Aprenda a falhar e falhe rápido!

E isso é tudo. Seu caminho para a solução de problemas como programador o aguarda!

Boa sorte, viajante.


Assista o vídeo: Ejercita tu lógica de programación - Desafíos de razonamiento y código para mejorar tus algoritmos (Junho 2022).


Comentários:

  1. Lunden

    Thank you very much for the information you need.

  2. Pelleas

    Que palavras adequadas... pensamento fenomenal, magnífico

  3. Kazile

    Estou estou muito animado com essa questão. Diga-me, por favor - onde posso encontrar mais informações sobre esta questão?

  4. Saturnin

    O site é excelente, mas parece que algo precisa ser ajustado.

  5. Crawford

    Você está absolutamente certo. Nele, algo também é para mim que parece que é uma ideia muito excelente. Completamente com você, vou concordar.



Escreve uma mensagem