Making a Solid Developer

I can’t help but wonder sometimes, what else besides those technical skills make a great developer.  What builds the character that makes someone obsessively chase being the best they can be?  What character builder helps a person find the path of opportunity to lead the pack and step away from the herd?

I once wrote years ago that a top notch developer often stays on the verge of being in trouble.  Such as in the developer is pushing the envelope.  I still mostly agree with that, but also one has to know when to and not to push the envelope.  Sometimes it gets a great developer fired, and by being so they’d probably become an even better developer from the experience.