Without a doubt the most powerful concept I have ever learned in my life, is the ability to see things for their smaller parts and be able to break them down. With all things in life, your ability to complete tasks is equaled by your ability to break things down. It's that simple.
In front-end development, these rules do not change, but for some reason most people think they do. The typical starting point is from the most difficult position possible, the outermost part of the design and then work your way in.
This 'outside-in' development approach never works. It doesn't take long before you find yourself painted into a corner and using the worst of the worst CSS and HTMl strategies to get yourself out.
Decomposing your UI basically comes on the form of breaking it down into the common elements, then finding the common patterns, then creating reusable modules and in turn can become larger use cause modules with states that need to be assembled in the layout.