In this second part of a three-part series introducing the Rails framework, you'll learn some of the advantages of working with Rails, as well as its central tenets. It is excerpted from chapter one of the book Beginning Rails: From Novice to Professional, written by Jeffery Allan Hardy, Cloves Carneiro Jr. and Hampton Catlin (Apress, 2008; ISBN: 1590596862).
Web applications are not traditionally known for agility. They have a reputation of being difficult to work with and a nightmare to maintain. It is perhaps in response to this diagnosis that Rails came on to the scene, helping to usher in a movement toward agile programming methodologies in web development. Rails advocates and assists in the achievement of the following basic principles when developing software:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
So reads the Agile Manifesto1, the result of a discussion between 17 prominent figures (including Dave Thomas, Andy Hunt, and Martin Fowler) in the field of what was then called “lightweight methodologies” for software development. Today, the Agile Manifesto1 is widely regarded as the canonical definition of agile development.
Rails was designed with agility in mind, and it takes each of the agile principles to heart, almost obsessively. With Rails, you can respond to the needs of customers quickly and easily, and Rails works well during collaborative development. Rails accomplishes this by adhering to its own set of principles, all of which help make agile development possible.
Dave Thomas and Andy Hunt’s seminal work on the craft of programming, The Pragmatic Programmer (Addison-Wesley, 1999) reads almost like a roadmap for Rails. Rails follows the don’t repeat yourself (DRY) principle, the concepts of rapid prototyping, and the you ain’t gonna need it (YAGNI) philosophy. Keeping important data in plain text, using convention over configuration, bridging the gap between customer and programmer, and above all, postponing decisions in anticipation of change are institutionalized in Rails. These are some of the reasons that Rails is such an apt tool for agile development, and it’s no wonder that one of the earliest supporters of Rails was Dave Thomas himself.
In the sections that follow, we’re going to take a tour through some of Rails mantras, and in doing so, demonstrate just how well suited Rails is for agile development. While we want to avoid getting too philosophical, some of these points are essential to grasping what makes Rails so important.