How do you become a "Successful Developer"?

Fin asked a few of us inside and outside Microsoft for tips in becoming a successful developer. I’m not sure that she expected the deluge (or verbosity) of responses – I think she only had about 300 words to fill in total – she asked 15 people so it turns out 20 words each was the target. I’m going to post my full response here and will link to the others' if they post their full responses as well.

For me, the most important characteristic of a successful developer is an insatiable thirst for knowledge. Take the time to deeply understand the tools and technologies you use. Read blogs from the people who develop and maintain the tools. Take a course from a visiting expert. Ask questions in online forums. Read in-depth books about the field.

Unfortunately though, this deep knowledge will only get you so far. Equally important for a successful developer is a broad knowledge of the tools and technologies only peripherally related to your area of expertise and even some completely unrelated fields. In some ways, this knowledge is harder to acquire than the deep knowledge The first hurdle is to think about what peripheral knowledge would be useful. There are some obvious candidates like a broad understanding of the industry in which you’re working, but for the rest, I’d recommend attending a community group of some sort, for example one of the local developer user groups. Regardless of the topic, make a point of attending every one of these you can. It’s incredible how often you’ll have an "Ah Ha!" moment sitting in a session in which you have ostensibly no interest at all.

Last, but by no means least, learn to enjoy sharing knowledge. Take every opportunity you have to present to a group, engage with other developers and generally socialise. The benefits are huge.

So, what do you think makes a successful developer?

Of course, you should got to TechEd :)

Update – Craig’s posted his response. One word – Practice.

Update 2 – Andrew’s response: "Be Humble"