
No CS Degree – Interviews with self-taught developers - Pete-Codes
http://www.nocsdegree.com
======
methodover
I have a religious studies degree.

I wonder if it’s prepared me better than a CS degree for the actual work I do.

What did I learn with my RELS degree? Hermeneutics— understanding ancient
texts written by lots of different authors in their original historical
contexts, often which has been deeply redacted over time. Anyone who’s worked
on any production code can see the benefit of being trained in that kind of
thinking.

The classes I took on theology and philosophy helped train my brain to
organize ideas. I had no trouble understanding object oriented programming —
Plato would’ve loved it too, I think.

Classes on ethics have come in handy too.

Oh and just, we did a TON of writing in college. Lots and lots of writing,
lots of research papers. I had to learn something new, read all about it, and
put together a document carefully explaining the idea, with lots of evidence
and citations. That skill has come in SUPER handy for everything from bug
reports to API clients, to customer-facing documentation, to internal
memorandums.

~~~
cr0sh
I just posted some rambling thoughts in this thread about not having a CS
degree (or any real degree) and being successful as a self-taught software
engineer.

I briefly mentioned how my non-formal studies of religion and philosophy have
helped to inform me - mainly in the context of "machine learning".

Your thoughts about how such studies apply to CS in general, though, are
interesting. I noted that there are extreme overlaps between CS and many, many
other areas of study that I believe both informs and is informed by those
areas (whether known consciously or not).

We may actually be doing a disservice to ourselves (and perhaps for the world)
by having (though rightly, I suppose) tying Computer Science so tightly with
that of Mathematics.

Of course, that could just mean that mathematics also in turn informs and is
informed by those subjects, I suppose...? Which is arguably true from what I
understand of mathematics and the history of mathematics!

I guess, though, is what I am getting at is that we - humanity that is - have
somewhat "enclosed" CS as a subset or adjunct of mathematics. Many don't seem
to understand or "see" that so many other subjects and topics are involved.
Not having that understanding may be hindering our advancement (both in CS and
perhaps even as a species).

~~~
seisvelas
From my (limited) knowledge, CS as a formal academic discipline largely
emerged from the renamed Applied Mathematics departments of universities.

------
hirundo
I'm 39 years into a coding career with no CS degree. But as a compulsive auto-
didact (probably a common syndrome among HN readers) it hasn't been a barrier.
Self-learning is a continual, daily requirement for coders. If you can
continue your education as needed for this job you probably also have the
skills and interest to learn from scratch.

I studied the same books and did the same exercises as my brother the CS major
and do feel that my training would be incomplete without that. But I don't
feel disadvantaged by not doing that within a class structure.

The main thing I lack is access to government jobs, which routinely require
credentials I don't have. But I've probably had a more diverse and satisfying
career as a big fish in small private sector ponds.

Not everyone can learn coding without externally imposed structure. But those
who can't probably have an ongoing problem in keeping up with the state of the
art.

~~~
blymphony
Not even government jobs are out of reach for you. I work as a federal
employee without any college degree doing web development with React/Node/AWS.

~~~
foobarandgrill
How does one find govt jobs using modern tech stacks?

~~~
astura
[https://www.usajobs.gov/](https://www.usajobs.gov/)

Here's one:

[https://www.usajobs.gov/GetJob/ViewDetails/539439100](https://www.usajobs.gov/GetJob/ViewDetails/539439100)

>a custom build of the open-source search engine Solr, a highly responsive UI
engineered on top of React, a high performance distributed brokerage system,
and cloud-based hosted services with Kubernetes in Amazon Web Services. The
primary programming languages are Python, Java, and JavaScript.

------
boblebricoleur
Since these articles seem to be putting a cash value on the word "success" (or
at the very least an instagram buzz value), I would point that IMHO, most of
this success comes from people skill.

You can have a degree or not, even bad developpers can hop from one job to
another, making more and more money in the process, given they're good enough
to manipulate the recruiters/clients into hiring them. Making money does not
mean your product is good,useful or well-designed. It means you're a good
salesman.

Congratulations, you're making money by manipulating someone into giving you
their money. Awesome ! Thanks for playing, please leave.

I guess the point of the website is to encourage people without a CS degree to
learn programming. That's great. The disctinction beetween CS graduates and
non-graduates seems to be very unfruitful IMHO so encouraging people to pick
up a computer is cool.

What I would sugget is to stop promoting sensationnal stories like the kid
that is making 15k$ a month. This is purely manipulative and dishonest. This
kind of journalism is plain wrong. Even if the number are true (which I highly
doubt) encouraging kids to drop out of high school to study CS on their own is
wrong. Getting a degree is the best chance you have to becoming good at it.
You can still be creative this way.

More, maybe encouraging good engineering (or craftmanship whatever you want to
call it) instead of instagram buzz and money would make tomorrow's software a
little less frustrating to use and a little less bloated.

I would love to see a story, just once, with the title "this guy made a
beautiful piece of software, and it's awesome"

~~~
hutzlibu
"encouraging kids to drop out of high school to study CS on their own is
wrong. "

What about encouraging people to learn CS on their own, who have no way, to go
to the university?

(lack of formal education, money, time ...)

And for those people usually what matters are not academic high valued
software, but to make a living. And many people dream about making a living
with IT, so they want to read such success stories, so thats why you see such
success stories much more ..

~~~
adamredwoods
At some point the saturation for (entry-level) programmers with degrees will
be enough that (entry-level) programmers who are self-taught will be in zero
demand.

~~~
klingonopera
Doubtful, you're ignoring the fact that self-taught (entry-level) programmers
cannot simply be replaced by (entry-level) programmers with degrees (or vice
versa).

Both have their up- and downsides, and treating them like equals is ignoring
that which makes them each of them unique.

There will always be a market for self-taughts, if you don't understand this,
you don't understand what makes a self-taught special.

~~~
sushid
What do you mean? Why don't you enlighten the rest of us about what makes a
self-taught special?

------
oneplane
It's fun when people assume a CS Degree means you are a developer. Practically
all development is self-taught, a CS degree is only handy for those moments
where you dig into some abstract theory, which in most development jobs hardly
ever happens.

You mostly spend (or waste) time on tools, frameworks and interaction (both
with humans and other systems). Lots of common development is rather mundane
compared to all the beautiful theory behind it. Which is not automatically
bad, but also doesn't require a CS Degree to get going.

~~~
jhall1468
CS is more than abstract theory. It gives you a foundation that you otherwise
are unlikely to get. Self-taught means learning things useful for your
existing job or things you find interesting. I'm work almost exclusively on
the frontend, but my CS degree gave me enough foundation that I'm fairly
familiar with compilers (I wrote one in college for a required course).

I don't necessarily enjoy writing compilers. But the fact remains that I _can_
write a compiler. I _can_ program in C or C++. I _do_ understand pointers.
None of this may hold any real value, but I wouldn't be able to do any of them
if not for the degree.

~~~
neilv
> _But the fact remains that I can write a compiler. I can program in C or
> C++. I do understand pointers. None of this may hold any real value, but I
> wouldn 't be able to do any of them if not for the degree._

I liked your initial point, but the argument weakens... People absolutely have
learned all the above things (and very well), on their own, outside of a CS
degree, and I bet you could've.

~~~
jhall1468
I wasn't advocating that people don't. There are absolutely _vastly_ better
compiler programmers than I am that have never taken a formal class.

My point was that I wouldn't have learned it _because_ I don't enjoy it. And
sometimes, professionally, we get to do stuff that isn't fun. The nature of
being self-taught is heavily biasing the things that interest you. College
forces you outside of the box. Outside of the box happens to be those things
for me, but they'll be other things for other people.

Sorry if that point wasn't clear.

~~~
trustyhank
As a self taught developer I can say your point assumes self teaching is all
about following your interests. This is simply not true. Self teaching is a
combination of following your interests and figuring out your areas of
weakness and attacking them. Part of my self learning involves browsing
college degree requirements or graduate programs to identify must know topics,
I learn them regardless if I have a particular interest. If college is the
only thing forcing you to think outside the box, what hope is there for your
long term learning.

~~~
jhall1468
My point assumes people bias their learning towards their interests. That
isn't an opinion, that's just human nature. That's not to say you _can 't_
learn things that don't interest you, but if you aren't going to do it
formally you certainly have to be driven by filling those gaps and most people
aren't.

Learning to think outside the box and learning about specific specialties that
you don't find interesting aren't even remotely the same thing. If you read
what I wrote, you'll notice the example areas I gave. None of them were
"thinking outside of the box", they were fields that didn't interest me.

The value they bring is that I learned a common language. I can talk to ML
engineers or Compiler Engineers in a common language because I have experience
in those fields that I wouldn't had I taken a different route. That isn't even
remotely a requirement for my field. It's just useful for discussions with
other people.

Maybe you'll spend hours and hours learning compiler design and implementation
so you can have a friendly conversation with a colleague at lunch, but I'm not
going to. Formal education forced that on me. That's been healthy for my
professional networking, but that's about it. I still consider it useful, but
had I skipped the CS degree I wouldn't do it. Nor would most people.

~~~
ColanR
It sounds like you're speaking for yourself more than for anybody else.

~~~
jhall1468
No, I'm speaking about human nature. Most people don't learn things they
dislike because it fills a knowledge gap. How many people do you know with
hobbies they hate?

It's natural to gravitate towards things that interest you. Some people are
driven by gaps and learn things regardless, most people do not. That's not
even controversial.

~~~
ColanR
I didn't know we were talking about hobbies.

~~~
jhall1468
That's literally what it is when your self-taught. You generally don't get a
programming job then learn to program.

------
derekp7
I sometimes feel like I have a leg up based on when I learned computers (self
taught mid 80's to early 90's). At that time, everything was more low level,
and there were fewer, yet higher quality books on the market. So I started off
with W. Richard Stephens, K&R, Pike, Sedgewick, and others that you either had
to really get it, or you wouldn't get anything. Not that this was the best way
to learn, but you knew coming out of it what you learned.

~~~
commandlinefan
I have a CS degree (in fact, I have both a BS and a Master's degree in CS) -
I'm still "self taught" in the sense that I learned to program the same way
you did, by reading Stevens, K&R, Knuth, etc. outside of my coursework. Don't
get me wrong - I learned a lot of interesting stuff: I never would have
learned calculus if it hadn't been a degree requirement, and it helps to
understand a lot of AI, but learning to program is sort of a "side effect" of
academic computer science.

~~~
arethuza
That was similar to my experience on a CS course - you were expected to do a
lot of development, but nobody really specifically taught you about it and you
were expected to pick that up by yourself as you went along.

~~~
mtberatwork
That's how my CS program was (late 90s) as well. You were expected to be
somewhat proficient already in C/C++ programming going into the major. Much of
the program was mathematics courses. It was brutal. They eventually saw the
high drop out rate and re-configured the major. I envy the kids who get to go
through the major now. The courses look much more interesting and it's
comprised of more actual software engineering coursework.

~~~
jgalentine007
I finished my CS degree in 06' and it still was more about math than
programming (C++, no Java). To graduate I had to take single/multi variable
calculus, linear algebra, vector geometry, discrete mathematics, differential
equations, combinatorics and numerical methods. When I started there were 600
in my class, when I graduated I think there were only 60!

~~~
javier2
Same, I graduated in 2013. nearly the entire class feel through in the
process.

The only thing I've never had any use for is differential equations. I have
for instance never worked with signal processing.

~~~
jgalentine007
Likewise. I did well in diffeq thanks to a really good professor. Sadly I
remember the least about it because I haven't had to use it since the class.

------
itsmemattchung
I think its pretty well known that you can work as a successful developer
without a CS degree. However , as someone who is currently working through a
masters in CS (after working in software the last decade), I would say that CS
courses (some, not all) provide invaluable foundation that would be difficult
to obtain (of course you can self study CS). Sure — you don’t need to know how
the OS works to write a web app that rakes in cash . But there’s something
beautiful about peeling back the layers of abstraction : you gain an
appreciation of how things work underneath the hood.

~~~
harianus
It seems like you’re saying it’s nice to know the layers of abstraction but it
sounds like you don’t use it in real life.

As a non CS degree developer I can’t really see anything that I’m missing
because of not having the degree. I have a successful business, get hired for
freelance jobs for a good salary, can build anything I want, ...

Would love to know what one would get out of having the degree versus self
study.

~~~
zepolen
An engineer with a degree and a contractor can both build you a bridge.

The difference is one will remain standing after an earthquake.

~~~
souprock
Engineers with degrees work for the contractors. They minimize materials and
cost. The result doesn't always remain standing, even without an earthquake:

[https://en.wikipedia.org/wiki/Florida_International_Universi...](https://en.wikipedia.org/wiki/Florida_International_University_pedestrian_bridge_collapse)

Building good bridges without an engineering degree is easy. You simply don't
minimize materials and cost.

------
docker_up
I work with a twenty-something year old right now. He graduated from high
school. Had his own non-tech company for a while after high school. Decided he
wanted to go into coding. One of the best damn coders I've worked with in 25
years. Gives the toughest, most consistent code reviews. He's the type of
programmer you can build a startup around.

In another comment a few days ago, I mentioned a 10x engineer I knew.
Graduated from high school. Went into the military. Came out and coded. He is
_the best_ coder I've worked with.

College education is not necessary to be a successful programmer. You do need
to have some predisposition to coding, but you definitely don't need a degree.

~~~
pmarreck
What languages do they use?

~~~
hutzlibu
Does that matter? They probably use the right language to get the job done.
Depends of the area of their work.

~~~
snoman
> Does that matter?

Yes.

While the evidence provided is anecdotal (that is to say: outliers exist in
successfully learning anything outside of a formal education), there are
languages designed to be more friendly and more fun for newcomers (Ruby, for
example) while others are designed to be translate more directly to the
instructions a machine might execute. More anecdotal evidence indicating that
one language might facilitate informal learning better might be interesting or
helpful.

------
cj
I'm an engineer. No CS degree. I coded for fun on various side projects from
2006-2012. I didn't consider myself very good.

I worked at a couple startups from 2012-2013. During that time, I became very
proficient in Coffeescript and a couple popular frontend frameworks. I was
very productive in terms of pumping out lines of code (that somehow resulted
in a working product).

However, I didn't know how to write a for loop. If you had asked me what
"for...in" was, I wouldn't have had a clue. And forget about asking me how
setTimeout has to do with the call stack.

The problem with being self taught, at least in my experience, is that you end
up being very strong in whatever areas it is that interests you, and whatever
areas of CS are relevant to the projects you're working on day-to-day.

In 2013, I began to realize my (glaring) deficiencies as a programmer. That
was the point when I started spending all my free time doing online CS
courses. They helped a lot with filling in the knowledge gaps that I didn't
even know I had.

The main reason I'm posting this is to give a shoutout to Project Euler.

Project Euler ([https://projecteuler.net/](https://projecteuler.net/)) is an
amazing way to test yourself (and learn) CS concepts. If you've done a coding
bootcamp and want to do a "gut check" to see how much you learned (or how much
you have left to learn), I'd highly recommend Project Euler.

(I'm happy to say that in 2019, I can write for loops all day long...)

~~~
Nevermindmyview
What kind of coding did you do for 6 years if after that time you couldn't
identify a for-loop?

~~~
arethuza
A Haskell developer?

~~~
hutzlibu
I doubt there are many Haskell developers (or one at all) without a academic
background ..

~~~
alephu5
I'm a self-taught developer with haskell in my arsenal, although that being
said I have an MSc in theoretical physics which probably helps me appreciate
the power of its paradigm.

~~~
hutzlibu
So you do have a academic background (especially math)..

------
mattmar96
There's clearly strong feelings in this thread. Whether or not a degree is
necessary, I think we can say there's two groups:

\- People who went to university, going through significant effort for their
degree, and want to defend that choice

\- People who _didnt_ go to school, perhaps suffering from a touch of imposter
syndrome, who want to hide their insecurity

I'm a 20yr old "self-taught" dev. I'm considering going back to school this
year. But its a tough choice. Things are going very well for me in the
professional world so far. I was in a CS undergrad program for a year but
didn't feel like I was learning as well as I was on my own, to be honest.

What I think I can say with confidence is theres not much point in arguing
about this. If you want to go then go. If not, don't. Why do we have to
prescribe a gospel on this? Let people decide what they want to do. Part of
why "self-taught" devs like myself often suffer from insecurity is people
shouting the absolute necessity of a degree. I don't see it.

~~~
munificent
_> There's clearly strong feelings in this thread._

It's always like this when it comes up, which is fairly often here, and I
think you're right to point this out. It's an emotionally loaded topic, which
means it's a hard one to actually get useful data from.

I think there's a couple of things going on here:

The path someone takes to get where they are is a huge part of their identity.
So when they look back on their own history, they want to feel that that path
is a good, valuable one because it implies that they are valuable people. So
everyone who doesn't have a degree has an incentive to feel it's not
important. Likewise, everyone who has a degree wants to feel it is.

The thing is, they're both right. There are many many paths and almost all of
them are worthwhile human experiences. Many of them even lead to being a good
software engineer. (And of those that don't, they still often lead to being a
valuable human in other, often more important ways.)

But the reason it's useful to write about this stuff is for people that are
looking _ahead_ and trying to _choose_ a path. Those people want to know the
_odds_ of each path and how likely it is to work out for them. Unfortunately,
a long list of anecdotes is really hard to synthesize into that. It's like
trying to figure out where to eat dinner when every single restaurant review
is five stars.

I don't have good data either, but if you're trying to pick your path, I would
think about your personality and how that's likely to interact with your
choice:

Not going to school gives you more freedom to explore your interests and
choose a unique, idiosyncratic path. If you are driven and focused, you can
get farther down a road than most others will because you have the freedom to
focus on areas where you are passionate. If you want to stand out, it's easier
to do so this way.

At the same time, if you aren't self-directed and passionate, you can end up
meandering and going nowhere. No one will tell you what to do and it's easy to
end up doing nothing, or just dabbling a little in a million things. All of
the onus to create structure and discipline is on you.

School will give you a structured environment to learn in. It gives you a
curriculum crafted by experts so you will be introduced to topics in a
reasonable order and you'll be shown things you might not have realized are
important. You'll also absorb much of the culture and tribal knowledge of the
field. However, this is skewed towards academia, and if your goal is
ultimately industry, this may not be pure win.

Personally, I think going to school is generally a good, safe bet. You'll
learn a lot, have a good experience, and meet a lot of people. You'll take a
bunch of _non_ -CS classes that will round you out as a human. Even though I
dropped out, I got a ton out of my limited college experience, mostly _not_
related to programming.

Not getting a degree is a higher variance path. You may blaze a trail and end
up somewhere exciting and unique. You could be the next Bill Gates or Steve
Jobs. Or you could end up flipping burgers, or underpaid because you're at a
company that values degrees.

~~~
jonaswouters
This is the best answer I've seen.

 _Not going to school gives you more freedom to explore your interests and
choose a unique, idiosyncratic path. If you are driven and focused, you can
get farther down a road than most others will because you have the freedom to
focus on areas where you are passionate._

This is me, but I know this is not for everyone. I would advise going to
school to make it easier in the long run. Passion for your work and the focus
to pursue it is very important to get somewhere.

If school worked like it does today, 20 years ago, then maybe I could've
finished it.

------
Pete-Codes
I'm learning to code at the moment (Python this summer after learning the
basics.)

I kept talking to developers online to find out about their backgrounds as I
don't have a CS degree. I figured as I was already asking people how they
learned to code I might as well write up some proper interviews and share them
with other people. This way I can scratch my own itch and stay motivated as
well as sharing motivation with other people.

You can check out my traffic/revenue at my open page which I have started from
day one instead of waiting until big numbers www.nocsdegree.com/open

~~~
balabaster
Thanks for this. I began programming when I was 8 on a Sinclair ZX Spectrum
48K from books I liberated from my Mom back in 1983. I grew up as the internet
was just becoming a thing, communicating with other would be developers and
hackers on IRC channels. I still haven't lost the bug. I'd like to say my CS
degree studies were useful, but they were hopelessly inadequate and so
constrained and tedious as to kill any further interest in formal education. I
ended up dropping out and continued to learn informally and build a successful
career over the next 23 years.

It's inspiring to read about developers who are also informally educated. It
brings a sense that people like us are more common than we think and that
we're really not alone. They're also finding great success despite the
prevailing wisdom that you can't make it without a degree. People like that
are proof that you can.

~~~
arethuza
Well, I started on ZX-80 at school then did a CS degree which I didn't really
_get_ at first so I struggled in the first year - but in subsequent years I
came to really enjoy the more abstract and maths oriented parts of the course.

I don't know where the idea that a CS course is a good practical training for
a career in development came from - I'm pretty glad the course I did included
almost nothing that was attempting to "train" you and focused mostly on the
absolute conceptual fundamentals (from the electrical engineering side through
general engineering maths to specialised CS subjects) as well as letting us
loose to actually _build_ stuff with minimal supervision but careful
evaluation.

[The thing that _really_ got my attention was the lambda calculus course where
the lecturer mentioned the S & K combinators, of course the same course
covered the Y-combinator!]

------
craigsmansion
"This 22 year old self-taught PHP developer earns $15k a month and lives in an
Austrian farmhouse"

I mean, f*cking seriously?

Yeah, that's harsh, but such a headline's an insult to those with a CS degree
and serious self-taught developers alike.

To those who made this stay on the front page: given you're competent, you
already make the same or more money as those with a CS degree, even if you
might know less about the fundamentals, get over it! Upvoting cruft like this
isn't going to vindicate your choice.

~~~
MichaelApproved
1) You're allowed to curse on the internet. HN doesn't have a content filter.
Saying "f*cking" reduces the impact the curse is supposed to have. If you feel
it's appropriate to curse then just fucking do it.

2) Not everyone does well in a formal school environment. This site shows
people that self-taught can still earn good money.

3) Even if a CS degree would increase the Austrian's earnings, how much would
it increase it by? Would it offset the cost of the education? Would it offset
the wages earned during the years he was in school?

4) People don't always upvote something to the front page because they agree
with it. Sometimes people do it to encourage discussion around a topic.

~~~
craigsmansion
regarding 2 and 3. My complaint isn't about having or not having a CS degree,
I didn't even get that far.

It's about the Taboola-like quality of the headline. They're an insult to
one's intelligence. If I want to be insulted on the Internet, I'd go
elsewhere.

~~~
tiborsaas
Which part is insulting? That he's young? That he's writing PHP or he makes a
shitload of money? I'm envious, I admit it, but I don't find it insulting.

------
ggm
Recursion and Abstraction, like love and herpes, are a form of disease which
once caught cannot be lost, but can be shed, and so spread. Your brain is
wired to look for both opportunistically, in any problem.

What a CS degree does, is teach you how to apply the infection. Some CS
degrees are like innoculation against them and you come out with a degree, but
no grasp of the fundamentals. Others, you learn so much you become a vector of
the disease.

~~~
vegiraghav
recursion overrated imo.

~~~
ggm
iteration gets repetitive.

~~~
commandlinefan
recursion is full of itself, though.

------
cmrdporcupine
I have no CS degree, and I've been in the industry in various forms since the
mid-90s, software developer full time since about 2001 or so. I have no CS
degree because I just did not have the math grades to get entrance to
university.

I've been working at Google as software engineer for 7.5 years now.

I guess you could say this is success, but I would not recommend this path;
even after 20 years, there's hiring managers or recruiters that won't look at
me, and coworkers whose behavior changes when they find out. Impostor syndrome
can be an issue.

At my age with family mortgage kids, it's too late and pointless to go back
and re-do all the HS math etc. I'd need to get into a CS program. But I do
wish I'd done this. It took me a long time to elbow my way to where I am now.

~~~
khendron
> there's hiring managers or recruiters that won't look at me, and coworkers
> whose behavior changes when they find out.

I am very surprised to hear you say this. My background appears to be similar
to yours (no CS degree, programming full-time since the mid-90s), and although
I did see some resistance in job interviews for about the first 5 years of my
career, once I had enough experience under my belt nobody cared what my
education was. I've never encountered the type of elitism you describe. Maybe
it's a Google thing?

~~~
dentemple
I've had a similar experience to other poster, but relative to tech stack.

I learned .NET and Javascript early in my career. Every single job interview I
had at a .NET shop brought up my lack of a college degree as a possible
barrier to "handling" or being "good enough" for the position (their words).
Not a single one of these companies invited me back for another interview.

Never had the same problem with JS, and now I happily work as senior-level
engineer (using Python and Javascript) while encouraging other more junior
engineers to take up and pursue the JS ecosystem.

U.S. East Coast.

------
bungie4
If I had a gray beard... 30+ years as working dev.

I've never taken a 'computer class' while in school, although I've taken some
instruction while working.

Entirely self-taught. I do this because I like it. Back in the day, I never
played video games, I taught myself, and wrote, code. To this day, I don't
play video games.

It's been my experience that hiring degreed CS graduates may not be the best
course. Theirs a big difference between being 'book-smart' and real world
smart. I tend to give preference to guys who write code for fun over those who
are in it for the money.

Case in point, we just brought on a high-school student who is about to start
his comp-sci degree. He has written code for years for fun. He's just rocking
it. I'm sure he'll be invited back each summer until his degree is complete
and will likely be offered continued employment after.

~~~
pmiller2
If that works for you, then great, but you’re locking yourself out of an
entire world of software professionals who only code for work. I suspect those
who don’t code outside work outnumber those who do.

~~~
jhall1468
I agree 100%. I used to code all the time, prior to my CS degree, in High
School, etc. But now I'm a professional programmer. I don't code outside of
work, because coding is what I already do 4-6 hours a day. Now that it's my
job, I've taken to other hobbies (and raising a family). I love what I do, but
I don't live for it.

~~~
reallydude
I've written code for fun since I first taught myself how to do it. After
decades of work, I still do it for fun.

~~~
jhall1468
Which is fine. But that doesn't mean you should be favored in an interview and
it certainly doesn't mean you're a better programmer than I am. My point was:
favoring people that code for fun is just as bad as favoring people who only
received formal degrees.

~~~
reallydude
I didn't get that "point" from your post. I was just trying to assert the oft-
ignored type of person (I am not an aberration) that still likes coding, after
a lifetime. Even when I am inevitably confined to a hospital bed, I will code
in my head.

------
typon
I think the biggest difference between successful devs and unsuccessful ones
is the hunger for constant learning and improvement. You can lack that hunger
if you have a CS degree or not. I've observed this at my company and others
I've worked for as an almost constant.

~~~
neop1x
yes, completely agree with this. To be successful, it has to be your hobby and
you have to be hungry to know more and improve. It is also required anyway
because CS and technologies changes rapidly. For example it is not common to
write UI apps in Tcl anymore. :) but it is now more common to use LXC and
Docker instead of virtual machines and shared library versioning hedeaches.

------
EnderMB
I have a CS degree, and while I agree with the general idea that you don't
need a CS degree to be a successful programmer I'd say the biggest barrier to
entry is in the start of your career - both getting a job and keeping that
job.

I've worked with loads of self-taught developers, mostly from tech/coding
bootcamps, and I've seen a lot of people burn themselves out due to a number
of factors:

1\. Bootcamps are hard, but suddenly these developers find themselves in a
harder environment where 12 weeks of coding experience might not be enough to
get them out of a problem.

2\. Bootcamps cost a lot of time/money, without the option for a student loan,
so many people put themselves into debt to switch careers, and that added
pressure is a lot for people - especially when they've been sold a lucrative
career and find that a company has hired them because they are cheap.

The CS knowledge aspect is largely irrelevant, because many developers can get
by quite happily without ever using a linked list or priority queue, or
knowing anything about quicksort, merge sort, etc. For most projects where you
need to merge k sorted arrays, concatenating them and running the standard
language sort function is good enough.

IMO, the problem has never been one of skill, because many industries have
developed skills on-the-job or with time spent in industry. Where a CS degree
comes in handy is in giving a student a structured approach to learning over a
respectable amount of time, and offering a step above the entry-level barrier
of entry.

------
crims0n
While we are on the subject, if you are looking to self learn CS can anybody
comment on the quality of this program? [https://github.com/ossu/computer-
science](https://github.com/ossu/computer-science)

~~~
Kaveren
fringe opinion. video courses in non-visual topics are a complete waste of
time, made because the masses can't read and are lazy. there is a
corresponding book better than the course available for everything listed.
good books will have good exercises and solutions available.

video courses just won't teach as much. very easy to find best book available
for each subject. even going partway through a book will offer more. can skip
topics, look at syllabuses for classes offered in higher education that use
said book if you want to know what to skip (many syllabuses available online).

for example, instead of taking the operating systems class you can simply
actually read either of the two books suggested by this very page.

------
nevi-me
I'm turning 30 this year, a professional accountant and started out as a
hobbyist, but work in data engineering consultancy as middle management,
leading efforts into getting our team to adopt Rust of all languages.

I've found being willing to learn more to help me out, my breadth of knowledge
is good enough that in many languages and concepts, I can hold my own against
CS graduates.

I think knowing what you don't know is important, because you get incentivized
to expand your knowledge. I'm currently studying Maths and Stats, because
they're a good base for data science, and where I want to go in my life out of
corporate.

The value that I bring to the table is no longer fluency in about 7 languages
and a skill to learn more quickly (I've done obscure things like reverse
engineering 'complex' accounting rules written in COBOL). What I bring to the
table is the ability to solve problems using my financial expertise and
technology.

So if anyone's reading this, don't be intimidated by "coding". I see writing
software as a natural extension of what's on my mind, using what I understand
technology to enable me. So, stretch your mind, it's a very powerful thing.
Have faith in yourself, and do great like the people on No CS Degree

~~~
tracker1
In the very early days (60's-80's) when the needs for programming outweighed
the supply... Most programmers were being cross trained from other
professional disciplines, such as accounting.

------
xivzgrev
Came for interviews with self taught people who are now full time developers.

Found interviews with self taught people who hacked together websites and
built businesses.

Admirable but misleading. Suggested title: “No CS Degree required - interviews
with entrepreneurs who learned to hack code”

------
AngeloAnolin
Not sure if you would consider a two year associate degree in computer
technologies as a CS degree because pretty much what I recall from my studies,
we were working on understanding the computer parts and components, doing some
typing (data entry exercises) and understanding what software and productivity
suites are. We did embark on some nifty console programming and writing batch
files, but never fully immersing into the bits and pieces of what makes up
software (algorithms, binary, lists, etc).

I work professionally as a software developer for quite a while, and what I
have seen in the industry is that you gain more merit when you are able to
ship product(s) that people will use (or perhaps automate a process that was
previously done in a manual manner).

Yes, you can get past the initial gates of hiring qualifications (such as
having a CS degree certificate) as well as the coding tests that lots of
companies use as a gauge to test your technical capabilities. But no amount of
CS degree or certificate would be enough to patch for example when you are
dealing with real world software issues.

------
w8rbt
I wrote a lot of software before I ever took a CS class in college. The only
things you'll get from a CS degree are the ability to prove problems are NP-
Complete, learn how to do Dynamic Programming, reductions from one problem to
another, Linear Programming, Graph Theory, and a bunch of other math tricks
(random hashing, fast modular exponentiation, The Gauss multiplication trick,
etc.). You don't need _any_ of that to write a Chrome Extension.

If you need software to scale to hundreds of millions of users, then you
probably need people who have CS degrees to think about your hard problems and
how best to optimize them and which ones have no polynomial time solutions for
all inputs (problems to be avoided or worked around somehow).

I can do RSA by hand (on small messages), quickly tell (with only pencil and
paper) what 2^1027 mod 3 is and do Euclid and Extended Euclid by hand to find
multiplicative inverses (in one pass). But I can write code that runs pretty
well, too, and I can do that with or without a CS degree. So can most people.

------
jandrewrogers
There are some interesting exceptional cases where a CS degree can be a
disadvantage for developing advanced software applications, though you still
need to know CS.

For example, the conceptual framework for reasoning about distributed systems
provided by chemical engineering is superior to the traditional CS version
when applied to software systems, and more mature. This has been a persistent
advantage over the course of my career designing scalable software. And it is
much easier for a chemical engineer to learn computer science than the other
way around.

I've come across a few other examples of this in computer science,
particularly as it relates to complex systems design and behavior, and not
just in relation to chemical engineering. Extremely complex real-world systems
as a model are relatively new to CS but have highly evolved solutions in other
disciplines out of necessity. There is still much value to be had in learning
CS from an unorthodox perspective.

------
bdcravens
No degree here, but it was a unique time in the industry.

Long story condensed: I grew up dirt poor. Went to college. Got my first
computer that could get on the Internet (1998). Wasted time online, missed
classes, lost financial aid. Ended up going to work for local ISP doing tech
support. Quickly moved into web work, and then development. (mostly
ColdFusion) This was late 1999, when things were booming and everyone was
hiring.

I took a 6 month contract - low on the contracting end of things, but great
money for me. Next job was in HR department attached to the airline industry,
which was a good job even when the "dot com crash" was occurring. That job
ended do to effect of 9/11 on stock prices, but by then I already had a couple
of years of work experience under my belt and was on my way.

Today: director of technology for a small company (fancy way of saying I'm the
lead developer and lead architect)

What was true for me then is true for many developers today: some are very cut
out for this. Looking back, I've always been a programmer; it wasn't a trade
someone told me to go to because of the income. That's why I think some
bootcampers succeed, and some fail: truth be told, this industry isn't for
everyone (alas, I saw many leave the industry in the early 2000s who went on
to do accounting or management or car sales or whatever they're a better fit
for). Those same students, and myself, would also succeed with a CS degree. I
think the lack of one is a matter of circumstance, not a formula for success
or failure.

I will say that there are certain jobs I'm not necessarily equipped for due to
some missing foundational information. Those situations are the examples that
everyone goes to, but the reality is, the world is bigger than SF and FAANG.
(And even at the FAANG's there's plenty of Python, Ruby, and JavaScript
slingers... the only time they may have used their CS degree was to get past
the ego-stroking whiteboard interview)

------
kabdib
40 years writing software for a living, dropped out of college after 3 years.
I'd taken all the CS that I could, and took graduate level courses my last
year because I had run out of other interesting classes. That final year of
school just didn't look important compared to getting my dream job at the time
(writing games for Atari).

No real regrets, though I had (and still have) a sense of inferiority that
drives me to study. Last year I threw out many boxes full of papers that I've
read over the years (they're mostly available online now). I have bookcases
and bookcases of CS-related material. I've _read_ Knuth, etc. (okay, still
going through Vol 4...).

My only regrets are not getting a better math background (a decent calculus-
based probability and statistics course would have helped). I took linear
algebra in school, but didn't really get it until I started doing graphics and
then I needed much more than my college course provided anyway.

Tried going back to school a couple of times. Work always got the better of
me. Finally I realized that the degree just wasn't important to myself _or_ my
employers, and that I wouldn't learn anything anyway. Lack of a degree has
never been a problem when finding a job (except once, and I actually felt
pretty good about that one . . . maybe I'll tell the story some day).

I think the key to long-term success (whether you have a degree or not) is
continuing self-education. I try to keep up by reading papers and digging into
promising new tech. The industry is bigger and moving faster these days, so
you have to pick and choose what to stay current on. It's a good idea to
branch out anyway (if you read ten papers on storage, networking or graphics,
read a couple on something unrelated, like AI or queuing theory or dig into
biology or astrophysics -- stretch your head). Helps to do different types of
projects, too.

I plan to work until I drop; I feel fantastically lucky to have found a career
that I enjoy this much. My father-in-law retired from writing code at age 75,
I think I can go longer.

------
randall
Much like CJ (upthread) I'm a completely self-taught developer. I started
building apps to scratch my own itch, and eventually found out the only way to
accomplish what I wanted at a larger scale was to build a company. Last year
we sold to Facebook, and I continue to develop software as well as manage a
team working on our vision.

I'm writing mostly to hopefully let others know you can be self taught and be
super impactful.

I've dealt with a lot in my life, and our ride wasn't smooth sailing --
[https://twitter.com/randallb/status/1110669172487286784](https://twitter.com/randallb/status/1110669172487286784)

But regardless, now I build things that are high quality and fun.

------
tptacek
25 years in. No CS, just 1 semester of LAS at UIC. Apart from the obvious
stuff, have worked on distributed systems and routing protocols, operating
system kernels, and compilers. I feel like having to start my career in C
probably helped me a bit.

------
jtdev
I’m a programmer who studied information technology (with a number of
programming courses, but zero true CS coursework) first at community college
and then at a budget brand state college. I’m now a senior developer/engineer
and frequently work on projects alongside CS graduates from prestigious
schools who seem incapable of completing even the most simple coding tasks -
this is the case nearly 100% of the time in my experience with these CS grads.
That said, I’m sure there are many such graduates that are more than capable,
but a persons degree and where it’s from doesn't seem to indicate much other
than socioeconomic background.

~~~
mywittyname
> equently work on projects alongside CS graduates from prestigious schools
> who seem incapable of completing even the most simple coding tasks

It's possible there's selection bias going on. The wheat end up at the Apples
and Googles of the world and the chaff end up working with you.

This isn't intended to be an insult. People who attend ivy leagues are given
such a huge leg up that even an average graduate probably make it further than
most of us plebeians.

~~~
jtdev
As I said above, these are “CS graduates from prestigious schools” - including
ivy league - that I’m referring to and working alongside.

~~~
mywittyname
Right...Which is why I was pointing out that perhaps you're getting stuck
working with the dregs of the ivy leagues, and that you're experience may not
be representative due to bias.

------
ricardo_ramirez
I have worked with some people that are self-taught that ended up being
incredibly good. However, I still bias myself a bit to people coming from a CS
background because of other non-knowledge related reasons. Examples.

They are more ok with doing 'not fun' stuff, because they have suffered doing
a bunch of homework. At work, maybe a percentage of the job is fun, and some
things you need to power through. Tuning logs, painfully stepping through the
code for the 110th time to find the erratic bug, or boring documentation, also
part of the job.

They are less inclined to just copy-paste a solution that you found on
StackOverflow and more agreeable to go into the R&D mode of finding the right
algorithm. This can be a blessing and a curse.

People that have been through several years of education are more inclined to
follow a schedule. We are very relaxed at Silicon Valley and yes some people
do their best work from home, but sometimes you just have to be here. College
helps form some of these habits.

Last, a degree comes with a lot of soft skills that Universities just throw in
sometimes. Communication skills, the ability to summarize properly, grammar
and spelling .. not required for a coder but definitely useful for someone
that wants to grow into a career into software, eventually you need to
interact with Product Managers, Business, Customers, and those unrelated-to-
the-job skills start becoming very handy.

~~~
sydd
I don't buy into the argument that you need to have a degree because getting
one is tedious. There are plenty of places in life that will teach you this
lesson. I work at a coding school, we have lots of students that did things
that make a university look like a joyride. Try doing a tech support job for
years 10+ hours a day, now that is tedious.

------
OscarDC
There's a specific case in France, where most developpers I know don't have a
proper "CS degree" but have a more generalist "engineering diploma".

I can even speak for myself. I didn't learn to code at school much , did some
bash and C here and there but that was not the point of my study. We mostly
had math, physics and electronic-oriented courses and more precisely in my
case a lot of telecommunication courses.

Still, for a first programming job, engineers (as in those with an engineering
school diploma) are often preferred to people with a CS degree, which did a
lot more programming that we did.

I would guess that it mostly has to do with the reputation of both the schools
and the students from there. When it comes to STEM, engineering school is seen
as much more prestigious than studying in a university. Young people with
higher grades wishing to make a career in programming more often than not tend
to choose the former over the latter - even if it means less focused courses.

And yet having said all that, I wouldn't say that french developpers are worse
in any way than developpers from other places. Even if most of us learn to
truly program at our first job.

I'm not at all saying that a CS degree has no point, but as long as you have
the minimum knowledge about the field when starting, it's very efficient to
learn on the job the specificities.

------
dboreham
I've been doing this stuff professionally since 1982 including some stints at
what might be called a fairly high level (household name companies in silicon
valley). For all the people I've met/worked with, where I ended up hearing
their education background, I'm absolutely sure no more than 20% had CS
degrees. I also feel like there is a correlation between the extremely good
people I've encountered, and _not_ having a CS degree.

That said, most folks did have some sort of science-related degree. People
with no higher education aren't unknown, but quite rare ime. People with
higher education only in non-science fields have also been quite rare. I
haven't run into many shit hot coder history majors, frankly, but those I have
encountered were so smart I'm certain they could have aced any degree they
took the time to study for.

Last thought: architecture, design and coding seem more akin to creative
endeavors such as writing a novel or play, making movies, that don't seem to
be easy to "teach". e.g. nobody is marveling that J.K. Rowling doesn't have an
English Literature degree (French, to save you checking..) and nobody is
seriously trying to "teach" folks to write the Harry Potter series.

Disclosure: EEE major

~~~
godelski
> I also feel like there is a correlation between the extremely good people
> I've encountered, and _not_ having a CS degree.

I'm willing to bet there's some selection bias here. If you got a job and
don't have a cs degree it's probably because you're so good you don't need a
degree. The skills outweigh the lack of a degree, which means higher risk. The
piece of paper sets the bar lower because there's more trust and thus lower
risk.

As someone getting a graduate CS degree and coming from a different degree I
notice that there's definitely Swiss Cheese knowledge. I got here because I
could code (half my peers can't in their first year of graduate school. This
surprised me a lot!). But on the theoretical side they have less Swiss Cheese
knowledge than I do. It's a weird dynamic.

------
arvinsim
Honestly, as someone who laboured in a CS degree and work as an employee for
10+ years, I feel frustrated that I feel stuck.

It feels like that the reason that I am still working in mediocre jobs is
because I don't know how to generate ideas. Or how to make prototypes using
design tools. Or how to go about as an entrepreneur.

It's both inspiring and deflating at the same time to people, especially young
people, succeed in things that I have dreamed about when I was young.

------
bluedino
Between the requirements of a degree and silly things like "10 years
experience with X" for a CRUD develeoper, I have a hard time getting through
HR when applying for jobs. If I can get to a technical manager or another
developer, we can talk shop and show code and I'm good.

Just remember it comes down to who you know or who you can meet, you might as
well have worked at Burger King by the way some of the filters work.

------
api
I fall into this category. I have no CS degree. I'm the author of numerous
things with the best known probably being the ZeroTier network virtualization
engine.

I got my first programming exposure when I was 5 or 6 on a Commodore VIC-20.
By 10 or so I was doing 6502 machine language on a Commodore 64. I went from
there.

I have a BS degree in biology. I studied that because I wanted to study
something new, but more importantly because I was interested in AI. I always
thought (and still think) the best way to learn about intelligence is to study
the only existing examples of intelligent systems. These are found in biology.
The University of Cincinnati let me do a little bit of a "design my own major"
thing so I designed one in "organic intelligence" with classes in genomics,
evolution, neuroscience, and ecology. Those are the four scales at which
intelligence is found in nature.

I work in computers now (founder of ZeroTier) but still follow AI and biology
avidly and would like to return to some of those areas of study someday. I
also find that my study of biology deeply influenced me as an engineer and the
types of systems I design.

------
fapjacks
I'm self-taught, but the thing about being self-taught is that I enjoy
learning. Not like whatever some random person says "I enjoy learning" in a
job interview, but actually enjoy it such that I've taught myself proficiency
in a few different fields. One of the things I decided early on was that I
didn't like the thing that is always implied when people say "self-taught" and
so over the years I've procured the services of 300-400-level and postgrad
tutors of the fields I'm interested in (CS, math, and molecular bio) to help
"fill in the holes". It's admittedly a bit weird approaching someone to tutor
you without actually being enrolled somewhere, and of course you need to be
located near a university, but this has been so helpful for me that I highly
recommend this to any of my fellow autodidacts. If you do a little shopping,
you can find _amazing_ tutors that won't cost very much at all (and I dunno if
it's normal to tip tutors, but I'm a big tipper in general and this has always
paid big dividends).

------
whytaka
I had been a graphic:web designer since I was 14 years old. I taught myself
Photoshop and Dreamweaver and became proficient with creating layouts with
frames, tables, and of course eventually css.

I graduated from college with a degree in Philosophy where I was focused on
logical systems. I recall one of my favorite professors being intrigued to
know whether I could program and disappointed when I confessed that I only did
the design side of web development.

I of course had a strong interest in code, having gone through interactive
online python tutorials but I wasn’t able to make a the leap into becoming a
developer.

The wall, I realized, was my lack of knowledge in the unix command line. Once
I learned about bash, ssh, and setting up basic web servers, my learning
skyrocketed.

With a background in logical systems, I was able to grasp the model of
computing very rapidly. While I cannot claim to be advanced in algorithms or
data structures, I feel comfortable being able to develop solutions that work.

~~~
asdfman123
With your background picking up algorithms and data structures shouldn't be
hard. It's just a matter of studying them like anything else. (I program and
my degree is in science.)

~~~
whytaka
Thanks! I hope so too. My current learning material is “Designing Data-
Intensive Applications” which seems to involve some data structures.

On algorithms, I think being able to use the work of others is already very
empowering. Perhaps one day I’ll get into it deep.

------
rsuelzer
I have no CS degree. I see a lot of these comments poo-pooing the skills of
people who taught themselves to program. From my experience, some of the best
developers I have worked with do not have CS degrees. I have given many
interviews where candidates could explain what an abstract class is, but then
when it came time to actually write code they could not even build something
that compiled, or their code was really messy and unorganized because they had
no concept of maintainable code since they have never had to do anything other
than academic exercises where style apparently is unimportant.

It's like they memorized some books and definitions but never actually had to
build anything.

The developers that didn't have a formal background in CS almost always did
poorly on the technical questions, but I found about half the time it was
simply a lack of knowing the terminology. She might not know what a monad is,
even though she implemented in her own code.

I have always been into computers, but didn't really consider it as a career
until I got a job that required me to do a lot of data entry, so I started
teaching myself how to automate things. I turned a 40 hour per week data entry
job into a single button click on Monday. This meant I had a bunch of free to
time to develop my skills and work on additional programs that would help our
organization. I fell in love with programming. I eventually interviewed for a
position but failed the technical questions miserably, I didn't understand a
lot of the terminology like "linked list", "adapter patern" or what "bubble
sort" was. So, after that I got a book just about programming interviews, and
realized I had actually implemented most of the practical things in that book,
I just didn't know the technical name for it.

After I read that book I interviewed at another location and was immediately
hired. The only difference was that I took maybe a week to learn some terms.

~~~
kqr
I like to think of it as there being two aspects to software engineering:
there's the abstraction side, and then there's the craft side. CS graduates
tend to be heavily weighted toward the abstraction side, and weak at the
craft. Self-taught ones are weighted the other way around.

------
motivated_gear
I really appreciate this as a self taught dev with a full time full stack job.
I worked my ass off for 3 years, taking online courses, building product after
product for people to actually use and ultimately landing a well paying and
satisfying job. Things like this make imposter syndrome a little less nagging
in my every day life.

~~~
Pete-Codes
That's awesome! Honestly, I have interviewed tonnes of people already that are
doing great with no degree. A friend of mine just got a job after taking a few
months out to learn from scratch with Udemy, etc

~~~
motivated_gear
Amazing! :D

------
glangdale
Another one of these articles. For novelty, I'm expecting to see an article
about the novel idea of there being successful developers who _do_ have CS
degrees. It can happen!

The site seems to lean pretty heavily on contradicting the remarkable idea
that you might need a CS degree to slap together a website and write some
lines of PHP.

But that being said, there's a lot of evidence that some people who don't have
CS degrees can do great programming and even great CS, and a lot of evidence
that some people with CS degrees can't code their way out of a wet paper bag.

I'm not sure why everyone feels the need to run around with their dresses over
their heads every time this comes up; although it does provide a good venue
for people to indulge in the harmless pleasure of praising oneself on HN.

------
duckqlz
Even with a degree the learning process NEVER stops. Most important imo for
new developers (self taught or otherwise) is to learn from multiple
disciplines. CS without math and statistics is basically mindless data entry.
Adding in high level concepts like category theory not only improves you as a
coder but deepens your overall understanding of concepts that will allow you
to excel in any language or atmosphere. While I think that a lot can be gained
from a formal education there are other options provided someone is willing to
put in the work. I have done work before getting my degrees and work after and
in the end what sets coders and engineers apart is their “portfolio” which is
generally a display of their side interests and their willingness to keep
learning.

------
mncolinlee
I have no CS degree, but at the time I was in college, CS programs seemed
embarrassingly poor compared to today. I took a few, elective CS courses and
did CS research back then and remember numerous graduate students trying to
cheat off of the undergraduate English major.

I'll say this. There's advantages starting both ways. By starting from a CS
background, you're likely to get a formal education into concepts and
terminology that might seem boring otherwise. By starting from a non-CS
background, you begin with the most important skill a programmer requires--
the ability and passion to teach yourself new technologies and concepts.

Any developer who begins with a CS background can learn to be self-taught.

Any developer who begins without a CS degree can learn algorithms and advanced
concepts.

------
flor1s
In my opinion,

1\. You can be highly educated in a subject without getting a formal degree.

2\. A CS degree is not a programmer/developer degree. CS is to programming as
art is to drawing.

3\. Having knowledge of CS might mean you can more easier adopt to a variety
of roles (front-end, back-end, systems programming) but comes at a cost that
you probably have less practical skills than someone who is specialized in
this (because of self-education/going to a trade school/learning on the job).

I have a bachelor in informatics, master in CS and PhD in informatics
(technically informatics is not CS, but there's a lot of overlap), but I would
say I gained most programming/development knowledge through internships and
working on personal projects.

------
ozim
In my opinion CS degree gets bonus when hiring because it weeds out people
that are not interested. With 160 people in same year as me starting it ended
up with 90 people getting bachelors, and maybe 60 masters. Then out off all
that graduated maybe 30 went into software dev, others went into testing and
support roles, maybe even into other stuff not CS related.

If you are starting career, how are you going to convince someone that it is
not passing fad for you, that after 6 months you would say "ok I am done, I am
bored with it". There is no way to show people how much time you invested in
your self study. It is not about what you know, it is about other people
getting to know so they can hire you.

~~~
rvz
> There is no way to show people how much time you invested in your self
> study. It is not about what you know, it is about other people getting to
> know so they can hire you.

Your point still holds true in this industry when you get as much as 300+
candidates applying for 1 graduate job. As much as I hate it, unfortunately
some companies would hire internal candidates than external ones even if they
were highly qualified, because they are highly networked within the company.

Having _just_ a CS degree in 2019 is not enough to market youself as a better
candidate. It is meerly seen as a minimum expectation from larger companies.

------
kitchenkarma
Typically CS degree means that you can finish something regardless if it makes
sense or not. That skill is in demand in large corporations that require
people to follow stupid processes and complete tasks that don't reflect on
what are the actual needs. Of course there are good CS degrees, but these are
not as common as one thinks. The purpose of universities was to gather
knowledge and pass it on where it was not possible otherwise to do so. These
days people have open access to all kind of knowledge and universities are not
as much important as they were. If company lists CS degree as a job
requirement, that for me is a good indication of a place I don't want to work
in.

------
b_tterc_p
I’m self taught and do data science for work and game dev for hobby.

Functional programming has seemed much easier to pick up without formal
teaching than object oriented. The latter appears to have many more unknown
unknowns.

e.g. in game dev I did not know that static methods and objects existed, so I
built a bunch of dictionaries in an instance of a single use class to store
some data for a game. It works, but its garbage.

But hey, all things are discoverable eventually, and I would argue going
through the experience of why things are nice before learning they exist has
some merit to it. I don’t blame companies which require credentials though.
Hiring is hard, especially hiring many people at once.

------
viach
The knowledge earned with CS degree is priceless on tech interviews - where
else can you be asked what red-black trees are and O(x) notation for hash map.
When you hired it's different, just get this damn Hibernate mapping working)

------
spsrich2
One of the top devs I ever worked with, I hired him, his previous job was a
fitness instructor. He had left school at 16. Had done some programming on his
home computer, and wanted to be a programmer for a living.

I was blown away by his methodical approach to a simple problem I gave him.
Less than year later he was running his own team that had people in it that
had been to some of the top universities in the UK, like Brunel, and they all
respected him. He'd completely taken control of that project. That was all
using VB6. 20 years on he's now a leading C++ expert.

Degrees don't mean anything imho.

------
hi41
I am trying to transition from C programming on Tandem(also called HP/Nonstop)
to Java and web technologies. The main reason I want to move out of Tandem is
that there are only few companies having that system and jobs are few. I have
basic Java knowledge but don't have any experience developing for web. The new
jobs posting all talk about lot of skill set - Struts, Spring. When I got a
job interview I got unrelated things like Solr. Each of these frameworks seems
to be massive. How do I proceed to level up to the current technologies? Your
help is much appreciated.

~~~
arendtio
Switching from C to Java with Spring/Struts shouldn't be that hard, because
you are still on the safe side (the server). The real fun with web
technologies starts when you are in the browser.

So if you have no prior experience with the web-technologies, I would
recommend you to learn a bit of HTML/CSS/JS until you are familiar with them
(build a simple, plain HTML page, add some CSS to change the layout, throw in
some JS to load some content asynchronously and maybe add some JS buttons to
make the page interactive via JS (e.g. change the content when pressing a
button)). Nothing too fancy, just make should you know what every language
looks like and which language to use for what use-case.

Next, you should find out which Java Framework you really need to learn. When
I learned Struts 2 a couple of years ago, I remember that it was considered
outdated already.

And then start doing the tutorials of the frameworks, followed by building
something you want to build with those technologies (start small and keep
adding stuff). At least that is the path of the self-taught developer.

~~~
hi41
Thank you

------
jboy55
I'm a 40ish FAANG Manager without a CS degree. I would point out that while I
agree that it is possible to have a great development career without a CS
degree, I wouldn't recommend doing it this way if you have a choice. So, if
you are contemplating dropping out or skipping doing a CS degree and going
right into the industry, you are going to face obstacles and bias throughout
your career that having the CS degree will mitigate.

No one second guesses a CS degree, but a good chunk of CS grads (your future
coworkers and hiring managers) will second guess a self-taught education.

~~~
travbrack
What about a degree from a school that has a bit of a 'degree mill' reputation
- [https://www.wgu.edu/online-it-degrees/computer-
science.html](https://www.wgu.edu/online-it-degrees/computer-science.html) \-
pretend that's someone's only choice.

------
fucknuggetz
I'm a CS major at the moment.

I learn some of the most interesting shit that I would never have thought to
teach my self. Data structures, discrete math, and theory of computation come
to mind.

Learning about how grammar and linguistics are so heavily tied into CS has
been eye opening and has helped me understand so much more about what's going
on in a computer. I never would've learned that on my own.

Sure, probably don't need that to get a job as a developer. But, having a CS
degree != being a developer in the first place. I get that they can go hand in
hand but it's just not the same.

------
modahepsi
I am mechanical engineer and still working as a mechanical engineer. I started
to coding when i was 16yo.(now 31)I still yo contunie to side projects. I am
not succesfull in side project(due to ideas)

------
chrshawkes
I'm a self-taught Senior Engineer doing this professionally for the past 10
years. I've never taken a single course in Computer Science and dropped out of
business school to start my own. Amazingly, some of my work has been used by
universities, 20 million have watched my Programming YouTube channel and 50k+
have signed up for my online courses.

Most companies don't have a hardline requirement for having a degree anymore,
but if they do, even for management, I'll do my best to avoid them.

Last thing, I started coding at 28.

------
legohead
No degree here. Started programming when I was 14 on MUDs. I actually went to
college for CS, quit, went back 6 years later, and quit just shy of my BS. I
need 9 or so hours. I moved to another state and didn't want to go through the
transfer process and probably end up taking repeat classes...

I'm at the ceiling pay-grade wise now, and burnt out, but that's another issue
:) The moral of the story is, you can progress really well in this field if
you can prove yourself. Experience > Education

~~~
hutzlibu
It is luckily easy to prove what you can in IT, as you can just show own
succesful projects. But at least in germany here, you will still have a hard
time getting the same pay, no matter the actual skills, as they are very often
bound to formal education.

------
drinchev
I also have no CS degree, I have a law degree though. I could say that
"development" is like lego construction - yeah you can do that with a very
specific preparation, but nobody actually stops you from reading the F manual
( RTFM ) and do it on your own.

However I think that people loving the job are better than the ones that were
learning for it, so no wonders sites like this exists.

And in any case I wouldn't go to a self-taught doctor, so something will
probably change in the future.

------
Demiurge
It's interesting that not having a degree is equated to being self taught
developer. What if you chose to take all CS major courses but nothing else?
University degrees are supposed to give you generic background on many
subjects, on which you can specialize later, not to set you up as a
"developer". This is why it is even called computer "Science" and not "dev ops
certification".

------
stillbourne
I just quit my old job after 10 year at the company 6 of which I was an App
Dev for. I applied for several jobs did three interviews for Sr. Dev positions
and received 2 offers. After I received each offer I expressed that my highest
level of education was a GED, each time it was stated that is not a problem. I
don't even have an education portion in my resume. It's been a non-issue so
far.

------
Pete-Codes
So I'm a noob with Ghost: if anyone wants to subscribe to the Friday
newsletter you can here:
[https://mailchi.mp/67e1bf258afa/nocsdegree](https://mailchi.mp/67e1bf258afa/nocsdegree)

By the way, my site does use HTTPS and for analytics, Simple Analytics so no
cookies.

------
xwdv
No CS degree is fine when you’re doing trivial programming work that doesn’t
really matter, such as application frontends.

But could you imagine riding in a plane or using critical infrastructure
services programmed by people with absolutely no computer science degree to
their name? Not a chance. Like getting surgery from a butcher.

~~~
mls-pl
People with CS degree have more theoretical knowledge, for sure. But people
without it, self taught, have more practical knowledge, cause they simply done
things instead of learning about them. Decide yourself, which is better.

~~~
username90
I don't think that many self taught developers have any practical knowledge
related to avionics control systems, there is only so much you can do on your
own.

------
notus
I'm confused how you accomplished anything without some type of looping
abstraction. If you understand one of them most of the rest are fairly
intuitive except looping with recursion. It just seems bizarre that you were
working somewhere and being productive without knowing what a for loop was.

~~~
argd678
It sounds a bit like an ad for the site he mentions, I’m not sure how you can
miss for loops.

------
jimmaswell
The value of college to me was mainly the degree and an internship that
resulted in a good reference. Nobody in practice seems to care about personal
or volunteer projects unless it's maybe contributing to Mozilla or something.
Degree is necessary to be interviewed by 99.99% of openings.

------
markbnj
How many working developers actually have CS degrees? When I began a long time
ago it was quite rare. In fact most of my peers had liberal arts degrees. I
definitely meet more CS grads among younger devs now, as well as EEs and SEs,
but I wonder what the actual breakdown is these days.

------
jshowa3
I just find these odd. Does anyone struggle with this stuff? They just make it
all look so easy.

I for one struggle quite a bit with coding, design, theory, and other aspects.
I just don't get how so many people think coding is as easy as "reading a
book" or "doing a tutorial".

~~~
zcrackerz
Well, you're literally writing step-by-step instructions that a computer will
faithfully perform without deviation. Once you understand how a computer works
and how to talk to it, it should be as easy as having a conversation.

I don't think this is easy, but when you've been doing it for years and years,
it feels that way.

~~~
jshowa3
Computers don't even operate solely step by step anymore. They often operate
asynchronously, through interrupts, or compute things in parallel across
multiple threads.

Maybe if you're programming something simple, it will be "step by step". But
most programs are not this simple.

------
seisvelas
I'm a dev with no formal education of any kind, but self taught math and CS. I
think it helped me a lot to be exploring the concepts out of a passion for
understanding and seeking truth, rather than doing homework I don't understand
or care about.

------
rozhok
Can we have an interviews with people who failed to self-taught themselves to
developers? We know about a lot of examples of successful people who dropped
college, but what about those people who dropped college and achieved nothing?

------
taway555
i'm self taught without a CS degree. I filled in many of the gaps by studying
for technical interviews. I can rattle off every type of data structure, every
type of classical algorithm (even the inefficient ones for historical
reasons), write HLDs and LLDs and sequence diagrams and component diagrams,
and can work my way through almost every problem on those leetcode type sites
(if given enough time).

can i write a compiler or a lexical parser or am I versed in distributed
computing and/or other highly specialized technical areas? not off the top of
my head, but give me a few days/weeks and I know I'll be able to.

------
sremani
"Only autodidacts are free." \- Taleb.

Every one will have knowledge gaps, the skills for CS degree and real world
programming will have some overlap, but there is whole lot of distinction in
both.

------
edpichler
I am very glad for having studied software engineering at university. I
believe it's more productive to learn when we have guidance, colleagues and a
proper environment.

------
metalrain
While I don't have CS degree, I studied 3 years for BS and got some ideas and
associations that I can explore more when needed. Not quite 20:80, but maybe
like 50:80.

------
tibbon
I grew up surrounded by computers, but took relatively few classes. I took AP
Computer Science in high school, but had to teach myself the “B” part of the
class because the other students couldn’t keep up and our AB class just
reverted to just the A portion but that was too easy for me. I also took an
“honor programming in C” class from the same teacher, but it was essentially
just two hours a day for me to program silly games using some Borland graphics
library. I spent a lot more time being familiar with networking at the time
really, and despite the CS parts seeming easy, anything web related outside of
HTML was a mystery to me.

I did music for college and the only programming I did was in csound and
max/msp.

Long story short, music doesn’t pay much. I just started reading and doing
programming. I got gigs almost immediately for solving simple data problems
for people (extract these CSV files into this format and pull down web data,
etc). Fortunately I had companies where they were happy for me to take on
whatever programming I felt comfortable with, despite being in a non-dev role
originally there.

12 years later, I’m damn good at this. It helps that I can generally just read
a book and absorb it. I’ve read books on CS, but haven’t taken any more CS
classes outside watching some MIT course 6 videos. I did take some machine
learning classes at MIT over IAP and those were fun. One weird thing, I’ve
never taken beyond pre-calculus, but the linear algebra stuff in most ML
things isn’t that hard for me. Maybe I’m just lucky? I’m a total hack at math,
but can understand concepts quickly still and apply them in code.

One weird quirk was that I had to learn that not everyone can learn like I
can. I taught for a few years at General Assembly and learned immediately that
most people don’t like being throw in the deep end, or being told to read
something and apply it the next day. They need smaller and better defined
problems to build confidence. Only 5% of student actually enjoy things on hard
mode. That’s ok- it’s just different than me.

Like, at work right now I’m probably going to need to do some Go work. I’ve
never used Go outside the first 10 project ruler problems. But- I don’t mind
telling them that sure, I can do some work in Go. It’s just code, and if I sit
down for 8 hours I can get decent with the language.

The only things I’ve encountered so far that felt were “hard” were Haskell,
and anything with shaders and modern 3D programming. I’ll figure them out
eventually. TouchDesigner has also been tricky, but it’s mostly that their
documentation is scattered (so much in videos) and the ui/workflow is non-
obvious. I should write a book on it.

------
inson
Interesting. I am starting to teach my siblings to code (they are with non-cs
degree) and don't know where to start. Do you guys have any thoughts about
this?

~~~
arendtio
I am sure there are people who disagree, but if someone really wants to learn
about 'Coding and Computers', my choice would be _Go_.

Let me explain: When I learned to program, QBasic was the first language I had
contact with. I could make the computer beep but never achieved anything
useful. Next, I learned HTML and was very happy about creating something. In
school, I learned a little bit about Delphi and while GUI programming was
cool, I preferred doing things on the web. A little time, later I came across
PHP and was finally able to create real websites. So I coded a few projects
with PHP and had my first struggles with arrays and the likes.

Finally, I arrived at the stage where I wanted to learn a real programming
language. So I learned C. C was great. I mean, it was also very complex, but
finally, I had control over every bit.

At that point, I started a CS degree and learned about pure languages like
Smalltalk (Object Orientation) and Scheme (Functional Programming). Those
languages were beautiful but felt like a step back in terms of practicality.

When the JS frameworks poped-up I learned to use a few of them too and still
use some of them today and while JS is a great language to create results, it
doesn't feel to me like a language that teaches you how to write good code.

Along the way, I encountered other languages like Java, C++, Python, Rust and
those are certainly not bad languages, but I wouldn't recommend them for
beginners.

What makes Go so special, in my opinion, is that it reduces the complexity of
C while not taking away its purism. It comes with all the tools you need
(except a text editor) and encourages to write good code. Finally, it has good
support for building web applications so finding a good use-case shouldn't be
that hard. After all, _good use-cases motivate students_ ;-)

I am well aware, that one could certainly argue for every programming language
to be the perfect candidate, so please remember that this is a personal
opinion.

~~~
inson
Thanks! That's an interesting perspective. Golang is getting more traction,
maybe I will take this road. However, I don't want to intimidate first
learners with difficulties of the language. All languages are similar in some
way.

------
tambourine_man
Headline cutoff on iPhone SE:

[https://imgur.com/a/6RGJQQ1](https://imgur.com/a/6RGJQQ1)

------
wiineeth
It's so hard to get a job in India without a degree. i'm trying from 2 years
and i'm still not employed

------
40acres
I'm listening to the excellent BBC podcast 13 Minutes to the Moon about the
Apollo program, can you guess how many CS degrees worked on programming the
Apollo Guidance Computer?

In my opinion, software is more of an art and design discipline than other
types of engineering. The traditional notions of what constitutes an engineer
do not apply as much to software. This is clear in the fact that we have no
formal certification.

------
xthestreams
The most important thing that my CS degree taught me is to recognize that I
know nothing.

------
samrosea
I'm self taught but went to CMU (not for cs) so employers don't care

------
ElijahLynn
Love this site, so much hope and possibility in these interviews!

~~~
Pete-Codes
Thank you! Next email comes out on Friday. If you subscribe of course :)

------
cvaidya1986
Brilliant! Congrats on shipping such a marvelous project!

------
stellalo
Are CS degrees supposed to teach how to code?

~~~
bdcravens
You write code to demonstrate what you're learning, but you don't learn any
one language in depth enough to be productive from day 1 at any new job.

------
kamfc
Shit. What about NO DEGREE in general?

------
pryelluw
Cant subscribe to newsletter on android/firefox with ublock origin Please add
a no js form to subscribe

------
cr0sh
I'm a mostly self-taught CSE with no CS degree, with well over 25 years of
professional experience. I feel that not having the degree has stunted me in
some ways, but has also gave me a bit more freedom in others, because I could
explore areas for solutions without realizing "how things are done".

That can be both a good and a bad thing.

Lately, I've been exploring other areas of CS which have always interested me,
even as a child with my first computer, namely that of "machine learning".
Where I have found I fall down in that area is in understanding the deeper
level math concepts. I know these aren't really required to come up with
solutions to problems using the existing toolsets for machine learning (as
long as one can understand the math and concepts at those levels, which is
arguably simpler) - but not having that understanding (or only a partial
understanding) makes me frustrated that I can't understand exactly what is
going on inside "the black boxes".

For instance, I (mostly) understand how MSE and backprop works in a neural
network. I also understand why and when to use RELU vs sigmoid (or some other
activation function). But could I derive any of that from first principles?
Not at my current level of understanding (all those damn rules of calculus -
which I don't understand). In many cases, though, I don't need to - I can
treat them as a black box. But I don't like it. I do intend to fix this
someday.

Of course - this subject - machine learning - has over the years led me down
interesting and surprising paths (long before I started really studying it as
a subject, in 2011, when I took the "ML Class" and "AI Class" MOOCs). Things
more philosophical in nature, but all seemingly related in some manner, at
least to my mind:

* Chaos theory

* Network theory

* Emergence and Complexity

* Theory of Mind

* Various topics in neuroscience

* Various topics and ideas in psychology

* Etc

...with "Etc" encompassing robotics, engineering, electronics, ethics,
history, religion - and all the interactions and branches and spaghetti in
between.

So much of that I wish I could have a more formal grounding in; I also wish I
could speak with (and have the language to speak with) those who have this
knowledge and grounding. I know that to be an impossibility, even if I were
20-30 years younger.

It astonishes me that many don't see how much CS in general touches and
interacts (and both informs and is informed by) with all those topics and
more. I see this, even if I don't understand it completely, and sometimes
wonder or suspect that maybe I am wrong at some level? Maybe the lack of a
formal education in all of those subjects has caused me to see things which
aren't there...?

Alternatively, it could be that by not having such an education, I am - like
before - not "constrained in a bubble" so that I don't see those things?

I am not saying I am special in this regard - I have read and spoke with
others who have similar ideas to one extent or another, and in many cases
their understandings have informed mine.

I'm just not sure if I should focus narrowly at this point in my life at 46
years of age, or go more broadly; both are fascinating paths for me. From what
I have seen and read, it seems like the "broad path" would be more immersion
in studying philosophy, perhaps with a greater focus on the philosophy of mind
and/or consciousness.

At the same time, I like to think about and focus on the idea (and fantasize
of solving it - fat chance) of the "wrongness" of backprop - and whether
another solution exists for neural network learning that is more biomemetic?

...and at this point, I'm rambling - so I'll shut up.

------
QuickToBan
Why does this title presuppose that people with CS degrees can't also be self-
taught? A degree is a piece of paper that employers need; it has little to do
with learning anything useful.

~~~
erikpukinskis
Because you’re not self taught if you have a degeee.

You can still teach your things, but as soon as you submit to formal training
you are no longer “self taught”. That’s what self taught means.

------
lincpa
I'm a Financial Analyst, CPA, CIA, CTA, Statistician, Expert System Developer,
Using Clojure, R, core.logic, PostgreSQL, etc.

All professional knowledge is self-learning. The founder of The Pure Function
Pipeline Data Flow.

[The Pure Function Pipeline Data
Flow]([https://github.com/linpengcheng/PurefunctionPipelineDataflow](https://github.com/linpengcheng/PurefunctionPipelineDataflow))

~~~
lincpa
As a member of the very creative `self-taught developers`, I was surprised to
find that I was downvoted. Why is that? :-)

------
rezeroed
Firstly, depends on the university - not all degrees are equal. I did most of
a degree after working in the industry for seven years, and having programmed
on and off since the zx81 - the degree was pointless. Only one course was
interesting, AI, and the only time I've ever used that knowledge is tinkering
at home.

~~~
balabaster
I think for anyone that started programming in the early days of home
computers like the ZX81, C64 and BBC Micro, except for the fundamentals, most
CS courses seemed to be completely useless. I cannot honestly say anything I
learned in my course was useful compared to pursuing my own interests.

~~~
convolvatron
I missed undergrad, and managed to weasel my way into graduate school after 15
years as a programmer. ultimately research isn't for me, but I found basic CS
theory both interesting and useful in my later life.

certainly agree that the systems and programming coursework wasn't
particularly useful.

------
happythen
There is no such thing as self-taught, (doesn't even make sense). No one opens
a computer, figures out how the processor takes instructions and invents their
own language. If you went to college, you listened, you studied, and you
practiced. If you did't go to college, you studied, you practiced, and you had
to have found someone who will answer your questions.

It's hard for everyone to enter the industry, especially now, college or not.
It's not about how smart you are, or your identity, or your environment. It's
how bad you want it, how hard you'll work for it, and if someone is willing to
help you.

As software engineers, degrees or not, focus on that last part. Be there for
someone learning, studying or just trying to figure it out. Feels great to see
a finished product. Feels even better to teach someone how to fish, (code for
money). I wouldn't be here if it wasn't for people along the way, giving
pointers, telling me where to look, telling me what not to do. I was a gawd
dang line cook. Be that helpful person.

------
sergiotapia
Make peace with this fact: you can most definitely build businesses and add
value to any organization. But you won't be able to optimize Twitch's video
codec or any other very low level, uber-specific, high impact code.

Business need both types in this world. No shame in that, but don't lie to
yourself into thinking that you can do _both_ with no CS degree. You can't.

~~~
setpatchaddress
Nonsense. You can absolutely teach yourself to optimize low-level code if
that's what you want to do. The amazing thing about today's world is that all
of the incredible resources available for learning just about anything in
science and engineering to anyone who has the time to consume them. And you
can work on open source projects to build your native skills.

The difficult part for you will be obtaining an interview. Because all of the
other candidates will have CS degrees, and increasing numbers of them will
have graduate degrees. You are at a disadvantage.

~~~
rvz
The main difference is that more resources are now publicly available to
everyone to look up on the internet which was a different story 40 years ago.
This is why companies at the time hired grads that can re-implement closed-
source software from scratch from a reference spec or by reverse-engineering
from another company to stay ahead. This has happened with device drivers and
closed-source compilers.

To some extent open-source has removed the cost for reinventing libraries,
reverse engineering and there is little need to study specific elements in a
subject to solve such a problem when you can grab lib_whatever or a free
compiler for a language.

You are right that in interviews at famous companies (FAANG, asset management
companies, aerospace / embedded systems companies) being self-taught here
isn't enough. Instead, they require specific certifications and they look for
the graduate with a strong engineering degree rather than someone who is self-
taught.*

Right now in 2019, I would do both.

*Having a serious open-source project or significant contributions is actually a huge advantage over recent graduates.

