I loved this advice from James M Turner.
When I talk about passion, I mean love. I’ve been in love with computers since I was 14 years old, and I’d be playing with them even if I didn’t get paid for it. If software engineering is merely a means to an end, you’re not going to be happy in the long term working in this field, because much of it is God-awful boring unless you have a passion for it.
People in their 20s tend to jump into small, fledgeling companies, and that’s one of the best things you can do. A junior developer at Fidelity or Akamai is going to work on one thing for long periods of time, while at a start-up you’ll get a chance to jump all over the place, learning many different aspects of the field.
Truly pioneering development can change the world. Flickr did it, by giving the world a single photo album to share. Linux did it, by creating a solid, flexible, performant operating system that you could throw into a $9.99 product, because you didn’t need to license it. Try to find at least one opportunity in your career to move the ball a little, rather than just doing what’s already been done. It doesn’t have to be a touchdown; even a few yards can make a difference.
I have worked closely with over 50 software developers over 25 years. I would rate about 5-7 of them world class. One true outstanding quality that made them different from others – love of software.