I was recently asked for advice from a young student on how to become a successful software developer. This is a complicated question. I put some thought into it, and realized that every individual will become successful in different ways. Here are some things that helped me:

  • Always strive to improve yourself and learn more.
  • Share information freely with others — be generous.
  • Focus on developing good working relationships with your coworkers, both technical staff and others.
  • Effective communication, both written and spoken is crucial.
  • Get involved in open source.
  • Be precise.
  • Deliver on commitments, or if you need to renegotiate your commitments.
  • In everything that you do, do it with integrity.

Almost none of these have anything to do with knowledge of technology. I believe that social aspects have far more impact on success than anything else. Of course being knowledgeable helps too, however what's more important than knowing a specific technology is being able to pick up the knowledge that you need, when you need it.

A few things that I missed in my response because I take them for granted:

  • Have passion for what you do.
  • Strive for excellence.
  • Avoid being self-righteous.

I'm sure that there are many things that contribute to being successful. I'd love to hear from others: what do you think are key contributing factors to becoming a successful software developer?