Eu tenho programado nos últimos 15 anos com diploma não-CS. A principal razão pela qual entrei na programação foi que eu gostava de aprender coisas novas e aplicá-las ao meu trabalho. E pude encontrar e corrigir erros de programação e suas causas mais rapidamente do que outros. Mas nunca me considero um guru ou um especialista, talvez devido ao meu diploma de não-CS. E quando vi grandes programadores, observei que eles são muito bons, muito melhores do que eu, é claro, na solução de problemas.
Uma habilidade que achei boa no meio da carreira é pensar em requisitos e tarefas em ordem inversa e abstrata. Dessa forma, posso ver o que realmente é necessário para eu fazer sem detalhes e rapidamente encontrar partes da solução que já existem.
Então, eu me pergunto se existem outras habilidades de pensamento para ser um bom programador. Segui as perguntas e respostas abaixo e, na verdade, li alguns livros recomendados por lá. Mas eu realmente não consegui pegar bons métodos diretamente aplicáveis ao meu trabalho de programação.
/software/44654/skills-and-habits-to-develop-to-be-good-at-programming-im-a-newbie