Ed Johnson (Hacknot)'s original title was The Three Ages of a Developer, but what he wrote applies to all those who create at the direction of others, no matter what the endeavor. Whether you write software, write songs, paint art, or what, if you do it for others, you will find (IMHO) yourself progressing through Hacknot's 3 ages.
First, you learn the skills of your craft. For any creative endeavor involves both art and craft, as you need the craft to realize the vision of your art. Taking up a new musical instrument can be humbling in this regard, especially when it is outside the general area of your current expertise (moving from a constant-frequency instrument like a guitar or piano to a variable-frequency instrument like a violin, for example).
Second, you realize that there (a) patterns of design; (b) some patterns go better together; and (c) some patterns make good, unexpected combinations, while other pattern combinations are like a duck glued to a unicycle. You realize that there is an overall structure to what you create, which determines how well it fits the purpose of those who requested your creation. For example, event-driven design fits well with current GUI usage, as it is expected that the GUI user can request any operation at any time (or will be blocked when an operation is ongoing), while a program-driven design works well with command-line utilities, as command-line utilities can proceed from start to end once they have their initial arguments.
Finally, you realize that what you create for others should be driven by their needs and desires. Developers excel at creating software for other developers, as they know what developers want and need. Non-developers are usually at best unsure about what a computer could do for them. This is what makes gathering requirements from non-developers so hard, as they have little idea of what a computer can and cannot do for them in time allotted software development time. Instilling common sense rudimentary knowledge of the world around them, and what the constraints are of the real world has proven to be an immensely difficult task (but see OpenCYC for a possible way into the future), which then makes creating a truly intelligent computer assistant hard, even in well-defined problem domains (like CAD, for example). Interconnecting the industrialized world with an easy-to-use computer network the World Wide Web, built on top of the Internet has proven relatively easy. Just 14 years ago (1993), even IT people often didn't know much about the Internet, much less use it to solve everyday problems. Today, if you are in any kind of information-using business in the industrial world, you have some kind of Internet connection, with the ability to use information from China or France as easy as using information from your home country.
From what I have seen, all those who create for others, if they want to continuously improve their creative ability, will eventually go through the 3 ages.