If he still has an opportunity to go to MIT, he should do that. It's great that he was able to get into the industry, but not many people have the opportunity to get an education at MIT. He will get to learn a lot of topics(Physics, EE, theoretical CS) that he wouldn't get exposed to in industry. He will probably make some of his lifetime friends there too. This network will be great for his social and professional life.
... and if he doesn't like it, he can go back and get another software developer job.
I'd say it depends on what the costs are. If he has to rack up a TON of student loan debt it may not make much sense. You can make friends and social connections outside of school if you create the environment to do that. Its a lot easier in school but to avoid the traps of student loan debt its probably better to continue making/creating software if thats the end goal.
You don't have to rack up student loan debt at MIT or any of the other elite colleges in America. If your family can't afford it then you'll get a ton of grants from their endowments (and work study to supplement). It's the next level down in colleges, especially at liberal arts schools, where students get stuck with the bills.
That your parents could theoretically afford to pay for college doesn't mean that they will pay for it. The usual rule is that parents are not obligated to pay anything for their children over the age of 18. Only in some divorce cases is the situation otherwise. Before you mention emancipation or a dependency override, check the requirements, they are quite difficult.
That may be the case now, but I graduated from Penn in 2006, and it was different story then (until about 2008 I think, with Princeton being the first to break the trend). Before that, a portion of your financial aid would be a loan directly from the school. My loan was subsequently sold to Citibank.
I would wager that MIT has some of the best return on capital in the world. MIT is an amazing school, has an amazing reputation, and getting an engineering degree from MIT will likely be worth it. Like was already said, the network and life experience are really amazing. I could only imagine the kind of people one meets at MIT. Interesting and intelligent people with similar interests.
I went to a coding school (I also attended university) and I would say that when you are young, college is an amazing experience where you learn a lot about life.
I think someone will eventually crack the code by getting a school together for 2 years with >500 students and partner with a university so that students can get social activities in. This, in my opinion, would be the absolute best scenario.
A college experience, amazing education, and a long enough time horizon to learn and build interesting things.
Agreed. One day app programming will get old, and if you want to do something different, and cool, especially if it involves mathematics or other difficult problems, that MIT degree is probably worth its weight in gold. Just getting to study with the best minds in many fields should be worth it...I guess I'm rather perplexed why anyone would turn down a chance to go study there as an undergraduate.
People confuse entry level programming with true computer science. I'm sorry, but there is no way a few months at some "hacker school" will replace a four year degree heavy in mathematics, theory and design.
Schools like these are producing mediocre coders, at best. Which is fine if you just want to write a few small apps. But you REALLY need that CS experience and education to effectively work on large scale engineered systems. There is no way around it.
On a side note, I also got a CS degree debt free. I served my country to get it. People want so much for nothing - there are no true shortcuts in life.
FWIW, I'd self-assess at top 20% of my CS class (WashU), and I can say without reservation that as of graduation day it would have been rank insanity to have me coding on a production system. There are occasional times when the book learning comes in handy, but CS degrees are, in my experience, neither necessary nor sufficient to develop ability to ship working software.
Yes, to ship working software you need nothing - high schoolers do it. But to MAINTAIN and ENGINEER an efficient, secure software system (especially for enterprise environments), you need CS fundamentals. These CAN be learned on the job over several years of work, but no 6 week school can teach you them overnight.
I might be misreading this, but I read patio11's comment as "Even if you have CS fundamentals, you are still woefully unqualified to be working on production software. The ability to MAINTAIN and ENGINEER an efficient, secure system HAS TO BE learned on the job over several years of work."
This squares with my experience as well. I have a CS degree from a good school, but switched into it in my last semester after self-teaching myself much of the content while avoiding my physics homework. My first job out of college had many coworkers who had graduated from MIT; none of us knew what we were doing, as far as creating robust maintainable systems, and we needed senior engineers who had actually built stuff (regardless of where they went to school) for that. I've since worked at Google, founded a couple startups, written about a dozen programs from scratch (some of which got used by millions of people)...and found that while I use my CS fundamentals occasionally, the bulk of the know-how on how to engineer a maintainable system comes from actually doing it, over and over again, and dealing with the consequences of my missteps.
Actually, CS degrees have little to do with programming skill. I work with hacker school graduates that write cleaner more maintainable code faster than others with CS degrees and 20 years of experience.
EDIT: Actually, the fact that you mention "large scale engineered systems" is interesting. Generally, I have found large, monolithic, tightly coupled systems to be very unmaintainable. "Building a small app" (or a bunch of them), along with in-house libraries tends to be the way to go if you want maintainability. "Building a large scale engineered system" might actually be a red flag when it comes to code reusability and quality.
I think you haven't worked much in enterprise environments. You confuse "monolithic" with engineering. Nowhere does an engineered system have to be "tightly coupled" ... I think you could benefit from some of that CS education to see what I mean.
You're confusing "engineered," as in orderly, organized and planned according to specifications with "legacy" systems. A little more time in industry will show the difference.
I've met individuals with one year experience in doing something the wrong way, 20 times. I think the CS degree will prepare the right person to be a better programmer while letting the wrong person slide through. So it may be that the hacker school doesn't prepare the right person as well, but works far better at quickly culling the wrong person, meaning they would be the safer choice to hire from.
I've met these hacker school/self taught types. One of them worked as a programmer for 20 years and didn't know what was recursion until about a year ago. He gets away with it because in programming there are many ways to solve a problem. Usually you only need to solve the problem rather then find the best way to do it.
A CS graduate will know about a 50 ways to solve a problem and will have the ability to find the most optimal way to do it. He'd probably take twice as long as the hacker school graduate who'd solve the problem using the one canned method he was taught in hacker school.
> He gets away with it because in programming there are many ways to solve a problem. Usually you only need to solve the problem rather then find the best way to do it.
"Getting away with it" == using another solution.
> A CS graduate will know about a 50 ways to solve a problem and will have the ability to find the most optimal way to do it. He'd probably take twice as long as the hacker school graduate who'd solve the problem using the one canned method he was taught in hacker school.
Disagree. I rarely find someone with a degree to be substantially better than someone self-taught on the job. I've even seen developers with degrees do far worse.
Not knowing recursion for 20 years is more "getting away with it" then just simply "using another solution"
>Disagree. I rarely find someone with a degree to be substantially better than someone self-taught on the job. I've even seen developers with degrees do far worse.
Sure in jobs where the most optimal solution doesn't matter there is no correlation with performance and degrees. This is probably the case for many jobs. However for a job where it does matter, say the programmers behind the V8 engine or people implementing Ruby and the python features, a degree or knowledge about theory makes a huge difference.
> Sure in jobs where the most optimal solution doesn't matter there is no correlation with performance and degrees. This is probably the case for many jobs. However for a job where it does matter, say the programmers behind the V8 engine or people implementing Ruby and the python features, a degree or knowledge about theory makes a huge difference.
Its disingenuous to think everyone needs to obtain that level of knowledge, at substantial cost, when only a few are going to use that knowledge in the scenarios you described. Not everyone needs to know how to create programming language or write a complier.
We should not look down on those who are bootstrapping themselves in the industry without the exorbitant costs of a CS degree lest we retreat to the mindset of ancient guilds.
>Its disingenuous to think everyone needs to obtain that level of knowledge, at substantial cost, when only a few are going to use that knowledge in the scenarios you described. Not everyone needs to know how to create programming language or write a complier.
This knowledge is usually what separates someone with a degree and someone without one.
I don't look down on someone without a degree, but I have no doubt in my mind that such a person will have a higher chance of being less capable of implementing high concept applications like a ray tracer, a 3D engine, search algorithm, operating system, or a machine learning system, ... etc. These jobs are not so obscure that only a 'few' people need to know it, as you seem to indicate.
In fact there's a popular new buzz word in CS called "Big Data" where those involved need a huge amount of theoretical knowledge that cannot be gained from simply attending a hacker school.
> Not knowing recursion for 20 years is more "getting away with it" then just simply "using another solution"
Someone define recursion here... are we saying this guy didn't know what a recursive loop was for 20 years, or are you using "recursion" in some other way?
edit what i mean is this: did the guy have a hard time defining recursion in terms of CS, or could he flat out not demonstrate it with some pseudo code?
Recursion isn't very good in Python this is true. I'm not going to judge the guy's skills since I don't know him, but that seems to be a common pitfall that a lot of developers I know find themselves in - they learn a single language or framework and never break out of it.
That is your social proof. Try passing one of these hacker school grads off in an engineered environment at Google scale - they fall apart quickly.
You proved my point, though. Programming is only one small aspect of computer science. Engineering, mathematics and theory is the biggest part which you can't get at a 6 week school.
I worked at Google, in Search. Some of my best co-workers studied Film Studies, Philosophy, never went to college, or toured with a punk rock band in their early 20s.
A CS degree is one way to learn about algorithms and core CS concepts. It is not the only way.
> Engineering, mathematics and theory is the biggest part which you can't get at a 6 week school
Agreed. Sadly lots of people are getting sucked into the start up tech bubble. Sure you can get a really high paying tech job on limited knowledge as a web developer at some shitty start up, but it might be gone tomorrow and you'll find yourself SOL.
Having gone the no CS degree route myself I can say that I find myself in a constant loop where I have to prove my abilities even with the recommendation of former bosses and a nice resume.
Absolutely, if your job is to write search algorithms you definitely need a CS degree (and it'd be great if you have a math degree too). But I'm talking about the day to day app dev, where craftmanship matters a lot more than algorithms.
> On a side note, I also got a CS degree debt free. I served my country to get it. People want so much for nothing - there are no true shortcuts in life.
I'd argue that you paid a higher debt in some ways. Glad to see that it paid off though.
I will add that the experience and education can be gained outside of a classroom. I managed to teach myself everything I know and have been a valuable employee at various large companies in a major US city and I never attended school (see previous comments).
In the end though what I really did was get lucky that I was born a fast learner.
I want to start by thanking you for your service to our country. But knowing that, your elitism in the rest of your comment is even more confusing.
Not everyone is going to work on large scale engineered systems. Even companies with those systems are gonna need cheaper mediocre coders to code the app that uses the engineered system as a backbone. So what if a few months at hacker school won't replace a four year degree in CS. Take as much or as little schooling as you want, as long as employers are willing to pay for your skills.
This is crap. Yes, CS has important theory you won't learn about in "hacker school", but it's not like the (ridiculously expensive) education itself is necessary. Everything you need is on wikipedia and stackoverflow.
In theory, you don't need college to learn much of anything. In practice, few people are going to correctly teach themselves discrete mathematics within a reasonable timeframe.
A graded evaluation is valuable, agreed. I submit that instructors, peers, and an instructional environment are also of value in aiding the learning process.
The degree is evidence of a graded evaluation, which is a proxy for education. Despite some propaganda to the contrary, it is not a zero-correlation proxy.
Also, I don't know about you, but I went to college for an education. Which I received.
> On a side note, I also got a CS degree debt free. I served my country to get it. People want so much for nothing - there are no true shortcuts in life.
And if there were, I'll bet people like you would feel pretty cheated.
This is an easily overlooked point, that's about how much debt I had when I dropped out of college to go into software development full time. That said I would have probably picked Make School over college if given the option....
He had to pay 25% of 2 years * $90k for this. This is a terrible trade off. MIT is incredibly generous with grants and work study programs. My girlfriend's family ended up paying ~$10k a year to go to one of the best schools in the world. And when you graduate you're looking at a job well north of six figures.
He should still go to college or budget his time in such a way that he is able to study the things he would learn in college.
This is coming from someone who has been in the industry for 12 years. I was homeschooled my entire life (until attending and dropping out of a community college). I thought that meant I was using correspondence courses but recently discovered from my mother that she just purchased text books and used those to educate me (save for 1 year during "grade school" and all of high school which was correspondence).
As I said, I've been in the industry for 12 years and to this day I feel like I'm judged harsher in interviews.
Also I'm not bragging about the homeschooling. I'm pretty ashamed of it.
I obtained my B.S. and M.Eng in Computer Engineering & Computer Science also debt-free, and landed a 100k+ job straight out of college.
I had to work my butt off with a few part-time gigs, had to do some smart saving, and cost managemen. I was able to do it without locking myself into anyone who wanted a cut of my pie.
It's not impossible, but you have to be willing to commit to it.
I know more about computers than most guys I know with a CS degree. Then again I know physicists (Google has a huge number of them) that know more about computers than I will ever learn.
I don't think that a CS degree is all that important. It's the self-drive that makes the difference IMHO. Then of course, having a background helps a lot, but in todays world there is little that you can't learn by yourself given the right amount of (free) time and effort.
As someone who dropped out of college to go into software development full time [0] I can relate quite a bit to this article. After graduating HS I went to college, that's just "what you did", I never considered another path until around my second year in college and even then didn't do anything until spring break my junior year when I worked a full 40hr week and loved it, my stress levels plummeted and I decided "Why wait?" I talked to my parents and my boss then went to the guidance office and dropped out.
I'm still young (24) so I'm not going to say "Everything worked out perfectly" because I can't know that yet but so far it has. After I had 2 companies under my belt I was able to go just about wherever I wanted (That is anywhere that my skill set lined up with what they were looking for) because I've found employers care a lot more about what you can do/what you have done than a piece of paper from a university. I'm not ready to write off college completely but in it's current state I don't see it lasting much longer. The college bubble will burst if they don't start making changes. The world has changed but colleges have not, they no longer prepare student for the real world (if they ever did in the first place) and they don't guarantee a job.
I love my job and what I do. I have no plans on finishing my college education, I might take community classes at some point but really I don't see the point. It doesn't affect me in my job searches and that money could be better used to pay off my college loans. I have older people tell me all the time that I should finish college but I think this is more because they grew up in a time when that worked not because they are actually right that I'll need it in the future. IMHO a degree only helps for your first-second job (if that) and after that no one cares.
I think another important point is a number of people I am friends with or have talked with seem to think the end of college marks the end of learning. That couldn't be further from the truth, I learn every day and spend a vast majority of my free time working to get better at what I know and/or pick up new languages/skills. I didn't drop out to stop learning, I dropped out to start learning things that mattered. If I ever went back to school I don't know if I would even go for my CS degree but instead take classes on subjects that are not as easy (for me) to learn online or that I might just like the classroom atmosphere for like writing or history maybe.
... and if he doesn't like it, he can go back and get another software developer job.