Convention Over ConfigurationAUTHOR: Francisco Sáez
Convention over configuration is a simple concept that is primarily used in programming. It means that the environment in which you work (systems, libraries, language…) assumes many logical situations by default, so if you adapt to them rather than creating your own rules each time, programming becomes an easier and more productive task.
The goal is to decrease the number of decisions the programmer has to make and eliminate the complexity of having to configure all and each of the areas of application development. The immediate result is that you can create many more things in less time.
Highly successful programming environments such as Ruby on Rails are based on this concept. If you follow the established conventions, you can develop a Rails application in much less time and with many fewer lines of code than you would need developing a similar web application in Java, for example.
If, on the other hand, you want to ignore conventions, you can always replace them with your own code. However, since conventions are not arbitrary, but have been established by a community of high level programmers, it rarely does make sense to waste time overwriting them.
In fact, this concept of convention over configuration is also the basis on which any form of work that requires a certain structure rests. A working methodology like GTD (Getting Things Done), for example, provides a series of conventions for an optimal, personal organization. A concrete series of lists are recommended to be managed, a five-stages work flow is established, and six perspective levels are defined in order to understand the importance of what you do. Other aspects are defined as well, such as the ideal way to review your system or how to plan your projects.
These conventions have been defined by the creator of GTD, David Allen, after decades helping his customers organize themselves and seeing what works and what does not work. Later, they have been validated by hundreds of thousands of people that use this method daily, and supported by cognitive science researchers.
Not everything is positive. There are two fundamental problems in any structured work environment. First, it requires a greater learning curve; you need to know the system to get the most out of it. Second, some see it as an imposition, an approach they feel forced to follow.
Finding a balance between convention and configuration is not easy. Too much convention can make the system too confusing and it may increase the learning curve. Too much freedom can make the user unnecessarily increase the complexity of the system, making it difficult to achieve the desired objectives.
In any case, to use a system in which most things are pre-configured is always more productive than to use a completely open system in which you have to set all the rules and take all decisions. And the return on investment usually outweighs the need to learn.
Of course, you can always get out of conventions and overwrite the system with your own solutions. But if we talk about GTD, most of the times you’re fooling yourself, trying to ease yourself into not doing what you should be doing, without feeling bad about it.
Just like Ruby on Rails lowers the barriers of access to the programming of powerful web applications, GTD lowers the barriers of access to a very efficient personal organization. And it’s at your fingertips.