Graduated with a Major in Startups
zachholman.com
zachholman.com
- Facebook's PHP compiler.
- VMWare's ESX network kernel.
- iPhone hardware and firmware.
- Qualcomm's Linux distribution.
- Citadel's trading algorithms and execution platforms.
I constantly draw on my coursework in compilers, programming languages, and OS in my work on the Palantir Finance platform.
CMU's CS program prepares you work on problems that are truly technically challenging -- problems that require deep technical knowledge and that often take a large investment to implement. Small startups rarely have the staff and time horizon to invest in creating systems that require technical skills beyond the ability to use an API. So if you work at a small startup that doesn't have the capacity to invest in custom low-level solutions, don't be surprised if your CS skills are not utilized.
There's no doubt that CMU prepares students for the corporate world. In fact some programs are expressly tuned for this.
But this is exactly what the market demands, so why are we surprised? Industry wants employees that integrate well and work in teams. Students want to be hired by industry. How can we be surprised that the curriculum is tuned for turning out cogs for corporate machines?
The demand just doesn't exist for startup education. It's the nature of the beast. How many hardcore entrepreneurs do you know would have been content to take classes on it and be told how to do it? That's the exact opposite of their natural character. :-)
I also adore CMU because of it's absolute fundamentals teaching that allowed me to teach myself web development in such a short amount of time after leaving nuclear engineering.
The one thing CMU taught me was how to work and learn anything. That's what I do and being a startup guy was a good fit for completely unrelated reasons (mainly my problems with authority).
In my undergrad course load, I had very little time to work on the projects I already had, let alone starting something cool on my own. However, that course load was so much tougher then normal employment life, that once I graduated, I could learn so much more while being very underemployed. This underemployment led me to the one place where I could learn everyday and solve cool problems => startups
my own experience was more along the lines of feeling a disconnect between classwork and how it applied to the real world.
> But this is exactly what the market demands, so why are we surprised?
Well, CS is _supposed_ to be a theoretical discipline. It's supposed to be basically math. We're supposed to be discovering the nature of computation, not having only one optional upper-level class on it.
Instead we get Java schools. It sucks.
Furthermore, college doesn't even make for a good vocational experience! You know how many times I heard 'VCS'? Zero. makfiles? Twice. In my web programming class, I was taught Java applets and spaghetti PHP. Software Engineering teaches waterfall, Java beans, and UML.
/rant off.
At CMU you are free to do what you want with your spare time. There doesn't necessarily need to be a class for teaching start-ups. A class can simulate anything (DDOS attacks, power outages), but whether or not that simulation is a reflection of reality once the student leaves the classroom remains to be seen. Furthermore, if you need a class to learn something, then there are many hard lessons waiting for you in life.
The reason you get a CS degree at CMU is to become a better problem solver. It's a very difficult course of study. When I was there about 1 in 4 students dropped out of the SCS program. If you make it through the program, it is a badge of dedication, and you are definitely transformed into a problem solver. The environment in which you use these problem solving skills - at a start-up or a large corporation - should never be an issue, nor should it require explicit handling.
Often when I see a start-up populated with dropouts I'll think "They couldn't even make a 4-year commitment? Does that mean they'll only stick around here for 2 years before they split?" And that is often the case. The infatuation with dropping out and start-up "culture" is purely romantic.
On top of that, I'm not suggesting entrepreneurs would love to take a class and enjoy coloring in the lines, so to speak. The imaginary classes I suggested were all super open-ended, with little to no structure or curriculum. I think that's the best way to teach that subset of the population.
I'm just wondering that if that curriculum were offered, would your target audience even know to enroll?
Do the people who would enjoy those courses know when they're starting out that it will be fun and useful for them? Or is that something you have to find out for yourself, through your own experimentation?
Also, being a hardcore entrepreneur does not mean you completely reject authority and advice. It all depends on the structure of the course. You could implement self determined courses using professors in the position as board advisors and run semester long projects.
This would compliment the natural character of the entrepreneur.
You can't from top down try to make someone do a startup.
But what you can do is create an environment which has the culture and attitude that promotes it.
That said, I think telling someone or a group to go and come up with a good business idea - then helping it develop and become viable, is perhaps the best way to promote it in a school setting.
With that in mind, and having written code for both startups and large companies, I don't think that CS programs are generally all that much like the real world in either situation (unless of course you're talking about somewhere like PARC). You're absolutely correct that learning to "build cool stuff" is pretty important, but I think it's equally important for larger companies, so I'd say that's more of criticism of CS in general than a failure to prepare people for startups.
Most educational institutions prepare students for the average life style.
However, to go beyond just comp sci curriculum most businesses classes don't focus on the true skills that matter in running and starting a business. They, just like in computer science, focus on what the majority of the population will probably be doing after graduation.
When I decided that I wanted to do a startup and not join the masses in the corporate life, I did not have much experience or course material to leverage.
These institutions should try and find a balance between offering courses for both types of peoples. Even those going into the corporate world could learn and use a bunch of the skills entrepreneurs use everyday. Most executive leaders of these big companies have the same qualities as entrepreneurs.
I'm pretty comfortable with web development using Rails, and other than an introductory database course, everything I know about programming I learned outside of the classroom. I've put that experience to good use, as I've worked on a startup for about 1.5 years.
Despite some pretty notable startups coming from Penn State (eg, Weebly), there is not much of a startup culture here. The School of Information Sciences and Technology seems mostly interested in landing jobs for its students at companies like Boeing, Ernst and Young, and Lockheed. There's nothing wrong with that, but I'd like to see faculty and the administration take more interest in startups.
Where I've been learning comp sci (Pomona & Harvey Mudd) the teachers' interest in CS is more academic and less practical. It's a reflection of what they're interested in - they probably turned down jobs in the industry to work in academia and teach students.
Almost all of the marketable skills I've learned have been self-taught outside of class.
I got an offer from his company, but turned it down because I didn't want to work with people who were combative instead of cooperative.