

Ask HN: Would an apprenticeship prepare you better than college? - stretchwithme

In the old days, professions were taught through apprenticeships.  A carpenter would teach a young person the craft in exchange for the labor of the person for a mutually agreed upon period of time.  And completing this arrangement would give potential customers some assurance of competence.<p>Would this work for software development and how do you think it would compare versus the college experience?
======
CWuestefeld
Software development is not the same as computer science. Despite the fact
that many (most?) of us have CS degrees, I claim that it does a poor job of
preparing for a careen in software development.

As the name implies, CS is a _science_. Studying it, you're taught a lot of
theory, with an aim toward doing what others studying the sciences do: become
a researcher or a professor.

A career in software development is actually an engineering job. We need to
know about design and documentation, communicating with stakeholders by
gathering requirements and writing specs, etc. This is a giant step away from
what CS teaches us.

I'd estimate that what I learned as a CS major in college (in '89) taught me
maybe 50% of what I needed to know in my first job. And conversely, half of
what it did teach me went unused in my job.

So I think that to compete with the traditional path of education to a
software development career, you don't have a very high bar to claim success.
This may be why so many people I know in the field have completely non-
technical degrees. Some of the best software developers I've worked with have
been musicians.

------
frossie
Well, I have had everything from school leavers to PhDs working for me, and I
can tell you that a college degree is not _necessary_ to become a good
programmer _if_ you are adequately mentored by the right person. So my
personal answer to your question is yes, that can work.

However, it doesn't matter what I think - it matters what everybody else
thinks. And the world values the right kind of degree. I had the rather
amusing experience recently of being screened out of a job application
specifically for lacking a computer science degree. Apparently 15 years of
software engineering and management not to mention a degree and research in
astrophysics was not a good enough substitute :-)

So I personally would recommend to a talented youngster to get a CompSci
degree regardless.

------
wmf
There's a lot of basic CS knowledge that seems like it would be better taught
in college; I'm mentoring a younger employee right now and I'm glad I don't
have to teach him data structures and state machines — that would be a waste
of my time IMO. For software engineering, apprenticeship may be a better path
(which you can start on during college via internships BTW).

I think a lot of people are framing this topic as "4 years of college vs. 4
years of something else" when the real answer is more likely to be college
_plus_ something else. Unfortunately, there's a strong economic incentive not
to talk about such scenarios because they make a software engineering
education sound more expensive.

