Visão computacional
Muitas pessoas querem começar a programar já escolhendo alguma linguagem demandada pelo mercado, mas é fundamentalmente importante e producente que os novos programadores foquem um tempo no desenvolvimento do seu ráciocinio lógico, haja visto que esse ajudará na produção de bons algoritmo. Note que quanto melhor você entender aquilo que está se propondo a codificar, melhor, mais rápido, e com menas dor de cabeça você chegará em resultados. E talvez seja esse um dos problemas atuais da baixa produtividade dos desenvolvedores.
O processo de construção de um algoritmo é independe de uma linguagem de programação e passa por etapas que alguns transformaram em conceitos como o Clean Code, eu diria que três etapas são o suficiênte (mas posso estar errado) sendo elas: Estudar o problema, algoritimizar o problema (entenda algoritmizar como um processo de transformar um problema real em uma sequência lógica de passos), e depois codificiar. E talvez pessoas estejam codificando muita coisa sem entender o problema ao qual estão ataca, resultado assim em códigos sujos e cheio de bombas relógio.
Estudos indicam que a maioria dos programadores gastam mais tempo concertando bugs doque realmente codificiando novas funções, e talvez esses gargalos ocorram por uma falta de uniformidade da equipe sobre como eles irão atacar o problema, ou seja, cada um quer algoritmizar o problema a partir de um ponto de vísta (ex: existe várias formas de se fazer café) e essa falta de úniformidade pode levar a conflitos de sentenças que são chamados popularmente de Bugs. É aquase como aquela ideia de uma pessoa estar dirigindo sem saber para onde ir, e várias outras no carro dizendo qual direção tomar, sendo que o destino deveria ser o mesmo. Sendo assim, seria mais inteligente se todos entendesse e concordasse democraticamente com uma solução.
Para os que querem começar a programar eu os aconselharia a transformar em estruturas lógicas (algoritmo) tarefas do dia a dia como por exemplo ir ao mercado, de depois aprender estrutura-los como à exemplo dos algoritmos de lista. E para as equipes eu diria para eles buscar uniformizar o tipo de solução, e isso não é só padronizar o projeto, mas realmente todos compartilhar da mesma ideia de solução, ou seja, todos seguirem a mesma rota (sendo todos abertos a críticas). Lembremos que isso são conselhos, não métodos ou certezas.
Espero ter ajudado com algo.