Eu acho que os dois principais problemas com meus programas são minha estrutura / organização de código e meu tratamento de erros. Estou lendo o Código Completo 2, mas preciso ler algo para trabalhar com possíveis problemas.
Por exemplo, em um site, se algo só pode acontecer se o usuário mexer com dados via javascript, você escreve para isso? Além disso, quando você não captura erros? Quando você escreve uma classe que espera uma string e um int como entrada, e eles não são uma string e int, você verifica isso ou deixa transparecer o método de chamada que passou por parâmetros incorretos?
Sei que este é um tópico amplo que não pode ser respondido em uma única resposta aqui, então o que estou procurando é um livro ou recurso que seja comumente aceito como ensino da prática adequada de tratamento de exceções.