Atualmente a função de programador é requisitada em muitas empresas e se tornou essencial para um bom avanço no mercado, independente do ramo de atuação. Quase todas as áreas de produção ou serviço possuem um sistema, aplicativo ou melhoria possivel que pode ser realizada por um programador profissional. Com esta crescente demanda de profissionais vemos muitos iniciando no ramo e querendo saber como melhorar ou se destacar no ramo da programação.

Existem muitos pontos que podem fazer você ser melhor que os demais e vai muito além de finalizar mais tarefas. Claro que concluir seu trabalho é essencial, mas as sutilezas de habilidades que ficam em "off" podem fazer a diferença.

Entendimento

entendimento-programacao-inoweb

Antes de começar a programar qualquer coisa você precisa entender o que irá resolver. A maioria dos problemas difíceis só são difíceis porque você não conseguiu entendê-los.

Quando você sabe que entendeu o problema? Quando consegue explicá-lo de maneira simples.

Provavelmente você já passou por uma situação onde estava preso em um problema e tentou explicar para você mesmo o que estava fazendo e BOOM! Magicamente a solução apareceu em sua mente.

Existe uma "brincadeira" na área de desenvolvimento que é conhecida como Debug com pato de borracha, onde você basicamente debuga seu código explicando para um pato o que está sendo feito e o que deseja resolver, parece mentira mas realmente explicar o problema faz com que você assimile melhor todo o contexto e solução.

Enfim, entenda e problema e depois comece a encontrar maneiras para resolvê-lo.

Resolução de problemas

resolucao-de-problemas-programador-inoweb

Esta habilidade não é uma novidade, afinal essa é a função de um programador, abstrair problemas em algoritmos. O segredo está em resolver os problemas certos. Foque em problemas que tragam um maior impacto para a solução que deseja aprensentar.

Se existem pequenos processos repetitivos, concentre-se em automatizá-los para que possa cortar as tarefas chatas e robóticas, se você tem uma tarefa que toma 5 minutos de seu tempo todo dia que tal levar 1 hora para automatiza-la e otimizar o trabalho? Tarefas repetitivas são chatas, mas alguem precisa resolve-las.

A resolução de um problema pode ser resumida em: Entendimento -> Planejamento -> Divisão -> Execução

  1. Entendimento: Como mostrado acima, conheça bem o problema que deseja resolver antes de qualquer ação.
  2. Planejamento: Alinhe sua programação de maneira organizada, pense no problema que deseja resolver e encontre como ele será resolvido, qual linguagem utilizar, framework, padrão, otimização... Enfim, tenha controle da situação, não saia digitando aleatoriamente procurando uma solução e colando vários códigos de fóruns até que funcione.
  3. Divisão: Divida o problema em pequenas partes e resolva uma a uma de maneira distinta. Um problema grande é muito assustador e "trava" seu cérebro, pense nas pequenas frações e resolva em partes até que tenha o sistema completo.
  4. Execução: Com todos os pontos alinhados parta para a execução e mostre como resolver um problema com maestria.

Lembre-se que esses passos podem ser repetidos diversas vezes.

Conhecimento constante

estudo-programacao-inoweb

O mundo tecnológico evolui rapidamente, e ninguém consegue estar sempre atualizado nas últimas novidades do mercado, mas o interessante é que você tenha a habilidade de se adaptar quando necessário.

Foque em entender os conceitos básicos da ciência da computação e independente da linguagem de programação que escolher você poderá partir de um mesmo principio. Teoricamente todas as linguagens derivam de um mesmo local e entender esses conceitos "core" lhe garantem uma vantagem.

O conhecimento base é essencial, os conceitos principais sempre são os mesmos, o que muda é a nova forma de resolver um problema. Sempre terá alguem com uma nova teoria, framework, linguagem e diversos recursos interessantes, vai de sua experiência e entendimeto saber quais são úteis para seus projetos.

O que engloba os conceitos básicos? Envolve aprender: variáveis, tipos de dados, funções, estruturas de repetição — como e quando usar cada um deles, estruturas de decisão, escopos locais e globais, entre outros assuntos básicos.

Não se preocupe caso tome uma ação errada ou escolha equivocada, aprenda com esse erro e continue estudando, lembre-se que esta área é uma ciência e isso quer dizer que tudo é experimentado, testado e mudado constantemente. O segredo é não deixar seu conhecimento estagnado, mantenha-se atualizado.

Se você se deparar com um novo conceito pratique um pouco e tente entender quais problemas ele resolve, caso veja que é algo interessante e essencial aplique no seu dia-a-dia. Entendendo diversos conceitos você conseguirá definir quando utilizar cada um e como resolver um mesmo problema de diversas maneiras, isso garante à você um leque muito maior de caminhos que podem ser tomados, e o melhor, você consegue explicar os porquês de suas ações.

Sua eficiência na produção de código é resumida por dois fatores: entendimento e prática. Primeiro você precisa entender o que deve estudar. Depois entenda os conceitos base do que está estudando e então comece sua prática.

Lembre-se, a melhor maneira de aprender programação é programando. Pratique!

Dica de alguns sites para praticar: Code Wars, Hacker Rank, Coder Byte, Code Signal

Curso Gratuito de Harvard (em inglês, com certificado) que ensina os principios da Ciência da Computação: Acessar página do curso

Um bom livro para entender sobre algoritmos é o Entendendo Algoritmos: Um guia ilustrado para programadores e outros curiosos ele detalha de maneira mais visual e "palpável" conceitos que são abstratos e ajuda a entender melhor alguns itens básicos.

Saber filtrar

filtrar-conteudo-programador-inoweb

Na área de desenvolvimento existe uma gama imensa de materiais gratuitos e pagos para que você possa estudar sem limites, você realmente pode fazer o curso de ciência da computação do MIT em casa! (Ele fez isso). Em um primeiro momento esse conteúdo quase infinito pode parecer algo muito bom, afinal você tem a resposta para quase tudo na palma de sua mão, porém ao iniciar seus estudos você acaba ficando "perdido" com tantas informações, conceitos divergentes, várias soluções para um mesmo problema e outros diversos problemas pelo excesso de informação.

Nesse caso eu recomendo que você escolha uma fonte única, porém não fixa, de absorção de conteúdo. Encontre um professor, blog, livro, compilado, ou qualquer outra forma de estudo que agrade você e foque nela até que tenha extraido o máximo de informação útil, depois inicie novamente o fluxo de busca de novos conhecimentos.

Outro ponto importante é sempre questionar para você mesmo os conceitos que são explicados, entenda os "porque?" e "como?" dos conteúdos que você absorve, isso o ajudará no aprendizado de novos conceitos e construirá uma base sólida para suas abordagens futuras.

Conclusão

Esses são pontos que podem ajudar em seu desenvolvimento como programador, mas o mais importante é manter a constância em seus estudos e evolução. Mantenha uma rotina com consistência e conseguirá se tornar um desenvolvedor de sucesso.

Até mais! 👨‍💻

Fontes:
https://medium.com/javascript-scene/getting-to-10x-results-what-any-developer-can-learn-from-the-best-54b6c296a5ef

https://medium.freecodecamp.org/how-to-think-like-a-programmer-lessons-in-problem-solving-d1d8bf1de7d2

https://medium.freecodecamp.org/the-main-pillars-of-learning-programming-and-why-beginners-should-master-them-e04245c17c56