It's not a secret, that Ruby is a powerful, super flexible and at the same time extremely laconic language. Ruby on Rails is the most popular framework for web applications, and it certainly deserves its honour. But as you may already know, there is no silver bullet, and every tool fits best for a certain type of tasks. And Rails is not an exception. In this topic I'm going to tell about criteria of good and bad architectures, common approaches of good architecture and how to apply them in the ruby ecosystem. We will go through the basics: a heart of software development, intention-revealing programming, SOLID principles and TDD, and will end with more advanced technics such as domain-driven design and functional programming. The overview will come with examples and resources applicable to the ruby ecosystem.