So, the 2.0 version is very difficult because of BC, however, the end product will be much cleaner, and will require less work on the other developers. This also means less mistakes in the end.
The key to BC is in designing the initial system. You have to design it
Unfortunately, I don't know of any good way to teach this aspect of software development other than experience. Next time you sit down to hack code, plan the data structure, plan the logic and the way it will all work together.
And that brings up another good point: data structure. Having a properly normalized database is only the first step. You must understand completely how the elements work together, as well as how the elements allow for potential growth. Most often, software is only difficult to understand at the data structure level, as the logic is usually easy to follow. As long as you understand the data structure, and how the data relates and works together, the logic is simple.
This is why people suggest documenting the data structure and commenting very little on the source code.
Just my thoughts on BC.