A leitura deste livro tem como fim o aperfeiçoamento profissional e mudança no modo de enxergar o desenvolvimento. Algumas informações são essenciais para isto, como: boas práticas sempre levam a um bom design de código.
- 
Single Responsability: Perguntar para a classe sobre seu próprio método, ex.:
Carro qual a sua cor ?Isto ajuda a definir se um método faz sentido para a aquela classe, o que ajuda a definir que uma classe deve fazer apenas o que é de sua responsabilidade. Se perguntarmos:Carro qual é a capacidade do seu tanque ?talvez até faça sentido, mas conforme a aplicação vá crescendo, faça sentido criar uma classeTanqueque saiba responder a pergunta de qual a suacapacidade - 
Single Responsability: Utilizar sempre que possível attr_accessor _reader e writer - se for necessário incluir alguma lógica específica e/ou complexa para definir algum atributo, é melhor que este mesmo esteja isolado em um lugar(como os attr já o faz).
 - 
Managing Dependencies: Utilizar dependency injection(receber uma instância de outra classe como mensagem) ao invés de inicializar ou defini-lo dentro de sua classe.
 - 
Managing Dependencies: Utilizar hash de args em vez de parâmetros com ordem fixa nos métodos, a menos que sejam poucos e simples parâmetros. Também é recomendado definir valores padrôes em um método default e mergea-los, em caso de complexidade de valores default.
 - 
Designing Interfaces: Desenhar diagrama de sequência é uma maneira de tentar iniciar o design podendo errar e com baixo custo.
 - 
Designing Interfaces: Utilizar a abordagem de um mensagens. Um objeto não é criado para enviar/responder uma mensagem e não o contrário.
 - 
Designing Interfaces: Perguntar
o quêe nãocomopara uma mensagem. Isto ajuda a definir interfaces públicas, perguntar algo em vez de como para uma classe/instância. O como fica encapsulado na classe/instância como métodos privados. - 
Law of Demeter: Evitar encadeamento de métodos, principalmente se forem objetos / comportamentos diferentes. Esta lei permite o dev a se atentar à problemas de design, não se pode reaproveitar um 'estado' do meio do encadeamento, por exemplo:
bycicle.tire.rotatenão se pode aproveitar obycicle.tire. - 
Duck Typing: A definição é de não ligar tanto para a classe, mas sim para o comportamento, as mensagens. Se faz quack e anda como um pato, então é um pato. É o ato de extrair tipos virtuais de interfaces públicas, baseados no que eles fazem em vez do que eles são de fato.
 - 
Duck Typing: reduz riscos e aumenta flexibilidade, tornando a aplicação fácil de manter e de alterar