I once took a junior-level course in college about Metal-Oxide-Semiconductor Field-Effect Transistors. As part of the electrical engineering cirriculum, it was an important course. I had no interest whatsoever in the course, and to this day I’m still not sure what it was about. For example, I once showed up to class (I suspect my attendance was around or below 50%) to turn in a homework assignment and discovered that a midterm was scheduled for that day. I used the homework as the single sheet of notes we were allowed. I similarly neglected many of the courses I took.
I would like to describe here why I did that, my expectations about the future (due to that behavior), and what the future actually brought.
Some facts: In eight years of college, I ended up with two undergraduate degrees (music and computer engineering) and one Master’s degree (electrical engineering). In the six years of undergrad, I took some 220 credits (averaging 18 per semester). My GPA was around a 3.2 the entire time. During this time, I also wrote a lot of code. I worked on a game, a startup, and consulted, some OpenBSD ports.
I found that my grades were not related to the number of credits I was taking. Study time was not the limiting factor, interest was. What I wanted to do was program, and studying was a distraction. Programming is what I wanted to do, so I did it. Uninteresting classes just got in the way of writing software. I rarely studied for those classes (I don’t recall ever once reading any textbook unless it was to solve a specific homework problem), and passed with usually a C. Interesting classes were fun, so I worked on them (the fun kind of work) and generally got As or Bs. This was my standard: I’ll only work if I like it.
At the time I felt that I was making mistakes and slacking off. I thought: instead of programming I should be studying for those other classes. I felt like I was messing myself up as an engineer since I was completely ignoring half of my major courses. For example, after 6 years of electrical engineering courses, I still didn’t know what an op-amp was, even though I had studied them in at least 4 courses. I was convinced that I was making bad choices. I was paying to go to school and not study. I was spending my time doing something that I didn’t plan on pursuing as a career (I wanted to design processors for Intel or AMD, not program full-time).
But even given this internal doubt, I still couldn’t bring myself to change. I just didn’t care about some of my courses, and I enjoyed making software so much that I wasn’t going to stop working on it to study.
While finishing up my Master’s thesis, I had a great time writing the software to collect and process my lab data, and was totally bored by the actual thesis. It was sometime around there that I realized: I’m a software engineer, not an electrical engineer. All of my degrees pointed to EE, but my background, skills, and experience were strongly in the software camp.
Today I have a job at Stack Overflow. Working here has been a dream for around 10 years. I consider myself supremely lucky to have met this major, personal goal. Now, I believe that I could not have gotten this job unless I pursued programming skills to the detriment of college achievement. If I had spent my time studying and working on those classes that I didn’t enjoy, I would not have had the time to work on software. I do not think I would have my current job if I had studied more instead of programming. I’m convinced that I’m happier and in a better job because of poor college performance than if I had excelled at college. I suspect in that case I would have a less interesting job doing something I’m less excited about.
This is what worked for me. I wrote this blog post not to encourage students to slack off their course work, but to offer a real story. I was disappointed in myself for many years until my current job. I think there are some current students who have a similar outlook on their college career, and I wanted to offer this as a potential future.