What My Commencement Speech Would Have Been

I have never been asked to talk at a commencement event. I’m not surprised — I’m not nearly famous enough. However, I’m pretty sure that after reading this blog post, nobody will make the mistake of inviting me. Here, I’ll be talking about a career as a software engineer, since this is the only career I can speak confidently about.

Anyone who goes to college, especially a good college, for a CS degree is making a huge mistake. Well, almost anyone. If you want to be an academic researcher in CS, this might be the right program for you. However, if you want a career as a software engineer, that was not the optimal to take. Sure, a degree is fine — but you can get one just as good from a minor college, and do a lot better for yourself.

But first, let me digress a bit from what you should have done better, and tell you what your college should have done better. Instead of teaching you for 9 months out of the year, and having you intern for three, it should have been the reverse. When you started, they should have given you a three months crash course about programming — C, C++, Python and Java would have been my choices. In three months, 40 hours per week, you can learn the basics of programming in each of those. For the end, you would write a basic web server which calls out to C for low-level string crunching. Then, your college would help you intern for some “code monkey” position — writing code for a large hairy web application written in a mixture of five languages. I’m sure many companies would love to hire a minimum wage employee to fix those bugs. Those would not be the most pleasant of nine months, but at the end of those you will have learned what bug tracking systems are, what source control is, how to work with co-workers and other important life skills.

For the next three months, you would have studied networking and operating system. You would finish with writing a device driver and a TCP stack. With these skills, and one internship already under your belt, you would be again farmed out for internship at one of the big-but-interesting companies — Cisco, Oracle and the like. There you would work as a temporary employee on one of the products that they are bringing to market. You would learn how to delve into code bases, how to ask the right questions and how to take initiative.

The next-to-last three months would be devoted to theory — finite automata and Turing machines, statistics, calculus and linear algebra. The nine months after that you would, ideally, find an internship in something that interests you.

The senior year (well, three months) you would spend on electives — technical writing, public speaking, advanced math, security, genetics or multiple other topics would be provided for you to specialize in. With a year’s worth of studies and more than two years’ worth of work experience, you will be snatched up by many employers.

However, your college has been optimized to train academic researchers, not to provide the software industry with ready valuable employees. So what can one person, without ability to change the system, do?

Spend the first two years getting a CS associate degree at a no-name college. Do the minimum work to get a half-reasonable GPA, and in the rest of the time, choose a well-known open source projects, and start contributing to it. Most reasonable projects have public bug lists — just start fixing bugs. It will be hard, at first, but keep at it. Two years of this should be enough for you to be a well-recognized contributor.

After that, get into a CS program at any local college that will accept you. Continue contributing on your open source project of choice, but now start answering questions related to it on Stack Overflow, and also start your own projects. What projects? Think for five minutes (on the clock!) about 20 new ways to improve your life using software, and choose the 3 most appealing. Publish them with a reasonable license (say, BSD Lite) on github. Make sure to try for interesting internships every summer.


One Response to What My Commencement Speech Would Have Been

  1. Here’s my question: Are you giving this speech in a hypothetical Israel, or a hypothetical US?

    Because if you’re talking about the US, you’re missing something major about the US educational system. What you’re describing is a way to organize a trade school for computer science. And, fair enough–the only sort of trade school for computer science that exists in the US for computer science (as far as getting diplomas that people in US care about) is going to college.

    However, this is something of an accident of history–the liberal arts model colleges in the US, which are most of them, are there to teach the liberal arts, as well as a particular degree course; a CS major in a randomly selected good US college will have taken several semesters of literature, history, science (some of biology, chemistry, physics–that sort of thing) and depending on the program, probably something like art history, or music, or physical education, and so on. Most of which aren’t going to be as compressible into periods of learning and periods of learning by doing.

    Whether it’s worth getting a liberal arts education is beyond the scope of this comment, but even if the US as a whole doesn’t believe that it’s worth spending large amounts of money and time doing, it acts as though it believes that; getting rid of the lit. requirement would be a more fundamental change than reducing classroom time to two months a year.

    If you’re talking about Israel, the liberal arts aspect of a first degree is considerably reduced. In addition, many of the social functions that college serves (first time away from home for many students, first time allowed to form connections with peers outside of adult supervision, etc.) are done by the army. Which suggests a refinement to your plan.

    At the moment, it’s possible for the bottom half of a class to graduate with a degree. It’s true that plenty of those people don’t get jobs in their field right away, but a lot of them just need to grow up and buckle down before they’re actually capable of doing their jobs.

    In your system, students who come out of those first three months and are either bad enough at programming or just bad enough employees to not be immediately capable of holding down a job in the field are basically washed out of computer science.

    It could be that having the army or national service in general be the place where they’re doing their internship would help with that. Those organizations are less inclined towards firing people whose work doesn’t measure up, and have means of instilling discipline in problem employees that the private sector does not.

    So, seems like a plan; good luck getting it up and running.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: