A Commencement Speech for Graduating 2013 CS Majors

Passion isn't just for romance novels.

Graduates, parents, guests, members of the faculty of <%= college.collegeName %>. I am honored today to have the opportunity to speak with you, as you move out of the cloistered environment of higher education, and into “the real world.” Except for those of you moving on to postgraduate degrees, of course. You will get to enjoy a life uncluttered by 401Ks and team building exercises for a few more blessed years.

But, for the rest of you, today marks your first step into a journey that will last the rest of your life, unless you’re able to cash in on your equity in some startup, in which case I’m sure you’ll be hearing from the
<%= college.collegeName %> alumni office before the check settles from your brokerage.

In my 35 years of experience in the software field, I’ve met a lot of developers, young and old. And the one thing that separated the truly successful ones from the crowd is passion. Now passion is an overused and abused term these days. Too often people take it to mean a passion for being successful, for achieving a personal goal in their life. 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.

Being passionate about software is critical to being successful, because the field is a constantly moving target. What will net you $130K today will be done by junior programmers in five years, and unless you’re constantly adding new tools to your belt, you’re going to find yourself priced out of the market. Many of the best projects I’ve ever worked on came to me because I had already gained the skill-set on my own. Play around with new technologies, contribute to open source projects, and you may find yourself with an opportunity to apply those skills on the job, and get them into your resume. You are rarely going to get an opportunity to have your current employer pay for you to learn things, so learn them on your own and be in a position to leverage the skills when a new project comes along. But if you have a passion for technology, you’ll already be doing it, and enjoying it without needing me to tell you to. That’s why passionate people have a leg up.

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. But don’t fall into the trap of trading long hours and happiness for the gold ring of equity. You are never going to be in better shape, less constrained by responsibilities, or have more energy than you will right now. Burning 80-hour weeks grinding code is a terrible waste of that gift. Most companies crash and burn, and that equity they gave you will be just toilet paper. It won’t pay for the time you sacrificed eating take-out pizza in front of a glowing tube rather than enjoying the best years of your life.

If you’re passionate, you’ll do the job you’re required to do, and more, but don’t let your employer abuse your enthusiasm. One of my tenets of life has always been that “a lack of planning on your part does not constitute an emergency on my part.” There will be times in your life when you have to step in and fix genuine, unforeseen emergencies, and burn the midnight oil. But if you’re being asked to do it regularly, just because your company didn’t allocate enough resources to see the job through, you’re being played for a patsy.

Consider the benefits of loyalty to your employer. More than just about any other industry, software suffers from a nomadic workforce, where spending five years at a single company is rare. Remember that in a good work environment, you make friends as well as money, and as much as you may say you will, you never keep in touch with them when you move on. But don’t be afraid to jump ship if you are truly unhappy where you are, either.

Pick the right technologies to learn. It’s easy to be seduced by the flavor of the month, and spend time learning something that will never gain significant traction. That isn’t to say that you shouldn’t learn something new if you’re genuinely interested in it, but don’t follow the herd just because everyone is talking about language X or framework Y. In fact, I’ve never been hurt, career-wise, by waiting a year or two to learn a technology, because that’s when a truly useful item starts to show up in job positions.

Realize that there is more than one path to the same solution. Everyone has their own likes and dislikes, and just because you find operating system Foo to be the most abysmal thing ever created doesn’t give you the right to call for Jihad against people who choose to use it. The Mac vs PC vs Linux wars have been needlessly bloody because of this kind of intolerance. After all, when you go down to <%= college.localHangout %>, you don’t decide that someone is your enemy for life because they like anchovies on their pizza.

At the same time, diversity for the sake of diversity benefits no one. Developers build off each other’s work, especially in the open source space, and every time you split the community with a new language or operating system or framework, the likelihood that you can reuse another developer’s work goes down.

Finally, remember that most of the time in your career, you will not be developing software for your own benefit. Whether it’s internally used code, or an end-user application, the quality and innovation of the work you do can directly affect the happiness of other people. 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. Right, <%= college.footballCoach %>?

So, class of 2013, go out and do great things. I’m sure you will, just as every graduating class has, from the ones that gave us Alan Turing and John McCarthy to the ones that gave us Linus Torvalds and Tim Berners-Lee, and beyond. You know, the passionate ones.

 

Related

Sign up for the O'Reilly Programming Newsletter to get weekly insight from industry insiders.
topic: Programming
  • Rick

    Awesome read and great advice!

  • cybrarian_ca

    Applicable to all fields, too. Whatever you do for a living, make sure you truly love it, because you’re going to spend a lot of time at it. If you don’t love it, that time can feel very, very long. If you love what you do, work’s pretty darn good most of the time. Even if you love it, there’ll be crummy days/weeks/whatever. But you can get through them a lot easier than if you hate what you do, and if you love what you do, you’re a lot more likely to succeed.

  • christhekeele
  • dan huynh

    The best article, I ever read in my life so far. Have been in programming business 10 years now + 5 years at university + 2 years in high school. My first PC is IBM Aptiva Windows 95. Software helps me a lot. It gives me money for living. I even learn about agriculture without attending a class.

  • bloggerkedar

    Nice article! Your passion usually comes from a humble and accurate understanding of yourself. This (understanding yourself) is not easy (for many, many of us, it’s not even possible). If everybody knew his/her “cup of tea”, the world would be a happier place. Why does finding one’s purpose in life turn out to be so hard for so many of us?