As a consultant I am often asked to provide training and mentoring. Let's face it: Technology changes extremely often and typical IT departments have plenty of work. As a result, staying on top of technology is tough. So organizations often (and smartly) hire consultants to help weed out the most appropriate technologies and provide focused mentoring and training.
Note: Everytime you read "world class" insert your tongue firmly into your cheek.
Occasionally, however, an organizational representative (CIO, IT Directory, Development Manager) makes the request to "turn my organization into world class developers." That's a tall order…huge in fact. In fact, I argue that when that request comes along, it is made out of ignorance. If the requestor really understood all that goes into that, they wouldn't ask.
I guess there probably was a time when being a world class developer was a reasonable endeavor (although I don't believe it whole heartedly). Today, however, it seems that there is simply too much to know and it changes regularly. I started thinking about all the things we need to know as developers and I created the following diagram:

Each of these aspects is part of each project (arguably security should be incorporated in others…but it's so symmetrical this way don't you think?). However, they do NOT need to be used at the nth level of detail.
I will have future entries relating to why I think we, the developers, need to know all of this stuff. I will also probably spend a little time on some of the aspects to give you more info about why I mean.
In the meantime, what do you think? What did I miss?