It is clearly a good understanding of Object-oriented programming, good guiding principles like SOLID Principles and following established patterns and practices.
If you look at SOA, or DDD, they all ultimately fall back to some form of OOP concepts.
I would recommend you to get some good OOP books and alos pick a rich language like C# or Java to begin with
OOP by Grady Booch
(PHP, ruby guys please do no down vote me, I am just giving some examples for him to begin with, you can provide your own answers and suggestions here)