Livros:   - Código Limpo:Um Manual de Artesanato de Software Ágil, de Robert C. Martin 
 - Código completo:um manual prático de construção de software por Steve McConnell 
 - ThePragmatic Programmer:From Journeyman to Master por Andrew Hunt e David Thomas 
 - Padrões de Projeto:Elementos de Software Orientado a Objetos Reutilizáveis por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides 
 - Padrões de design Head First:um guia amigável para o cérebro, de Eric Freeman, Elisabeth Robson, Bert Bates e Kathy Sierra   
Cursos on-line:   - 
edX oferece vários cursos online gratuitos sobre programação de computadores, incluindo "Introdução à Ciência da Computação" e "Introdução à Inteligência Artificial". 
 - 
Cursora também oferece cursos online gratuitos sobre programação de computadores, como “Programação para Todos” e “Especialização em Ciência de Dados”. 
 - 
Udacidade oferece cursos on-line sobre uma variedade de linguagens de programação e tecnologias, como "Introdução ao Python" e "Introdução ao Desenvolvimento Web". 
 - 
Pluralsight oferece cursos on-line pagos em uma variedade de linguagens e tecnologias de programação, como "Fundamentos de Java" e "Fundamentos de Desenvolvimento Web".   
Documentação:   - A documentação oficial de muitas linguagens de programação e bibliotecas é um recurso valioso para aprender como projetar e escrever programas de computador. Por exemplo, a documentação do Python, a documentação do Java e a documentação do C++ estão todas disponíveis online.   
Projetos:   - Uma das melhores maneiras de aprender a projetar programas de computador é começar a escrever os seus próprios. Você pode encontrar muitas ideias para projetos de programação on-line ou criar as suas próprias. Começar um projeto pode ajudá-lo a praticar as habilidades que aprendeu e a solidificar sua compreensão dos conceitos de programação.   
Mentoria:   - Se você quer mesmo aprender a projetar programas de computador, considere encontrar um mentor que possa ajudar a orientá-lo e responder a quaisquer perguntas que você tenha. Pode ser um professor, um assistente de ensino ou um programador mais experiente. Ter um mentor pode fornecer feedback e apoio valiosos à medida que você aprende.