11 ms·
I see it this way: it's a choice between being mostly a craftsmen/engineer and being an applied scientist (that can also become a very good craftsmen/engineer).
by eranation 11y ago
I see it this way: it's a choice between being mostly a craftsmen/engineer and being an applied scientist (that can also become a very good craftsmen/engineer).
If you want to limit yourself to jobs that need only concrete skills, specific knowledge (e.g. knowing an API of some framework inside or out, or even knowing the nits and grits of a specific programming language) then a strong portfolio, and self learning might be enough. Although you will always be looked down upon by CS college grad peers once big O and Algorithms / data structures discussions are coming up. Even if you know it better than them! (They just assume that you don't as you don't have a degree)
But the bigger downside if you truly choose to be solely a craftsmen is that you always have to keep up or your are out. Technologies change, and if you don't change with them, you are obsolete. Even if you know HTML5, CSS, JavaScript and Rails to the level you memorized them and have built an impressive portfolio with 2000 stars in GitHub and 10 HN front page submissions. Ask yourself where is that guy who did this 10 years ago? I was one of those, I had Flash stuff that was the equivalent to the above. Got Macromedia site of the day, people in forums and myspace praised my work, I got my work presented in FlashForward conferences.
Does it worth anything now? zip, nada. think 10-15 years from now. will a starred github JQuery plugin you wrote get you that job when you are 35? 45? 55?
In the other hand, if you want transferable skills that are not framework related, you need to either self learn it, (which is hard to prove) or get a degree. the degree serves the following:
10% - the actual knowledge (you can get it anywhere), 40% - the self discipline structure that forces you to "self learn". think of it as a challenge, you pay tuition, they force you to stay focused and self learn by going to lectures / watching them online. 30% - is the easy verification that you know those things, instead of reading your portfolio and looking for usage of data structures / algorithms (e.g. anything that is not just "trade skills" or "craftsmanship", future employers can just see your degree, and assume (if you got a decent GPA and it's a decent university) that you got that at least covered.
the last 20% is as others said - soft skills implied from graduating college. employers know that you can handle life on your own, handle deadlines, handle working with a team, handle pressure, and do something that is not immediate gratification.
You can always choose to also be a craftsman after you get your degree, in practice, specific technical skills are very important and valuable for employers.
If you don't want to limit the jobs you can apply for, you need to prove 2 things -
1) that you have your CS basics (Algorithms, Data Structures etc) otherwise you rule out many interesting jobs (not just at Google / Facebook, but also many web startups that need more than just CRUD / web / mobile)
2) that you can actually code and use that knowledge in a specific tech stack.
You can prove #2 easily by going the portfolio way.
You make it harder to prove #1 by going the portfolio way, and make it easier by going the degree way.
p.s. you can get a CS top 10 US education for about $10,000
Step 1: get an accredited US CS undergrad degree online for $4,000 at http://uopeople.edu http://uopeople.edu
Step 2: apply to Georgia Tech Online Master of Science (degree is the same as on-campus degree, which is ranked #9 in the US for Graduate Computer Science degree) and pay only about $6,600 and you don't need a GRE! (as opposed to the on campus one). you just need to get B and above in 2 core courses to be fully admitted (not always easy, but doable)
The amount of jobs you can do after that grows largely. And I think it will be a little more interesting than just doing the same old CRUD / Mobile / UI until you retire, and having to learn every 10 years or so a whole new paradigm.
Just think of all the build tools, frameworks that there are out there, you are a Grunt + Node + Angular guru today, tomorrow they will look for a Gulp + TypeScript + React guru, and in 10 years OO GUI building will make a comeback and people will return to writing UI using Swing / MFC like structure as you can run it natively in a browser using ASM.js.
I'm doing web since 2000, and the amount of technology changes is overwhelming, what is hype today, might not be even in existence 10-15 years from now.
Programming principles, (OO, Functional, Reactive etc) and basic CS stuff (Algorithms, Data Structures) will likely stay here a little longer. Although you always have to keep up there too, the pace is though, a little slower.