
A CS degree is better than teaching yourself how to code? - techtor
https://zeroequalsfalse.com/posts/cs-degree-over-self-study/
======
greggman2
Teaching yourself to code while getting a CS degree is best IMO.

Just teaching yourself you'll likely miss lots of topics and not challenge
yourself as much.

Conversely I've met plenty of students that don't really care about the topic
and are just taking the class to get a job.

So do both! Take the class and teach yourself. In other words pursue your
hobbies and use code where those hobbies match. Learn the things you need to
achieve your hobby goals. All while taking CS classes and as much as possible
making those two things overlap

~~~
newswasboring
Is it really possible to apply CS skills to all hobbies? If yes then how do
you apply CS to hobbies like woodworking or crochet? The only thing I can
think of is a retail site, but then again why wouldn't you just use something
like tindie?

Or should people who don't do coding related hobbies not do CS? Which is a
special requirement just for this major. People in civil or biomedical
engineering don't apply their majors to their hobbies.

~~~
SolaceQuantum
Crochet definitely has software opportunities. I know someone building their
own custom pattern generator for their own purposes, and also there are plenty
of crochet stitches that haven't yet been known to be capable of being done by
a machine!

I wouldn't be surprised if you could apply modeling and wood quality
simulations into a software program to help your woodworking, too.

My hobby is fiction writing. But hey, Scrivener exists for god's sake.

------
vbtemp
I work with a team of people who mostly have "Software Engineering" degrees. I
am one of the few with CS.

In short: _IN GENERAL_ \- Those with SE degrees (or other non-CS degree, or no
degree) can be excellent developers (good code style, good unit test coverage,
aggressive PR reviewers, etc).

However, the art of computer programming - or computer system design -- is
often in formally defining the problem at hand using computational structures
(such as graphs), understanding the properties of that model, and creating a
new algorithm over that model to solve it. Then developing a software system
to mirror the properties of that formal system you designed.

Those people who did not spend dozens-to-hundreds of hours agonizing over
their coursework in algorithms, abstract algebra, linear algebra, "foundations
of computing" (i.e., computational complexity theory, computational theory,
language hierarchies, etc) I found can lack this critical aspect of system
design. Instead, they design systems that lack unity and are often simply a
collection of routines to handle various inputs - rather than having the
knowledge to think "Hm, maybe this whole thing I'm working on is a special
case of a well-studied problem". What this means practically is that there is
often a simpler, better-defined, and more testable solution lurking behind the
veil of ignorance.

Sure, there are many many teams and projects for which the scale or complexity
are not sufficient to warrant some kind of formal analysis and modeling -- but
many do.

~~~
gamesbrainiac
I have to be honest with you, I find your experience to be contrary to mine. I
went to university to get a degree in Computer Science, but I dropped out
because the course work was full of stuff that did not have anything to do
with computer science. Furthermore, you will find that in many countries, a
Computer Science degree is the same as a Software Engineering degree.

I have met many computer science majors who are incapable of writing software
to save their lives, let alone design complex systems.

I also think that if you get hands on experience first, you learn to
appreciate the science later on and therefore learn it with more gusto.

~~~
scaryclam
I have a CS degree and my university also provided a SE degree. The first
years, we all studied together. Only in the final year did we study courses
that deviated (some were still shared). The final year was about focusing on
either the science or the engineering disciples. I felt like it worked really
well. The SE's left with a really good knowledge of computational science,
while also learning how to engineer solutions. The CS students got some
experience in engineering, without it being the main focus.

~~~
gamesbrainiac
I think that is a really nice way of doing it. I honestly, don't know what you
would do as a capstone project for Computer Science though; perhaps design a
compiler or a language?

------
spoondan
This is a very strange article and premise to me. A university education is
not vocational training. A CS education includes courses in programming, but
learning to program—indeed, learning CS—is only a part of the education you
are signing up for at university.

I arrived at university having already worked for a couple years in open
source and a bit of contracting. I worked as a professional programmer
throughout my undergraduate degree. I was bored by most of the introductory
programming courses. The liberal arts, being around other young adults, the
theoretical CS parts, the electrical engineering bits, and some of the project
work were the only valuable parts, but that was plenty of value to me.

Going to university to learn to program is like going to university to learn
refrigerator repair or how to play the guitar. Vocational and on-the-job
training will go deeper into the craft. If you only want vocational training,
go to a vocational school, get a private teacher, or teach yourself. Don’t go
to university just to learn a skill. You certainly can, but it’s not an
efficient way to do that. People study music in university to become better
rounded musicians, not to learn an instrument. Same with CS.

~~~
barry-cotter
> This is a very strange article and premise to me. A university education is
> not vocational training.

I know right? Stupid plebeians expecting to get something that will help them
earn a living out of spending three or four years learning something and
foregoing the earnings they could have made in that time. If you don’t know
that university is for signaling your social class rather than learning skills
that will be useful in earning a living why are you even there?

At least the nerds who think university is about learning don’t have the stink
of trade about them.

~~~
growse
The purpose of a university is research. They teach undergraduate courses so
they can get more researchers to further academia. The university isn't
interested in anything else.

If your goal is to maximize your earning potential, there's far more effective
ways of spending 3-4 years.

~~~
barry-cotter
If the goal of a university was research it wouldn’t have any undergraduate
students and it probably wouldn’t teach Master’s students either. Some
external organization would educate future researchers and then they’d hire
them.

So you’d either have a graduate studies only university, like the European
University Institute in Florence or Rockefeller University or a research
institute like the Max Planck Gesellschaft, RAND, SRI International or the
Institutes for Advanced Study.

The idea that research is even a part of the core mission of universities is
at most 200 years old. They’ve always been traded schools for theology,
medicine and law and latterly finishing schools for the upper classes but the
research university emerged in Germany with Alexander von Humboldt.

Most people don’t decide upon goals and then look for the most effective ways
to pursue them. They look for the socially approved and known good ways of
getting what they want. For the huge majority of university students that
means they’re at university because they need a degree to get a job. People
with money and people who attended selective universities may think otherwise
because they have other or better options but most people know that if they
want a decent, respectable living they better get their certificate of middle
class membership, their Bachelor’s degree.

Outside of maybe Cal Tech no university sends the majority of its students on
to graduate study aimed at producing researchers[1]. They are funded by
governments whose voters would be apoplectic to be told education was an
afterthought to faculty research. The median college graduate might be capable
of doing a Master’s degree but there is no way more than 10% of those who
matriculates as university students are capable of becoming researchers if
that.

Whatever universities might be of their purpose is research they’re a terrible
waste of resources.

~~~
growse
> If the goal of a university was research it wouldn’t have any undergraduate
> students and it probably wouldn’t teach Master’s students either. Some
> external organization would educate future researchers and then they’d hire
> them.

What makes you think that the best way of training future researchers isn't
having the current researchers train them? This is the model currently used
across most universities I think. As part of my degree, I was taught entirely
by people who are active researchers in their fields.

> For the huge majority of university students that means they’re at
> university because they need a degree to get a job.

Yes, and I'd argue this is a negative trait. People should be going to
university because they want to learn a thing, not because it's a necessary
hoop to jump through to work in a field (unless that field is academia).
Fields that require specialist education (law/medicine/etc) already have
specialist institutions that do this vocational training.

> The median college graduate might be capable of doing a Master’s degree but
> there is no way more than 10% of those who matriculates as university
> students are capable of becoming researchers if that.

But how does the university find that 10%? You presumably can't select
effectively, so what better way than to run a 3-4 year program for those who
are interested to see if they remain interested enough and are good enough to
become a researcher. It doesn't have to have a high conversion rate to be
effective.

------
donatj
Talking with co-workers who completed 4 year CS degrees, I feel like I got a
much better value out of my now defunct 2 year trade school.

Mind you this was 15 years ago, but I came out of it with a decent enough
working knowledge of C, C++, VB.Net and Java - and basic understanding of SQL,
PLScheme and functional. On top of that there was a solid year of data
structure class.

Trade schools have been largely demonized and shut down in the last couple
years, but I can say honestly I would not be where I am today without it.

I never would have cut it in college, I did really mediocre in grade school, I
had trouble focusing on things I didn't care about. However, in trade school I
flourished, largely because I actually cared about what I was learning. I
graduated with a 4.0 and I make six figures now.

I genuinely see college requirements as a horrible way to filter useful but
unbalanced people like myself out of the work force.

~~~
1290cc
Same here, getting close to hitting 7 figures. Never stepped foot in a
university but I was coding from 13 and working part time from about that age.
Uni just seemed like a waste of time as the CS curriculum was already out of
date for modern development in the country I'm from (this was mid 90s and
internet was taking off).

I would not recommend this career track if you're the kind of person that
wants to climb a career ladder and go into management on the business side of
things, there are definitely useful skills to acquire on the legal and
softskills side. Having any degree will just check a box and help people
without a clear view of what they want out of the future. It can also help if
you want to put yourself through being just another number at a FANG
organisation.

Too stubborn and arrogant to allow someone to tell me I'm incapable of being a
success without a piece of paper.

~~~
cryptica
The most valuable lessons I got from University were:

\- Time and space complexity (Big O, Little O, big Omega)

\- Algorithms and data structures (linked lists, heaps, trees, graphs, search
algorithms, sorting algorithms)

\- Artificial intelligence (neural networks, evolutionary computation,
decision trees)

\- Electrical engineering logic gates and circuit analysis (gives a good basic
understanding)

\- Discrete maths (De Morgan's laws)

\- Database design

The database design course I did was heavily centered around relational
databases but some of the core concepts of this course ended up being very
valuable for any kind of DB and also for areas outside of the DB. It taught me
a lot about useful software engineering concepts such as identifying
functional dependencies in the data, achieving good separation of concerns,
establishing a clear data flow, one-source-of-truth principle, indexing of
data, etc...

~~~
pickle-wizard
I had to learn all that stuff, and it has been nearly 20 years since I took
many of those classes. Except for the database design, which I use regularly,
I've forgotten it all. Which is really frustrating, because I put a lot of
time, effort and money into learning that stuff.

The other day one of our network guys asked me what a Red-Black Tree is. I
couldn't explain it. I got an A in my algorithms and data structures class,
but I haven't used it so I forgot it.

------
Jedi72
The lack of appreciation of pure knowledge in this thread is truly saddening.
If all you care about is getting a job, this question boils down to simple
finance. If you want to truly learn, understand and engage in a topic, what
can possibly be better than emmersing oneself in an environment of learning,
inquisitive students and knowledgable professors full-time?

~~~
lol768
> The lack of appreciation of pure knowledge in this thread is truly
> saddening. If all you care about is getting a job, this question boils down
> to simple finance. If you want to truly learn, understand and engage in a
> topic, what can possibly be better than emmersing oneself in an environment
> of learning, inquisitive students and knowledgable professors full-time?

It's sad, but inevitable with tuition and living fees as they are set now. I
do some contracting for a university in the UK, and I honestly don't blame the
students who treat the university as a service provider and the degree as a
financial investment. They're paying customers and deserve a high quality
service with good teaching and good facilities. There's no room for
variability here, the CMA will rightly fine universities who have misled
students or failed to fulfill their obligations.

If the degrees were free at the point of use (as used to be the case here),
I'd totally be behind the idea of studying for the sake of broadening one's
horizons.

Fact is, they've gotten increasingly more expensive and the students with
sense are going to make sure they get a return on what will (for some) likely
be a working lifetime of additional tax or a huge upfront cost.

You need to be in a privileged position to suggest that dropping probably
around £45k on 3 years of a degree should solely come down to a desire of
"immersing oneself in an environment of learning, inquisitive students and
knowledgable professors full-time". The "simple financials" _are_ a barrier to
today's students - even with the UK's maintenance and tuition loans.

~~~
b3kart
£45k is for international (that is non-EU, for now, sigh) students, right?
It’s £27k otherwise. Which is still a lot, but I think we shouldn’t complain:
it’s much less than what top US schools charge, and the tuition loan
conditions are extremely manageable. I.e. no job == no payments. So I would
say it’s a safe investment, especially for a profession with so much demand in
the foreseeable future.

~~~
lol768
>£45k is for international (that is non-EU, for now, sigh) students, right?
It’s £27k otherwise.

You're quite right it's £27,750 for home/EU students currently, but I'm
including maintenance/living costs in my figure too which realistically will
probably be about 5-6k a year. Some universities make working part-time more
feasible than others, which can help with this aspect.

If you're international, the total can be closer to £90k after three years
(based on a band 2 UG course @ Warwick + £5k per year maintenance/living
costs).

>I think we shouldn’t complain: it’s much less than what top US schools charge

I'd respectfully disagree - aiming to be better than the US sets an incredibly
low bar. Just like their healthcare, US education is ridiculously expensive
and some of the (private) loans seem almost predatory. We should be looking at
Europe where in quite a few countries tuition is a few hundred euros a year.
Or, thinking back a few years where tuition was £3k or free entirely.

>the tuition loan conditions are extremely manageable

It's definitely a forgiving loan in terms of repayments - but my loan
accumulated interest at ~6.3% _whilst I was still studying_ with no proper
income. That interest rate is worse than a bank loan.

If you want to take advantage of not having to repay the loan, you're
essentially betting against your future earnings potential.

------
honkycat
People REALLY hate college degrees on this site. I think my degree was a great
decision.

I've met a few decent self-taught programmers. Most are awful. Over and over
again the bootcamp grads and people who have never attended school end up
being the worst performers on my team.

A LOT of the people I have worked with who do not have degrees have bad
attitudes and are hyper-vigilant about "no degree" microaggressions.

I use the stuff I learned in university all the time. I didn't go deeply into
debt to attend a private university, instead I worked during the day and went
to school at night.

There is such a massive glut of people trying to get into the entry level
programmer jobs. It's an easy decision for me: Throw the people who do not
have a 4 year degree or relevant work experience into the trash. I would
assume that a LOT of other people are doing this.

~~~
ggambetta
People with no degrees hate degrees. People who can't pass FAANG interviews
hate FAANG interviews. It's a defense mechanism, along the lines of "I'm not a
bad student, the teacher hates me".

~~~
innocentoldguy
I got a degree and graduated summa cum laude with a 4.0 GPA. I don't think my
college education has been anywhere near as valuable to me as reading software
engineering books and coding a lot has been. If I could do it all over again,
I would save the $60,000 and buy a sailboat.

~~~
barbellguy97
What do you think about getting a Masters degree in a non-specialized field
(e.g. Software Engineering and not Artificial Intelligence) while having a
Bachelors degree already? I am currently at the crossroads of going into work,
a masters degree or both. Am also currently an intern at a FAANG atm.

~~~
matwood
I did my masters while working. My job at the time paid for it, and there was
a good school in the area. I found it fun because I was exposed to things I
wouldn't have gotten exposed to in my job (programming language design,
automata theory, etc...), but those things also didn't change my salary or
future job prospects.

If you find learning in a structured environment fun and can get someone else
to pay for it, a masters may be right for you :)

------
rvz
> These skills are often gained through completing an undergraduate degree.

Disagree.

An apprentice or even a bootcamp grad can learn these skills in their current
job or in a online MOOC course without a degree.

What the author fails to mention is the amount of student debt that comes with
the CS degree. In some cases a CS degree isn't worth the debt if the
curriculum doesn't align with the market or if the university is less
prestigious. It's no good becoming a graduate and leaving with no experience +
£50k in debt and convincing employers that you are "qualified" for the role.

Given that most or if not all of these CS and soft skills can be learned
online for free, students utilising free courses can find work debt free with
the same skills as a CS grad with the added bonus of hands-on experience if
they are apprentices. Unless you are after a research position, it is
economically better to teach yourself for a typical developer position these
days.

~~~
czbond
I - disagree here. My CompSci background gets me called in to deal with the
hard stuff that others skip bc the theoretical parts of CS are not present.

As mentioned in a further comment below - I can understand why code is slow
(eg: BigO for cpu or memory), what structures and algorithms to use in
different scenarios (Data Structures & algos), how things are working
(Computer Architecture, Programming Languages [theoretical construction of
languages], Compiler design), and Automata. Absolutely, these can be learned
by oneself - but I find they rarely are. I know what is happening at a network
layer, OS layer, memory layer, application layer, and system layer, and code
layer.

I can grok a new language quickly, by learning some very key aspects of its
language design from my Programming Langs class (the "meta" of ProgLang
design), etc.

~~~
rayiner
I’ll agree with your disagree. Other than APCS in high school, and some
discrete math and number theory in college, I learned to program myself. By
reading a lot I picked up most of the things on your list above.

But where I really perceive my limitations from lack of formal education is
where math comes into play. I get the gist of how cryptography or machine
learning works, but I don’t think I’d be able to work in those areas for a
living even if I spent some time brushing up on my skills and doing self-
study. I never developed the intuition for the relevant math, and that makes
it extremely difficult to pick up the material just by reading. And doing an
entire self study course sequence of the missing material seems like too much
of a hill to climb.

~~~
jcims
Do you think most people with a CS degree retain sufficient skills in this
area to be effective? Maybe PhDs.

~~~
roywiggins
Exposure to the CS curriculum at least gives you a leg up in asking questions
and working out the shape of your lack-of-knowledge.

Like, knowing that automata and complexity theory exists and remembering
roughly how it works means that if something that needs that comes up, at
least you have a sense of what you forgot about it.

For instance, having taken a database class where we worked in the relational
algebra has helped me fluently write okay SQL even if I couldn't write out a
sentence in the relational algebra to save my life.

~~~
scarface74
I’ve never taken a relational algebra class in my life and neither have most
dba’s. They learned sql by learning sql.

~~~
roywiggins
That's of course a perfectly good way to learn SQL and probably much cheaper.
I'm not saying that you need relational algebra to write a query, that would
be silly. I just mean that learning that stuff does stick with you.

------
goranb
I'm currently pursuing my CS degree after a couple of decades working as a
programmer. The big difference is that you will miss "why" and learn mostly
"how", unless you have a very inquisitive mind. On the other hand, not
everybody can afford years of no income or crippling debt.

~~~
czbond
I agree with you; I have a CS degree, and when I work with those who learned
the programming mechanics (aka making code work) - are often skipped other
topics that came in handy for me making other decisions. I can understand why
code is slow (eg: BigO for cpu or memory), what structures and algorithms to
use in different scenarios (Data Structures & algos), how things are working
(Computer Architecture, Programming Languages [theoretical construction of
languages], Compiler design), and Automata. Absolutely, these can be learned
by oneself - but I find they rarely are.

Edit after thought: Of course, when to use an Array vs a Linked List in your
specific language (for example), might not matter if you're doing web apps of
medium scale taht one can throw more EC2 instances at

~~~
jcims
Is there any part of a CS degree that educates students on how networks
operate or what a protocol looks like on a wire? Most of the new grads I work
with seem to think of all of that as a black box and are completely stuck when
things aren’t working.

~~~
thethirdone
There are certainly classes that cover networking.

IP, TCP, DNS, and HTTP were covered in classes I took.

As for actually on the wire. I haven't studied anything about how ethernet
actually works. I assume its kindof like i2c, but I don't know more than that
and haven't needed to.

~~~
scarface74
So if college was so invaluable teaching networking, how do you think people
who went to school before http existed learned? Just like everything else, you
can learn as needed.

~~~
thethirdone
> So if college was so invaluable teaching networking,

I never said or implied that college was invaluable for teaching networking. I
just answered a question about what was taught.

------
kabdib
I did "all three". My road was basically:

\- tons of self study while I designed hardware and wrote code on my own

\- school, which started showing me more advanced things

\- an internship, which exposed me to the real world

I was into computers years and years before college. This was the 1970s, when
books on computers were few and far between. I had not heard of Knuth (and if
I had, his books might have chased me away) and most of my learning about
computers was from Intel datasheets and articles from BYTE and Dr Dobb's
Journal. I read about Smalltalk and Pascal and FORTH (and wrote my own FORTH)
and C (and mucked around with Tiny C) but didn't really know anything.

School taught me some theory (starting with Knuth and such), but the whole
time I was taking classes I was doing my own self-study on things the school
didn't offer (mostly I was studying how to write LISP interpreters and
compilers, and then how to write video games). School taught me how to teach
myself.

The internship taught me about politics and how to work with people, how to
work with physical machines (from DEC-10s and large PDP-11s to
microcomputers), and Unix systems programming ("Here, kid, photocopy my copy
of Lyons Notes, read that and also K&R, and have fun").

I was taking grad-level courses when I realized that I was having more fun
writing video games than anything else, and I was not looking forward to
spending my last year of school doing the boring graduation requirements
courses I'd blown off in favor of just taking more CS. So I dropped out, moved
to Silicon Valley and still, 40 years later, don't have a degree, and I'm
still reading papers and learning new stuff all the time.

------
vitro
As a uni dropout myself and regretting it now a bit, I've always seen
university education as getting a map.

You go to the school and get a map with all the roads, one-way routes, walks,
parks, etc.

If you learn by yourself, your map may not contain some of those routes and
you may not know that you can actually go some other way or you may go a way
that has a dead end.

On the other hand, it is just a map. You have to walk it yourself and
university cannot make you walk all the map. But at least you know (almost)
all the paths and their requirements.

~~~
sundayedition
That's a good analogy, I think of it as more of a key. It will open doors that
aren't otherwise available.

------
gerbilly
Almost all the work done in industry is O(1) programming.

It's difficult work, but not complex.

I'm not surprised every thread started by a person who hires grads undervalues
their education, because they probably don't have any work to assign to them
that contains any complexity.

This doesn't say much for us as an industry. The simple and avoidable
difficulties of 'real world' programming are not much to brag about.

The only difficulties we face nowadays in programming are almost always down
to buggy libraries and frameworks that have nonexistent documentation.

I remember when I was starting in the work world, that you could buy a whole
wall full of paper bound books for your IBM machine, or Sun, and when you
looked up a function in there it was well documented and correct.

Nowadays, I suppose we're too cool to do something like that, better to move
on fast and go break something somewhere else.

To any recent grads, I'll tell you a secret. If you want to move up the ladder
in this industry, the most important thing is to keep outrunning your
mistakes.

Build a system, brag about it, move to another role and let some other poor
sucker maintain the stupid thing.

~~~
gamesbrainiac
I think the pace of change has something to do with the quality of
documentation. We are writing more software to do more things, and by the time
we are done, we want it to do even more.

This is why we are in the mess that we are in right now.

------
sklivvz1971
All the points mentioned in the article are not specific to CS, and they are
mostly about living normal adult life (socializing, deadlines, etc.)

I don't think that going to college is necessary or detrimental. It's probably
good that people from 18 to 21 stay somewhere safe and learn something out of
their parent's home.

That said, there is very little that a CS course can teach you that is both
practically useful on the job and you can't easily learn from yourself. That's
because a large part of coding is not about knowing the most advanced and
obscure data structures or algorithms.

Which brings me to the point. Neither of those options teaches you how do
develop a product feature. That's what people still learn on the job today,
and it's why knowing how to code is merely necessary but certainly not
sufficient to be a good developer.

~~~
LoSboccacc
logic, computational complexity, algorithms, best practices and patterns one
can learn on its own but it's _rare_ to find a self taught coder that has had
exposure to these topics.

there are great developer that are self taught and self sufficient, sure, but
the majority end up coding small potatoes or cogs within a soul crushing
enterprise with zero agency

and while most cs grad have little coding skill they have the ability to learn
far beyond because while they don't know the hows, they know whys

so even if their core skill stars similar, their long term trajectories are
wildly different, which is something to consider too

~~~
sklivvz1971
I don't have any statistics, but at a personal level, I find that logic,
complexity, algorithms, etc. are trivial subjects that I learned in large part
by myself during high school. I'm pretty sure this is year one stuff at a CS
course.

All the rest that you are saying applies equally to any college student or
merely to any intelligent, learned person who constantly improves their
intellectual skills.

------
mettamage
As a bootcamp instructor:

1\. I gave deadlines

2\. Students did group assignments 50% of the time

3\. They learned to work with Git and how to communicate

I studied a CS degree and learned less collaboration than my students did.

Based on my experience I must conclude with regret that this article is too
unnuanced and therefore not very informing, if at all.

The author himself can email me for a discussion on mettamage@protonmail.com
since I'd like to understand his views better and perhaps he might benefit
from mine.

Edit: I emailed the author.

~~~
gatherhunterer
Everything that you need to know about the author’s reasoning is in the
“prestige” section. He claims that it is prestigious and therefore good to
have a CS degree with no explanation of his logic. This is not a reasoned
conclusion, it is an opinionated dig at those whom he feels are invading his
space without paying their dues.

~~~
mettamage
I see, I agree with your interpretation as well.

> Certainly there is some level of prestige that comes with having a degree.
> This comes from the level of communication required to simply navigate a
> degree. Also it is, in a way, a validation stamp that says… “Yes - you have
> the skills to be a Software developer”.

Prestige is only worth something in an inefficient social system. I don't want
to encourage prestige or signaling as it will make a system worse off in the
long run. Prestige does not hold any inherent value as the metric of why
something is prestigious may be for completely the wrong reasons.

Moreover, the level of communication required to navigate a degree is too
heterogeneous to measure and then state as an opinion that it is always more
difficult than a bootcamp. Navigating my psychology, CS + business minor
bachelor and game studies masters were easy. Navigating my CS master degree
was tough. They are all university degrees and it was fully dependent on my
personality. The reason navigating my CS master degree was tough is because
I'm not that formal in my thinking.

Likewise, I had a couple of people who really disliked full-stack development
and wanted to be front-end developers but they were stuck in a full-stack
bootcamp.

Navigating those 3 months was a really tough thing to do for them. They talked
with me and I adjusted their curriculum to a front-end one as much as
possible. And also, front-end wasn't my specialty, so I couldn't optimize it
as much as I would've liked. Other teachers may not be so nice (I've met them)
and they knew they were taking a huge risk telling me this. They were
vulnerable, and made the situation more complicated for me and themselves as
well, which I was fine with but it isn't easy. I had an easier time at my
psych. bsc, CS bsc. and game studies msc.

------
kidintech
I think this is highly dependent on how your course is structured. I used to
do a lot of contractor work and competitive programming before going to uni. I
thought I knew how to write code, or at least knew how to "teach myself". I
had never been more wrong.

Having tough coursework across diverse esoteric subjects (where you cannot
easily stack overflow your way into a solution) was easily the best learning
experience of my life. Standing before massive "walls" that looked impossible
to climb, and being forced to figure out how to do it on my own, is the most
important skill I have. Some CWs which I thought were particularly tough and
taught me a lot:

\- Kernel for target non-widespread platform (where all you have is the
processor's manual), capable of IPC, written from scratch in C.

\- Both a pathtracer and a rasterizer without using a graphics library. (you
can read about the advantages or disadvantages of each one, but writing both
makes you appreciate each technique independently)

\- Some sort of compiler or interpreter (parser too).

\- HPC problem that requires non-trivial parallelisation and vectorisation.

\- Some sort of adversarial attack on a target "real world" platform that uses
deprecated encryption (i.e. RSA).

\- Individual research project.

ALL of these tasks are possible to do by yourself, independently, but very
hard to see them through the end without solid infrastructure and support
staff surrounding you. I imagine it takes a very highly motivated individual
to do the same things outside of academia.

The biggest benefit of attending uni is learning how to learn and tackle
complex problems.

------
emit_time
I graduated with a physics BS a little over a year ago.

My experience has been that it has taken a lot of effort and time to try to
learn things, and keep up with everything. Also, I think my resume just gets
straight up tossed out a large fraction of the time compared to CS majors.

Maybe there's other issues, but I've had people look over my resume and things
like that.

Additionally, my lists of technology are pretty weak (I'm trying to work on
it, but my company doesn't use a lot of mainstream technologies if any).

I did not have any internships in CS.

I don't know how bootcampers and other get jobs at FAANG companies in 6
months, because I can't even get a non technical phone screen with them.

I even did triplebyte without too much success.

That being said, I accept there are probably other issues and things I need to
work on, and I'm trying to work on them as much as I can.

But, I have spent a lot of time reading about topics, asking my friends
questions, reading conversations in group chats that are technically oriented
and looked up things from them to learn. It has been a hell of a journey.

Trying to move to a company that uses more mainstream technologies. So I can
have a resume that will actually get me calls back.

This is a bit of a ramble.

Also, considering the article. I don't think I really had to learn any of
those things in school well. Maybe if you do clubs and things, but I don't
think it's much of a result of the curriculum IMO as far as
teamwork/communication go. I know CS majors have senior design where the work
in teams, but I think a lot of them suck at the teamwork part.

Current weaknesses of mine: Socket programming, messaging, multi threaded
applications, I don't know SQL (beyond basic queries)/database schema design
(we don't SQL it at work)

I still barely know what dependency injection, factories etc are. I only
learned what a "god object" was today.

I'm trying really hard. I want to have a really good job since I know the
benefits in terms of rewards of me studying hard are HUGE.

------
zabana
> Most CS degrees have group projects. These are great for learning how to
> interact within a multidisciplinary team, how to behave, and how to
> communicate technical concepts effectively. These are excellent skills to
> have while working in Software development.

Plenty of CS graduates have very poor communication / social skills. It's very
unfortunate but it's the sad reality.

As somebody with computer science knowledge, but no official university
degree, I can testify to the importance of going through such a curriculum.
I'm eternally grateful to MIT and their OpenCourseWare initative which allowed
me to develop my understanding of the subject. This, without a doubt, made be
a better Software Developer. All of this for free.

Physically attending university has two main advantages as the article points
out: Discipline for people who can't work when not pressured (ie deadlines)
and of course networking (meeting with companies on campus etc)

~~~
ubercow13
Two things I thought were most useful about university were being able to talk
to peers learning the same material at the same level, which is one of the
most efficient ways to learn complex things quickly that I have come across,
and regularly being able to talk to professors and experts with plenty of time
for you.

------
lowercased
"College degrees far outweigh teaching yourself to code (Or coding bootcamps),
as they provide you more skills than simply knowing how to code."

But the majority of the skills listed are not intrinsic to computers, computer
science, or software at all.

"There are many skills that Developers now require besides just coding. They
need time management skills, organisational skills, people skills, translating
skills, negotiating skills.. the list goes on. These skills are often gained
through completing an undergraduate degree."

Most people will get experience in exercising and developing those skill sets
with almost any degree program.

"Certainly there is some level of prestige that comes with having a degree...
it is, in a way, a validation stamp that says… “Yes - you have the skills to
be a Software developer”."

Umm... not really. We've probably all met people with CS degrees who were not
really all that capable of doing day to day development.

~~~
detail-oriented
Totally agree with your last statement. I've fired more CS degree programmers
than self learners.

~~~
lowercased
yeah, I was going to pound this home a bit more, but was seeing some other
people already did.

Coming back to this, one of the defenses I've had from CS people who couldn't
do day to day development all that well is "well... that's not what CS is for
- it's really for diving deep in to the theories behind problems... " \- or
some other relative claptrap. On its own - yeah, there's a class of problems
that are served well by people with a CS-focus. Just don't try to drop them in
to a "developer" role and assume that they'll be "just as good or even
_better_ " than someone who's simply been doing development perhaps with
minimal schooling or just self-taught. One skill isn't really a superset of
the other, but some people tend to think of them as such.

~~~
detail-oriented
Agreed. The main point is that a CS degree is not a proxy for success in all
things that require code. I like to keep in mind that a BS in CS only
demonstrates the ability to study, memorize and be quized on your memory.
Using a set of axioms to build something unique is totally different.

------
pmontra
CS is not Software Engineering, it's more about research than about coding.
But let's say the post is about SE vs self teaching. Is it better to have a
teacher or to go self teaching? I think a teacher is better. A teacher can
bootstrap us faster and teach us something important we wouldn't randomly step
into or would underestimate. Then I think all of us know that most of our
coding knowledge comes from self teaching (the google / practice loop).

------
bitcurious
That isn’t compelling as far as a CS degree goes. You could change the title
to “learn to code and get a degree in literature” and the same time pressure,
communication, networking, etc. points would stand true.

~~~
seankimdesign
Exactly what I thought as well. There are many articles out there that make
compelling cases for getting a CS degree. This isn't one of those.

------
pubby
Everything here can be earned elsewhere for far less money. In fact, if you
get an entry-level job you can learn all this while getting paid!

IMO the advantages of CS college are this:

\- You can reach a higher salary.

\- It's easier to learn hard math/CS ideas in school than on your own.

\- It's easier to make friends in college than elsewhere.

~~~
mav3rick
Many self learners have no clue about processes, threads, memory allocation.
Nor do they care about algorithmic complexity.

They end up using a list for a map etc.i.e. there are foundational gaps in
their knowledge. A CS program ensures that there is at least an attempt to
build a foundation.

~~~
jacobolus
> _Many self learners have no clue about processes, threads, memory
> allocation._

This all also applies to “many CS graduates”. My systems-programmer wife has
given up asking basic systems questions to new grads in technical interviews
because she just expects to get blank stares at this point.

Stuff that was expected knowledge of anyone programming computers in any
capacity up through the 1990s is now a mystical secret known only to gurus.

Someone who takes hard college courses in operating systems, database
implementation, networking, distributed systems, etc. can obviously learn a
lot of useful stuff. But those are often not required for a CS degree.

~~~
bdamm
It is possible to scrape through a program without much curiosity or real
understanding. Thus defining a clear gap in the workforce that those with CS
degrees (and who actually paid attention) can fulfill. Specifically, building
the tools, algorithms, and systems that the code monkeys will add features to.
Which part of the food chain one wants to show up in has surprisingly little
to do with how much one gets paid, but since it doesn't matter, I know where
I'd rather be.

------
neoluddite
Nothing in this article pertains specifically to a CS degree -- time
management, communication, and networking are all skills that would be picked
up by any college degree, and would arguably be stressed even more heavily in
a, say, liberal arts degree.

Perhaps the author would be even more in favor of a history degree and
teaching yourself how to code than a CS degree.

------
innocentoldguy
I've been a software engineer for 30 years and by far the best programmers
I've ever known were all self-taught.

I'm not knocking college degrees. I have one myself. However, those who are
self-taught tend to take far more initiative and invest far more time in
studying and understanding how things work than those who just got a degree.
They seem to be intrinsically drawn to the craft and don't just do it for
grades or accolades. Software engineering is an integral part of who they are
and they are brilliant because of their unquenchable fascination with it. At
least that has been my experience.

~~~
TrinaryWorksToo
I disagree. We don't see mediocre self learners at companies because they are
screened out. We do see mediocre CS grads because they get a socioeconomic leg
up.

------
VLM
Something missed in the article and most of the comments is the degree (or
certification) provides a broad roadmap of, at least in theory, the entire
topic.

I spent several years doing BGP and related router support; when I passed my
CCNP I was forced to learn a lot of interesting broad topics ranging from
multicasting to obscure details of low level packet switching.

When I was very young in the 80s and introduced to 1st edition K+R C I was
unimpressed with pointers; why bother with all this? Later, I found pointers
pretty interesting and useful for data structures and low level driver
"stuff".

This is hardly a problem solely for CS. Philosophy has the same issue. Self
taught philosopher almost certainly means maybe one favorite author and maybe
one book named something like "The philosophy of (insert pop culture movie
title here)" and little more. Even a pretty lame intro to philosophy class
will be much more broad.

An enforced broad education of a topic can be very useful. That seems to
generally be missing in online education. A lot of effort over the years has
been put into very tiny topics like "how to teach kids the derivative of x to
the y power" but very little effort seems to be put into "how to decide what
is learning enough of calculus, how to measure it, and how to pinpoint lacking
areas"

------
buro9
Both.

A CS degree is learning and not just a bit of paper. It will give fundamentals
and breadth, but not necessarily depth because they have to cover so much
ground. It doesn't teach how to code, they teach how the systems work.

Self learning can give you the depth in an area that interests you, and
provide the experience to debug and live with code you produce or to take on
existing systems by contributing or interacting with OSS.

They are not mutually exclusive... If a CS degree is available to you, do
both.

------
svckr
At the risk of pointing out the obvious: If you live in a country where a CS
degree from a decent university is not even close to costing six figures in
tuition fees (for example in most of the EU), just get the degree _and_ learn
how to code by yourself.

~~~
growse
Or get a degree in _literally anything_ and learn to code yourself.

If you're really passionate about the _science_ of computing, do CS. But if
you're really into particle physics, anatomy or medieval history, do a degree
in that (and learn to code).

------
glangdale
The problem with these articles, and discussions of same, is that they rapidly
degenerate into festivals of self-praise.

Long term _everyone_ is teaching themselves to code, or picking up skills on
the job. Maybe I'm an idiot, but almost every skill that I have has gone
almost 100% in and out of cache over the years. Having had a decent foundation
at one point is probably helpful, and struggling through a highly mediocre CS
PhD (the program at CMU was excellent, but _I_ was pretty shit at the research
side) gave me some lifelong skills and interests. However, almost everything
that I can do semi-competently now is a product of repeated independent study
and learning on the job.

Many of the skills that I now think of as bread-and-butter weren't even a
thing when I was an undergraduate or early grad student. SIMD programming was
pretty much non-existent on mainstream processors (although I learned some
nice parallel prefix stuff in a parallel algorithms course). Computer
architecture is hugely different. C++ is nearly unrecognizable - when I
started C++ programming, half the language wasn't even really there (no
templates, and exceptions exploded in weirdo ways) and the emphasis of how
people programmed back then was totally different.

In the end, everyone will either be a self-directed learner or GTFO into
management.

The skills you will get from university can be deeper, but I've met plenty of
people who managed to escape CS degrees without learning anything profound.
They can also be 'wider' \- I learned a lot of useful stuff in pure
mathematics (graph theory and combinatorics). There's nothing stopping a truly
inquisitive person from picking up a lot of this on their own, but the
structure of university is good for a lot of folks.

~~~
matwood
> Having had a decent foundation at one point is probably helpful

Agree on the CS side. I received my undergrad CS degree almost 20 years ago
now. It definitely laid a foundation for future learning, but beyond that it's
hard to know at this point. I was also close to a minor in business, and what
I learned in finance, economics, and accounting has been useful at nearly
every stage of my career. The one thing I wish I had done more of in school
was literature and writing. Through experience I've learned that writing
(really communication in general) is the most important aspect of most jobs.

------
ARandomerDude
Self-taught programmer here, in industry for 10 years now.

> Deadlines

I have these at work.

> Teamwork

I have this at work.

> Communication

I do this at work.

> Prestige

I have this from doing a good job at work.

> Networking

I do this at work.

Sounds like I'll be fine without a CS degree.

~~~
ossworkerrights
Well someone has to write shovelware and preach about how code documentation
and design patterns are a waste of time.

------
tikhonj
This article is just a list of unfounded assumptions about the side-skills
that CS programs teach . In my experience working with fresh CS grads and PhD
students, these skills are _not_ taught with any consistency and have to be
picked up in the first six months to a year of full-time work. At the end of
the day, an academic program is just a loosely connected set of courses that
don't even do a great job teaching the subjects they're focused on, so we
shouldn't have high expectations of how well the courses teach skills they
_aren 't_ focused on!

The kind of full-immersion one-on-one mentoring you get as a junior member of
an effective team is going to have a much larger impact that anything you do
in your formal education. And that's a good thing too, because I've worked
with _numerous_ CS grads who:

• are weak communicators, especially in writing

• are _not_ effective in a team, either for interpersonal or technical reasons
(ie writing unmaintainable code)

• are not particular fast or effective, especially in situations where
projects and priorities are not fully specified

Now, to be fair, _some_ fresh grads are great on all these points. Just as
I've worked with ones who are incompetent, I've also worked with some who are
as effective as senior engineers right from the start. But that is not
entirely common and almost always a function of things they did _on top_ of
getting a CS degree. It's hard to reason about counterfactuals, but I am sure
that the same fresh CS grads who are incredibly effective would still be
roughly _as_ effective even if they had taken a different path to becoming a
professional programmer.

And even if there is any systematic difference between junior programmers with
and without degrees, I am absolutely certain that it gets completely erased
after several months of working and mentorship in a professional context.

------
amursft
This is a bizarre article because in some sense getting a computer science
degree has advantages to teaching yourself to code, but I don't think the
article really says any of them and instead pinpoints other things that as a
self-taught coder were not an issue for me: teamwork, time management, people
skills, translating skills, negotiating skills, etc.

What I think I missed in a CS degree was study of lower level fundamentals of
operating systems, compilers, databases, algorithms. Things that you don't
necessarily get exposed to at a deep level building out a Ruby on Rails web
app. And teaching yourself to code you can still seek those out to, that was
just my particular path into software development.

I think the article could be strengthened by mentioning and focusing on some
of those things.

------
larusso
I’m a complete self taught programmer. I guess it took longer for me to reach
specific knowledge as others but I’m a passionate programmer. I read tons of
books, read a lot of articles and opinion pieces of how to do x (not that I
follow them blindly) and most important I read and write a lot of code.

Granted not everyone does that and my motivation was never just to get a job.
The second part which I don’t really concur with are the soft skills parts
being taught during a CS degree. I happen to know plenty of new programmers
who constantly overcommit and or get fed up with small details. I think that
these skills can only be acquired at work with the help of good instructors.

------
nashashmi
It's funny the article never mentions learning actual code and learning
essential algorithms as part of what makes CS degrees a good choice.

What it does mention:

Struggling as a community; learning independently plus from people who are
learning independently of you; networking with people who are committed to the
same career path as you; and confidence that comes from having a degree. (I'm
paraphrasing extensively)

Since this is something that all college degrees offer especially under bad
professors and terrible academic programs, I think the lesson here is heavy
goalpoints combined with little guidance makes for successful students and
career paths when backed with prestigious degrees.

------
lmilcin
I find people really misunderstand the purpose of a degree.

The purpose of a degree is to get knowledge (yes!) but, more importantly, work
and get connected with people in the field and get a proof of your ability and
the work you put in in the form of a degree.

Now, if you want progress further in the field, maybe you think about teaching
or doing research, this is going to be pretty important.

On the other hand if only thing you are going to do is programming for a big
co then this is, in my opinion, pretty much a huge waste of time.

You can teach yourself all the skills needed to be better developer than CS
degree would ever teach you, better, and in shorter time while working for big
co and getting paid at the same time!

Understand that programming in itself is pretty basic skill when compared with
other skills necessary to be a good developer:

\- debugging complex systems,

\- dealing with complexity in large systems,

\- getting good at very specific software stack that is used for your project,

\- learning how to communicate with your team, your boss, your stakeholders,

\- and so on.

Learning those things takes more time than learning how to program and
learning them can only be done while working for a company.

On the other hand you can learn to program on your own and if you are really
committed, just get a copy of CS curriculum and do it on your own.

There is some worth to having a CS degree (it gets you into interviews more
and maybe a bit higher salary). But I think this is false thinking.

First, you only need to find one job. If you exclude all companies that
require CS degree there is still huge number of good employers with as good
rates to offer.

Second, your CS degree also means you just lost about 4 years of real world
experience (I assume you would still need to spend about a year learning on
your own before you can realistically start work as a programmer). This
additional experience would count as much or even more than the CS degree and
it would also be huge economical advantage for you (getting paid instead of
getting in debt?)

~~~
happy-go-lucky
> dealing with complexity in large systems,

This is very important if you are working for a big company. As a self-taught
programmer, having never dealt with large systems, I had to struggle a lot
early in my career.

------
blondin
these have nothing to do with coding skills!

any degree will get you those skills. project planning, deadlines, networking,
dealing with people, etc. college will always give you access to people.

what is missing is basically easy & sometimes free access to knowledge. god i
miss having access to nearly any library and all these books, and all these
publications you can print for free. i still have a trove of PDFs on a USB
stick somewhere...

and also all the discounts you get on most software. poor student me would
have never had the monies to buy full visual studio back then...

~~~
sircastor
I'm a self-taught programmer and finishing my BS in Software Engineering right
now. Something I never appreciated in my career or my first go at college was
the value of access to academic papers. There is so much knowledge available
in academia that's locked away from the general public. Quite frankly a lot of
that knowledge ends up duplicates effort because you can't get to it
otherwise.

~~~
blondin
i agree. academia needs to make this knowledge available to the public. who
knows what a genius out there who doesn't have access to this knowledge can do
with it? maybe we will be far ahead of where we are now, but i am just
dreaming now...

------
rossdavidh
So, I have two engineering degrees, but not a CS degree, so I'm kind of an
intermediate case between the CS degree and the self-taught programmer, but
closer to the latter.

The only one of the advantages listed in this article that seems true to me,
is the Prestige of having a CS degree. There are plenty of employers who will
require a degree, and a few which prioritize a CS degree.

In general, CS majors spend their first few years unlearning all of the
theoretical constructs they were taught in college. 90+% of the programming
which needs to be done in the real world is CRUD with a few special features.
Rarely are those special features related to anything taught in school, they
are usually horrible hacks that are related to the legacy system your new
system has to connect to.

There are, of course, exceptions, and for a few employers a CS degree is a big
advantage. But, unfortunately, much of the teamwork and communication skills
which the author lists s advantages of a CS degree, are again something where
the CS major has to get over their schooling, and learn to communicate in the
language that everyone else on the team understands.

Which, of course, nearly every CS major learns to do, they're smart people.
But the only thing they really get out of the CS degree that matters in the
real world, is the prestige, in 90+% of cases.

~~~
lkitching
> CS majors spend their first few years unlearning all of the theoretical
> constructs they were taught in college

Do you have any examples of these theoretical constructs? I find most of the
things I learned in my CS degree useful for commerical software development
and can't think of anything I had to 'unlearn'.

~~~
rossdavidh
Well it depends on your employer/domain, but mostly it's the idea that most of
what was learned falls under the category of "premature optimization", and
makes the software more complex while making a negligible difference in
efficiency.

Of course, if you're dealing with truly big data, like a FAANG company or
something, this may not be true at all. But the reality is, 90% of the
software needed is satisfied by a standard CRUD setup, and you will not need
to use any of the algorithms learned in school. This can be frustrating for a
new graduate, who feels an urge to do "real" development and get past the
simple stuff. It is mostly simple stuff, and should mostly stay that way.

So basically, anything that wasn't CRUD (sort algorithms, processing that
avoids just loading it all into memory, etc.) will usually be overkill. But,
where you work it could always be different.

------
stewbrew
Computer science is something different than software engineering, which is
something different than coding. One can discuss about which one of these
albeit partially overlapping skill sets is best for which job/task but this
doesn't change that these are different things.

The problem with "teaching something yourself" is that you don't really know
in advance what is important and how things are connected. If you knew
already, you wouldn't have to learn it.

------
hvasilev
The author does not provide any reason why these skills cannot be learnt
outside of an academic environment. It is possible to develop alone your
programming skills to an extent where you can get hired as a junior developer.
The rest can be learnt in the workplace.

Curiously one of the best developers that I have pleasure of knowing don't
have any degrees. If I could go back in time I would have never wasted 4 years
of my life going to a university for a CS degree.

------
vortico
This article doesn't answer "why a CS degree is better" but instead "why _any_
degree plus programming knowledge is better" than just programming knowledge.
Of course it's better if your time was free, but is a 4-year college degree
better than 1-2 years learning to code? That's a huge tradeoff that you'll
have to evaluate for yourself. I think not considering this tradeoff is like
comparing apples to oranges.

------
keiferski
It is interesting to juxtapose this conversation with semi-recent comments by
Peter Thiel on how the West has technologically stagnated in the past ±50
years. Perhaps there is a link between "no-heavy-CS-required web development"
becoming the dominant tech industry and this stagnation.

[https://www.youtube.com/watch?v=nM9f0W2KD5s](https://www.youtube.com/watch?v=nM9f0W2KD5s)

------
Mikeb85
Education is a great thing. Some people can learn without a formal education,
that's great, but it doesn't mean school is a waste of time.

------
dathinab
The thing is this is not a either question. It should be is it worth to teach
yourself coding _and_ get a CS degree.

Many CS degrees do not teach how to code, they might give you some starting
help but expect you to learn coding in parallel to doing the CS degrees.

Also IMHO learning time pressure, coding and teamwork Works best in a good
company, where there is some time to give feedback/teach the junior. But the
how many of the companies hiring Juniors do that? In how many companies will
you not only learn not much, but potentially even mislearn thinks? Are you
able to judge this aspect when you just get started as a junior?

My recommendation is to do a part-time Studium spending half the week in
University and half at a company as junior programmer. Well at last if the
universities you are interested in support this (many German universities do).
Note that I explicitly do not mean a dual Studium.

PS: There are other benefits of a CS degrees which only matter in some cases,
e.g. learning how to read CS papers , typical CS notations, better
understanding of basic algorithmic things. Etc.

------
newshorts
In my experience it depends more on the passion of the individual. Finding
amazing self taught devs is a real score. The most creative coders I’ve worked
with were self taught (not from code camps), likely due to the intense amount
of commitment and interest required to teach themselves on that level.

Not saying CS degrees aren’t creative, IMO they just seem a little more
prescriptive in their solutions to problems.

------
c000e3
Hi, new here. I use emacs for 95% of my uptime. I've created a lot of little
programs in bash, python and PHP. Also admin an imageboard, my personal
website that i update via SSH, have running some telegram bots that i edited a
lot. Actually i'm working in a FFMPEG automatizer un bash.

I don't know if you can do that, maybe yes, sure yes and a lot of more things.
The thing, anyway is that i'm an almost lawyer (working, but without degree
yet) with absolutely no academic preparation in tech. Just internet, manpages,
and intuition.

If your intention are just code to have work and pay debts while obey someone,
sure CS degree is useful... but if you want code to resolv things that you
actually needs, no, not in all: systematize all the knowledge in an scholar
scheme just would be a lost hacking-time.

In the other hand, i havent much work as lawyer, lol, whatever.

------
mathattack
IMHO... It’s not an absolute of one being better than the other for all people
or situations. A CS degree represents a more rigorous curriculum than most. It
also used to signal an interest in the field. (Nowadays it’s getting more like
Econ or Finance - a path to money)

If I am hiring an engineer, and I have to sort through which 10 candidates out
of 200 resumes to interview, the CS degree is one heuristic of many to make
the list manageable. If a colleague I respect hands me a resume and says “This
is one of the best people I’ve ever worked with” I won’t even look at the
degree or anything else on the resume.

Several of the absolute best engineers I’ve met are self taught without the CS
degree. That isn’t incompatible with saying the median engineer with a CS
degree is stronger than the median without. (And many with the CS degree are
self taught too)

------
6510
Teaching yourself to code is a terrible idea, I speak from experience. There
is really only one issue, one ends up asking why things are the way they are
in stead of learning how to be a proper drone and dream of your own cubical.
Basically, asking why things are the way they are sets you up for almost
endless frustration. The frustration only ends when you find employment far
far away from these people and their creations. Every generation of trained
programmers is less familiar with the clean and proper ways we use to do
things. Its great for them to learn to glue things together and meet with the
deadlines etc. You will enjoy non of this if you teach yourselves.... its why
this.... why that.... why am I using a 1000 line lib for something that is 2
lines of code? wwwwwhy?

------
stummjr
I disagree with this article in so many ways. I have a CS degree and I work
with many people who don’t, and they are just as good as (or even better than)
me at all the points raised by the article.

They meet deadlines, they are incredibly good at communication and
collaboration and they have pretty good networking. Most of these traits come
from the fact that they needed to develop them in order to succeed in learning
by themselves.

It is a pretty limited view of the world to think that only college can bring
you this. Immersing yourself in a coding bootcamp for some people means
leaving the jobs they need to survive in order to have a better job in the
future. I can’t imagine how being on college can teach more about meeting
deadlines, teamwork, communication and perseverance than that.

I wish this article provided more facts to back its beliefs up.

------
ralusek
I think the best path is to learn to code, and then learn CS. The concepts are
so much more concrete at that point.

------
pavelevst
IMO if need just get a job then having degree should help. If you enjoy
building stuff and have curiosity then it will be more fun to learn it by
yourself. Learning a language and basic concepts can take just few months, but
that is just a beginning of an endless journey. The skill of learning by
yourself is probably most important for engineers because there are always new
things to learn, and every job will require you to learn something new. Keep
in mind there are many other things that we can learn [https://medium.com/our-
team/the-tale-of-the-two-lumberjacks-...](https://medium.com/our-team/the-
tale-of-the-two-lumberjacks-64f575d93d6) Knowledge should be like a lake, wide
and deeper in a middle

------
reimertz
I’d argue what you do before you get your first job doesn’t matter as long as
it helps you moving towards getting there. The faster, the better.

What is important is to understand what you want to do first since CS is very
broad. If you can find a subset within CS, such as web development, app
development etc, then things become easier.

It enables you to get a job/internship quicker; boot camps, self-learning,
bachelors degree, so many paths!

Once I got my internship at a company located in a tech hub city, the
connections I got there and the ability to write it on my resume was all I
needed. I went back home and started my masters while working remotely but I
very quickly realized that no one asked for a degree anymore, references /
portfolio was all I needed.

I continued taking my masters, but only doing the courses I enjoyed. :)

------
codingdave
Most of the points listed in this article will also be learned by working in
the real world, on a good team. And if you get a degree in CS just to learn to
code, you are doing it the hard, expensive way.

I do believe in higher education. If you want a broader and deeper education
than what you get in high school, with new ways to approach learning and
applying your education to larger projects, a degree gives it to you. It also
gives you the academic credentials to pursue higher degrees. And the point
that some prestige can come with a degree is true.

There are reasons why a degree is a good thing. But for the most part, this
article doesn't accurately explain what they are. If you just want to learn to
code, get a job, and do it well... you don't need a degree for that.

------
vfclists
I think the issue here is not whether a CS degree is important, but whether
the people doing the hiring consider having a degree relevant.

In many accounting related areas, having a degree is not important. The
accountants, finance and management related executives who need the
programmers didn't need CS degrees to create their Excel spreadsheets and
macro, so why should they think a CS degree is important?

Try getting a programming job in an engineering domain without a CS degree.
They would rather have a physics or maths major and teach them programming
rather than a person with programming experience without a degree in that
field.

It all depends on that programming tasks are required. You certainly don't
need a degree to code for AWS or Kubernetes, but you will need it in hard STEM
areas.

------
ci5er
Embrace the healing power of AND. (OR is for losers)

I taught myself to code, and sold my first commercial project at the age of
14. And learned a lot.

I then went on to get a CS degree (in addition to physics, math and EE degrees
- all undergrad). And learned a lot. (The structured program of learning about
Databases, Compilers (and more about compilers!) and Operating Systems was far
above what I would have (could have?) learned on my own. Data Structures and
Algorithms - that is straight forward enough if you already know how to code)

And then went on to sling a LOT of lines of code. And learned a lot.

Now - I don't think ANY of those (except maybe the last one) teaches one to be
a systems engineer, which one needs to be for large systems, but they are all
excellent building blocks for when you get there!

------
torgian
After reading the short article, I can’t agree on all the points the author
made. But, this really depends on your situation.

In my case, I taught myself how to code over a few years.

I got a job with Georepublic and I love it. I’ve learned a lot.

But, in my case, I had the skills that the author mentions already. Time
management, communication, etc.

All that came from my previous careers ( Navy, then teaching.)

And quite frankly I’m not really interested in studying computer science. I
studied criminal justice and psychology.

For my Masters, I’ve decided to study Geoinformatics (which is directly
related to the kind of work I’m doing at Georepublic).

So, in my opinion, I feel like if someone is getting into programming, they
should study something related to the field they are in. Of course, this is
assuming the person is older, changing careers, etc.

------
overgard
Did anyone else look at the About page and notice the "Awarded Top 50
Programming Blog" image with apparently no attribution of who gave that award
or what it is? What's the deal with that? It gives the impression of a made up
award he gave to himself...

------
diminoten
I don't think a CS degree will ever compete with genuine interest. People get
attracted to the hot job market and the insane FAANG salaries, but those
people will never stack up to the folks who dumped their childhood and
adulthood into understanding how software works.

------
nottorp
My 2 cents:

The CS degree ain't going to teach you how to code, you'll have do that
yourself anyway.

What the CS degree will help you with is handling high complexity and/or
harder problems. Which can be invaluable in anything except the most simple
software.

So... ideally you'd get both :)

------
pcmoney
I am sorry but no.

All of that can be learned during your first internship where you get paid
instead of paying.

I would argue college delays maturity and does not foster it. Hanging out with
a bunch of people that are the same age, same life stage, etc. doesn't exactly
add life experience. Continuing to do "hoop-jumping" work just like we all did
in high school also doesn't seem to be novel. Perhaps its the keggers and
binge drinking that bring the maturity the author references?

As for prestige, if its a top 10 program sure, otherwise (and often even then)
don't waste your money.

Disclosure: Current engineering lead with multiple Degrees (1 Summa Cum Laude)
and a bootcamp CS education at one point (which wasn't all that valuable).

~~~
chrisco255
I don't think the article made the best points in favor of a CS degree. I went
to a top 40 program and I took a lot of CS and hardware classes and what I did
learn, crucially, that is more difficult in the workplace, is how complex
systems work and how to approach complex systems. Now, you could accidentally
learn that on the job, or intentionally if you choose to, but you can also
sort of skate by in a fog of ignorance for many years without ever learning
the fundamentals. But look, we learned how RAM works, how networking and IP
works, how to build a peer to peer file sharing network, how to design a
simple microprocessor, how operating systems and threads and processes work,
many of the fundamental data structures and algorithms that software is built
on, etc. Learning all that provides a very strong foundation for learning any
other software system. That's very hard to do without a program like a good CS
curriculum.

~~~
pcmoney
I think that is fair but remember over half of the classes you took in the
pursuit of a CS undergrad were not CS classes. Of the half remaining maybe
half of them were truly vital? Even the example of building a microprocessor
(or your own compiler as a right of passage) totally useless to 99.5% of
practitioners in industry. That is a quintessential "hoop-jumping" class. Did
you also learn the proper way to heat sand to extract silicon to make your own
transistors? At some point we have to climb up the abstraction ladder and
academia is always a rung or two behind and moves too slowly.

I would contend there are 6 classes worth of truly important information for
practitioners to be equivalently informed as your top 20% CS undergrad.

~~~
anongraddebt
Which six classes?

~~~
pcmoney
Thats the trick right

I would say: 1\. The standard Data Structures and Algs class. 2\. Discrete
Math (if needed) 3\. Systems design 4\. A Nand To Tetris type survey class 5\.
Databases 6\. Networking

Bonus: An ethics class. Because the tech world needs more people with
functioning moral compasses.

------
jstewartmobile
Personally speaking, CS degree has been a negative indicator. Autodidacts, and
people coming from math, physics, engineering, finance have all been
outstanding hires.

CS grads have typically been strong on opinions, weak on everything else. The
whole program is just too " _meta_ "\--and it is a huge negative!

You can give an idea to an autodidact, or a math grad, or a real-science grad,
and they will approach it with an open mind. Give the same idea to a CS grad,
and God help you if it conflicts in any way with their indoctrination.

------
lbj
I think CS i still very much a discipline we fail to teach - And no wonder
when you look at the curriculums.

In our last hiring round, we filtered a lot of applications down to 5
individuals we wanted to interview. During the interview they were all asked
to write their own implementation of Fizzbus in whatever language they
desired. 3 out of 5 completely failed to arrive at a working function, the 4th
was able but with massive help. The 5th were hired. All had 4+ years of
education in CS.

~~~
agumonkey
Devil's advocate: did you ask them to solve graph traversals or complex string
algorithms rather than fizzbuzz ?

I recently had a technical test, which I failed because I was depressed how
boring it was so I missed many easy answers (say asking about private/public
fields in OO).

~~~
growse
> Devil's advocate: did you ask them to solve graph traversals or complex
> string algorithms rather than fizzbuzz ?

Getting someone to regurgitate something they've been explicitly taught and
memorized instead of trying to solve a problem they haven't been (does any CS
course explicitly teach fizzbuzz) does not seem like good job selection
criteria.

> I recently had a technical test, which I failed because I was depressed how
> boring it was so I missed many easy answers (say asking about private/public
> fields in OO).

If you're not willing to engage with a test because you think it's beneath
you, you're going to have a bad time.

~~~
scarface74
_Getting someone to regurgitate something they 've been explicitly taught and
memorized instead of trying to solve a problem they haven't been (does any CS
course explicitly teach fizzbuzz) does not seem like good job selection
criteria._

And how is that different than getting someone to regurgitate problems thet
learned by studying leetCode?

If you can’t code fizzbuzz even after being told about the mod operator, how
can you be expected to solve harder business problems once given the
requirements?

~~~
growse
> And how is that different than getting someone to regurgitate problems thet
> learned by studying leetCode?

It isn't. Which is why the trick is to find a problem that the person hasn't
heard of and ask them that.

> If you can’t code fizzbuzz even after being told about the mod operator, how
> can you be expected to solve harder business problems once given the
> requirements?

I'm frankly bored of interviewing CS graduates who can give me a perfect
definition of modulus but can't do fizzbuzz.

------
sgammon
Also, don’t confuse prestige with pedigree. An undergraduate degree is the
norm now, and prestige implies some outlier quality

“A students work for C students” isn’t a saying the other way around

------
agumonkey
A semi solid advice:

if you're excited by current programming trends, and only want to ride that,
don't invest in CS. CS is amazing, but it's usefulness in the job market is
thin. In my limited experience very few people will care (or have to) about
strong abstractions and proofs.

On the other hand knowing how to hack mobile responsive react thingies will
get you going nicely.

If you want to explore the mathematical side of things, infinite ideas .. pick
CS books or cursus and enjoy.

------
theonemind
I went to a top 10 CS school, and and picked a CS major in part because I
already had some interest in programming. I beat them all at programming
easily, even in the honors classes. I'm not even good at it, I didn't take it
seriously or anything; I beat them all by having a fairly minimal genuine
interest.

I value the degree as something interesting I spent my time doing, but it
taught me very little in the way of actual programming.

------
cgrealy
not everything in life is about money and coding skills.

I loved my time at university. I played in bands, met my future wife, made
lifelong friends and occasionally even studied.

------
tanilama
A CS degree means better HR screening pass rate.

Isn't this obvious...

~~~
wrnr
True story, I am self-taught but have some impressive projects listed on my
resume, some even open-source. It's more often than once that I've finally get
an interview just to learn that the recruiter has removed these when
anonymising my resume.

------
Isinlor
I thought myself how to code as a kid. My interests pretty quickly converged
on AI and I saw academic career as the best path for me. I was fortunate to
have a chance to study abroad. I'm Polish and my mother ended up a cleaning
lady in Belgium (she lives now better than she did as a shop owner in Poland).
I decided to study at Belgian university, KU Leuven. I had to learn Dutch in 9
months, from 0 to academic level, but I failed on 4th out of 5 levels. I went
to work at an English speaking startup, but I kept on studding Dutch in
evenings, still with the goal of getting a degree and moving to academia. I
passed the 4th level, but keep on failing the 5th. I saw a job opening as
Software Developer at Dutch speaking KU Leuven team and decided to apply. Even
tough I could not get admitted as bachelor of CS, they hired me as software
developer. I still work at KU Leuven, I got 3 promotions in a year and a half,
but I never managed to get admitted as a student at this university. So, I
decided to search for academic luck in the Netherlands. I got to do what I
pursued to do for so long - 4 years in total.

But to be honest, I'm not happy and I feel like I'm living sunken cost
fallacy.

Studying is awful!

By myself I always studied topic deeply and toughly. I searched for variety of
opinions, approaches. I spent as much time as was needed for me to feel like I
understand the topic fully - to me it is when I stop encountering novel ideas.
I enjoyed freedom of curiosity and learning.

Studying, for me, is the opposite. I no no longer master topics. I don't feel
like I'm learning. I study to pass dull exams. My learning is shallow.
Deadlines and strict curriculum kills my curiosity. The old technique of
studying the day before exam, passing and forgetting is back.

I still study on my own, the way I always did. I love reading latest papers
from Arxiv. I love learning, but I hate studying. The vision of becoming
researcher is still in my head and it's the only thing that keeps me from
dropping out. But the more I experience academia, the more cynical I become.

Also, regarding communication and organization skills. I feel like working
thought me a lot more about communication and cooperation than any school
project. At work you are around professionals. People want to get things done.
There are processes and managers in place. There are people with battle earned
experience that you can talk to on daily basis. People who often know a lot
more about getting things done than academia people ever will.

I literally feel like my random work colleagues could give better lectures
about work organizations than the ones I received from some academia people.

------
gherkinnn
I’ve made the opposite observation.

As someone with no relevant CS background, the points made by OP are exactly
what granted me my first job.

Having to sit down and force myself to learn something that is not part of my
day job that is the hard part. Or worse, I don’t think of something to be
relevant, precisely because I know too little on a seemingly foreign topic.

And that’s where I see a degree as valuable.

------
dangus
The article should mention breadth.

University education forces you to take courses that may be outside of being
directly related to your field.

My computer engineering degree also included classes in the following
subjects, some mandatory, some chosen by me:

\- Film history

\- Multiple English/Literature courses

\- Geology

\- Physics

\- Chemistry

\- Macroeconomics

\- World History

All these subjects made me a more well-rounded person, not to mention the
diverse relationships with people that didn’t just come from my particular
small town.

~~~
newshorts
Is your point that a uni degree in general is better than nothing?

~~~
dangus
My point is that it’s better than coding bootcamps or otherwise being self
taught in CS.

------
RocketSyntax
CS degree. Even in product management roles, they all want CS degrees.

I aced a few CS classes, dropped out, and continued to teach myself to code
for several years. That seemed to do the trick. The classes were just so
boring/ irrelevant, and I wanted to hack on personal projects instead of
professorial tasks.

I doubt zuck was learning php at harvard when he wrote FB

------
cyrksoft
Why do people define CS as coding? Computer Science is much more than just
coding, it’s a science. At a higher level CS involves a lot of mathematics and
statistics. Coding is just a tool for a computer scientist as a hammer is a
tool for a builder. Learning to use a hammer is not the same as learning to
build a house.

~~~
xthestreams
THIS. And it always surprises me when this association comes not only from
outsiders, but from CS graduates too. This really shows a worrying lack of
communication about the objectives of such degrees (perhaphs intentional?)

------
Pete-Codes
To think you only learn soft skills through a degree is bizarre tbh. I've
interviewed 32 developers without CS degrees that are doing great without one!
( and didn't need a degree to learn soft skills)
[https://www.nocsdegree.com](https://www.nocsdegree.com)

------
gigatexal
To those who self study: how or where did you learn the design patterns for
good code? Anyone can learn how to write text book programs in any language
but working on a team and diving into a paradigm say MVCC or something doesn’t
seem as easy at least for me

~~~
mattmanser
From blogs, conferences, meetups or on the job.

Also, universities have traditionally been terrible at teaching those
concepts.

I haven't worked with CS graduates for a few years, but usually they were
terrible at designing anything, totally misunderstood OOP, etc. Because
lecturers were terrible at teaching it, often because lecturers had no
experience actually programming professionally. Maybe it's changed now.

For example lecturers loved talking about polymorphism, even though you almost
never should use it.

I remember a project I inherited from a graduate where he'd gone absolutely
crazy on inheritance, where an industry professional would have used just a
select few interfaces. Nightmare code.

~~~
gigatexal
"For example lecturers loved talking about polymorphism, even though you
almost never should use it."

Well, that makes me feel better after having a terrible time making heads or
tails of a codebase with many, many levels of inheritance. I think I am
getting there but my head hurts trying to unravel it to do things.

~~~
mattmanser
Almost always the wrong thing to do, one of the ways to make spaghetti code.

------
dkersten
Quick anecdote from my personal experience, learning to code as a hobbyist and
then later getting a hybrid Software Engineering and Computer Science degree
(it was mostly CS with some SE topics and projects): you can totally learn
without a degree, but my code, reasoning about data structures, algorithms and
performance and general software architecture definitely improved sharply by
getting the degree. I think partly due to exposure to additional subjects that
I may not have self-studied, partly due to having time to spend on it and
partly because of the coursework/lectures.

Of course you totally can learn everything you would ever want or need
yourself, but there's definitely value in a few years dedicated to learning
this stuff and getting exposed to subjects, projects and peers is useful.
Whether or not its better probably depends on the individual and what you make
of it, though.

~~~
dkersten
If someone disagrees with me, it would be great if you told me why my
experience and opinion is wrong... I mean, really, I can't learn from a
downvote!

------
weirdstuff
You'll likely deal with each of these no matter which route you go; these
things just occur naturally. School provides a little safety margin, but at a
cost. And there's a different cost to not going to school. Choose your own
adventure.

------
jitendrac
I have a degree, but i don't think it is necessary. I am a self learner,
learned coding by finding things how they works. If you are self-motivated,
diy code learning is great.

------
chx
One of the dirty secrets of university degrees is what you majored in _barely
matters_. You will not use it directly much. What you learn at university is a
universal way of thinking and learning.

------
bradgnar
i agree with the title, but not with the article. All the things listed in the
article can be learned outside of a CS degree. What a CS degree does is force
you to learn the academic which gives you the foundation to work at FAANG or
some other company that has high [principal] engineering levels, or even just
the awareness of knowing what you don't know to round out your skillset post
school.

Having said that, a CS degree isn't necessary, just better under the premise
that knowing more is better than not knowing more.

------
z3t4
The important part is not your knowledge, its all about your network.

------
tempsy
A CS degree helps you get an interview. That's pretty much it.

~~~
dboreham
It depends. Say as part of your job you have to read and understand something
like this: [http://users.ece.utexas.edu/~garg/dist/agarwal-garg-
DC.pdf](http://users.ece.utexas.edu/~garg/dist/agarwal-garg-DC.pdf) (sampled
from my work activities today..)

I suspect a CS degree is going to be pretty helpful.

Disclosure: I have a EE degree.

~~~
kokowawa393
I am not sure a fresh cs grad would understand this.

------
dbsmith83
Why was this article even posted? Sure, this is a debatable topic, but the
quality of this article is... lacking. Waste of time read, though thankfully
not much.

------
chiefalchemist
The difference is this:

When teaching yourself how to code, coding is the ends.

When going for a CS degree, coding is the means.

Full disclosure: I have a CS degree so my perspective has a natural bias to
ot.

------
thedeusx
Err... everything in this post says why you should get a college education,
and nothing about why you should specifically study computer science.

------
ilrwbwrkhv
A cs degree is useless. Much better to learn the things op mentions through
actually working with other people on a project like open source.

------
sundayedition
One might also argue a degree in Journalism or English is better than teaching
yourself to write persuasive arguments by blogging

------
WalterBright
Coding is like using the tools in the machine shop to fabricate parts.

CS is designing the parts.

They're different skills.

------
mantap
Completely disagree. Programmers come from many different backgrounds. Having
a non-CS degree is a strength because it means you see the world from a
different perspective and have different skills. For instance programmers with
a physics background are highly desirable in several spaces. And there are
many people with no degree who make very successful careers.

What matters most is your passion for programming. Because if you are curious
enough you will learn all that you need.

------
kalium-xyz
Any justification for needing a degree to do anything which does not require a
degree is a sunk cost fallacy IMHO.

------
sys_64738
The synopsis is enough to tell you the article won’t be worth reading. A CS
degree isn’t there to churn out coders.

------
sgammon
Wow, no kidding? You’re saying it’s easier WITH a degree? Unbelievable insight

Now, if college were available as a choice to everyone, maybe you’d be making
a point applicable to the people who could actually make use of the advice

But, alas, that’s not how it is. Even naturally gifted programmers born with
the option go to school 9/10 times, because they have a choice and the choice
is obvious.

Way to entirely miss the cause for the symptom

------
jokoon
A degree will often act as gatekeeping, in my view. There is a difference
between a degree and an education.

Once you have a computer and an internet connection, you're good to go. A
degree will cost a lot more, especially today.

Getting a CS degree is better, of course, but it's like everything, it has a
cost. It just happens that teaching yourself is possible and much more
accessible.

There are pro/cons for both.

------
pcvarmint
False. Teaching yourself to code is much better than a CS degree.

------
rdiddly
I think any degree will satisfy most of those, not just a CS degree.

------
jimbo1qaz
When loading this page, it slowed Firefox to a halt. It contains hundreds of
1x1 iframes for some reason, labeled aswift_(number), along with an Amazon
marquee at the top. I would call this website malware at this point.

~~~
executesorder66
It seems pretty snappy to me on Firefox. I have webrender enabled though.

------
ryanthedev
All that matters is how much effort you put into it.

------
mam2
I was coding at 12. Getting a cs degree is harder..

------
phillipseamore
I fire more workers with degrees every year then people with out them. My best
programmer studied carpentry.

------
janpot
a writing degree is better than teaching yourself how to type?

------
natecavanaugh
The path of my career took a rather unorthodox route, so I can see both sides
of the argument here. I’m a graphic design dropout (completed two different
tech schools and took art, fashion marketing, business and philosophy courses
at a local community college, before going to a proper university at 21,
completed a year, moved home when my father got cancer and started
freelancing) who never intended to become a developer, but a developer I am
(have built and managed a large-ish team of other developers and designers
[~60 or so globally] and have done fairly well for myself). I can see the
value of a university education, but can also see the validity of those who go
a different route (whether by choice or circumstance).

What I thoroughly enjoyed about college was the depth of study with dedicated
time to go into foundational principles, and meeting and working with people
far more talented than I am. But would I pay for that privilege if I had to
foot the bill? Probably not, or I’d choose much more frugally.

I get the feeling from a lot of the “school is unnecessary” arguments here is
that to some degree we fashion ourselves as Good Will Hunting’s who can make
it just fine. And there probably are actually quite a few here.

There’s a quote I love, “Money makes happy people happier and unhappy people
unhappier”. I feel like the same could be said about a college education. A
passionate learner will find it rewarding in ways that the average student
wouldn’t, or even a bored student may squander but feel entitled to a position
in life because they got a degree, but I think a passionate and humble learner
will probably end up doing well no matter the route they take.

For me, the reason I even got into developing was because, ultimately, it's
the act of creation and building that I enjoy, and both design and software
engineering allow me to accomplish that in a way I find rewarding.

I've known folks who graduated with either a BA in graphic design or a BS in
computer science, and with some of them, my self learning, both on a
fundamental principle learning level and on an execution level surpasses them.
But of course, I know many who are passionate about their field and just blow
me out of the water. And I've known autodidacts that also blow me out of the
water creatively and on a skill level. So I believe ultimately, the final mix
is really a result of raw talent, hard work, and a passion for what you're
learning.

I also think some of the "you must get a degree" arguments miss the value of
just pure, raw dogged persistence. I've had people with masters degrees in CS
tell me I'm a genius simply because I banged my head against a problem until
it cracked (the problem, and my head to some degree ;). I don't say that
egotistically, because I know that had I had a more formal and dedicated
education, those problems would have probably resulted in less time with me
banging my head against them, and the scope of problems I could apply that
persistence to would be greater. But if you choose to go for a shorter route,
you _will_ have to work harder in the end, both to compensate in the eyes of
those hiring, and doing your own study and learning to actually get to the
level you want, and even then, being self taught really only gets you so far.

Ultimately, it really comes down to, what do you want out of this life?

I honestly can't see myself being content with only doing software engineering
or design. That's both a strength and a definite weakness that I am constantly
battling with.

There are some other soft aspects not really mentioned in this article or the
comments that I do feel you miss when you're self taught.

One for sure is that not having a degree feeds into Imposter Syndrome. You can
honestly far exceed others with dedicated degrees but no passion, yet some
part of you and your experience will eat away at those accomplishments (of
course, this could be purely personal, but anecdotally, I've heard it from
other self-starters).

Another is that there is a danger, until you get amongst people who knock your
socks off, that you'll feed into your own Dunning-Kruger effect. It's
incredibly easy to absorb knowledge on your own and assume you're God's gift
to _insert skill here_ until you are surrounded by people who excel in ways
that you don't and struggle in ways that you don't. But the autodidact is very
often surrounded by people who aren't in their chosen field and so it's very
easy to seem far more competent. I would say that this definitely is addressed
by learning on the job, provided you luck out and learn on the job from truly
brilliant people.

These things are definitely not solved by having a degree (I think the
internet and open source have really been a boon to many in addressing the
second downside as well).

The other soft skills mentioned in the article are just flat out not true
inherently. I've known people with varying levels of degrees who are atrocious
communicators and their spelling and writing skills are ridiculously bad, and
had them literally use the fact that they have a degree as a proof that
they're a-ok in those regards. Being able to communicate clearly, being able
to communicate expectations and meet deadlines and promises (or summing it up,
clarity of communication and integrity) are things that most colleges
definitely don't require in order to pass.

Like the other comments here, this is all purely anecdotal and going off of my
own experience, so if I could sum it up in a way of how would I advise a
family member to go forward, in general terms? I'd tell them to get the
degree, hands down, if that's an option for them.

But there are so many other factors that for them specifically, I may
recommend skipping the degree altogether and get to work on building something
they love.

I honestly think there is value in either course that you don't get with the
other.

------
mieseratte
Not all degree programs are equal.

------
hirundo
Why teaching yourself to code is better than a CS degree

* Far cheaper, no debt accumulated

* Follow your bliss in learning what you want, but still with the option to absorb the best of the CS textbooks.

* Not compelled to learn languages and platforms behind the curve.

* Less able to lean on teammates, you learn to solve problems more independently.

* There's no illusion that your education has an end date, and that you can stop. Ever.

~~~
leed25d
You missed a few:

* Poster candidate for Dunning-Kruger

* Cheap and fast but low quality

* Single pointed focus. More likely to be a one-language savant

* Degrees are for chumps: this is a delusion.

~~~
asdf4123
>Cheap and fast but low quality

He didnt say fast, he said cheaper.

Purchasing book written by somebody who has 10 15 20 years of XP in industry
may, indeed have higher quality.

>More likely to be a one-language savant

Languages aren't like like pokemons, so you dont have to "catch them all"

Knowing more langugages outside the most mainstream like python js java and so
on, of course may help you, but it ain't requirement if you want to be good at
CS / SE.

------
LudwigNagasena
Universities are such a waste of time for the whole society.

Having lectures in 21st century is already pointless (we have video on
demand). And what is worse, we force professors to teach basic stuff to
undegraduates when they could spend time doing their research. And general
education requirements? Ugh.

Let's be real, most of programming-related jobs don't require knowledge of a 4
year undegraduate degree in CS even taking career progress into account (most
modern jobs that only hire college graduates don't require undergraduate
degree level knowledge).

~~~
bordercases
Is this true throughout a developer's career, that they don't require any
knowledge from the undergrad level to do better?

~~~
diminoten
As a developer progresses further in his/her career, it becomes more and more
true.

