If you look at 10 different Sitecore solutions from the last few years you will most likely find 10 totally different types of architecture. As a developer picking up a solution from a third party or even internally this variance can mean a significant “Bedding in” period while you get a feel for the patterns being used.
Sitecore are attempting to standardize the approach taken to developing Sitecore solutions with Helix and Habitat.
Helix (http://helix.sitecore.net/) is a set of conventions that developers should be using when developing new websites.
Habitat (https://github.com/Sitecore/Habitat) is an example implementation of the Helix conventions.
Helix is based on the principles of package design which were created with the intention of creating software that is easy to maintain and extend. The principles of package design are an extension of the SOLID principles of class design but applied to packages of software.
I am not going to go into the principles here however if you want to spend some time understanding these a good book to read would be “Agile Software Development, Principles, Patterns, and Practices” by Robert C. Martin.
Why Should I Care?
As a Sitecore developer over the next few years you are likely to start seeing Helix compliant solutions more and more. Following the conventions should allow you to create software that is easier to maintain and extend.
Helix is a fairly large step away from more traditional “Type centric” solutions and understanding the why and how of Helix is going to allow you to pick up and develop solutions using these principles a lot faster than you have picked up solutions in the past.
A good place to get started is to go to the Habitat wiki and follow the “Getting Started” exercises (https://github.com/Sitecore/Habitat/wiki).