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?