November 12th, 2010
Last week, I got this question:
I know you’ve been involved with the web for a long time, so I wanted to ask you a simple question: in your opinion, how useful is a computer science degree for a career in web development? I’m a second year CS major, and considering dropping out because I don’t see the value in it anymore. It’s just taking away my time from learning and doing what I love most–developing web apps. Will dropping out hurt me later on?
After thinking about it, I crafted this response:
It’s an interesting question.
I think the answer depends on what you want your long-term career prospects to be.
If you’re looking for immediate payoffs, then quitting school and heading straight into web-app development could work well. Very little of what you learn in school will contribute to that effort more than just getting experience being out there, solving interesting problems with innovative designs.
However, the computer field changes quickly. New languages, new tools, and new technologies emerge every day. These introduce real challenges for the practicing developer. It can be really hard to keep up, especially if you don’t have the foundations to build on.
Remember, “web development” didn’t even exist 8 years ago and, even from the landscape of 4 years ago, everything is completely different. There was no cloud. There was no Ruby on Rails frameworks. Virtualized systems didn’t play a role. CSS3 and the miracles of the HTML Canvas tag weren’t anywhere to be seen. There was no mobile web, per se. What will be different 8 years from now? Everything.
If you’re at a good CS program, it won’t help you be a better web app developer today. It’ll help you be a better web app developer later.
Take something simple as graph theory — something usually not taught in CS programs until the third or fourth year. This is a completely abstract mathematical idea, which, when presented in class, seems to have no real-world applications. Except in high speed networks, where the base math and algorithms help you identify the best way to route messages through the net. Or in social computing, where you can calculate the relationships between people and objects (such as users & pictures on flickr), to create new features (like the “Hey, this person in our net is connected to all your friends, but not you. Do you know them? Want to connect?” feature of Facebook, Flickr, Gowalla, and every other new social app).
Sounds like you need to decide if you’re chomping at the bit for getting serious development experience under your belt or if you want to make sure you’re prepared for the new stuff coming in the next 20-30 years, ready to tackle what those new innovations are going to bring us.
Hope that helps. Let me know what you decide.
Which generated this response:
But now I realize that a CS degree will help me build a strong foundation for a career that will prepare me for the many challenges and changes in the near future. I’m definitely staying in school to get my CS degree. And let me tell you, I am more motivated than ever to master my discrete math class and all the other theoretical classes that will follow.
Thanks again, Jared, for your words of wisdom. I respect you deeply and feel extremely honored to receive words of guidance from you.
Apparently, I wasn’t the only one to get the query. Here’s Eric Meyer’s response.Tweet