
Computer science as a lost art (2015) - jxub
http://rubyhacker.com/blog2/20150917.html
======
wrs
Well stated.

I recently went through (the recordings of) MIT’s intro course for electrical
engineers, in which somewhere the professor says students may wonder why they
have to do all this calculus and learn FET models and so on — in real life
don’t you just wire chips together? And he points out that MIT degrees are for
the people who _make_ the chips.

~~~
stcredzero
_he points out that MIT degrees are for the people who make the chips._

You never know when background knowledge and first principles might come in
handy. One of my favorite YouTuber practical engineers has this story about
going on a boat trip. The new coffee maker on board was freaked out by the
noise from the inverter and kept shutting itself off. A total disaster! There
would be no coffee the whole trip. So he turned on the blender while making
the coffee, and the coffee maker started working. How did he know? He knew
what kind of motor was in the blender, and knew its windings would increase
the inductance of the circuit the kitchen appliances, filtering out the higher
frequencies put out by the cheap inverter.

This guy isn't an electrician. ("Elekchicken") His day job is just to put
pieces of "industrial lego" together -- just like how so many programmer jobs
now are mainly about gluing libraries together. But he never shies away from
knowledge of first principles, and he demonstrates all the time why such
knowledge is valuable.

~~~
leetbulb
I'm intrigued. What channel? I greatly appreciate this type of intuition /
problem solving. AvE is one of my favorite.

~~~
stcredzero
AvE

~~~
leetbulb
Ah, must have missed that video :P Thanks!

------
learc83
I've worked for years as a self-taught developer before going back to get my
CS degree, I've taught at a bootcamp, and I've hired bootcamp graduates.

Bootcamps can be valuable, but they are in no way comparable to a 4 year
degree from a decent CS program. The top performing bootcamps are either
functioning as an extended job interview that you have to pay for, or they are
very good at selecting experienced students who only need a 12 week course to
be ready to be productive developers. In my opinion, the reason we've seen
bootcamps close or fail to expand is that there is a limited supply of these
types of students.

For the vast majority of people a 12 week course, no matter how intensive, is
a good introduction, but a lot of training is still necessary to be useful. If
you are prepared to invest in that training, they can be great hires. However,
you need to be aware that it's likely going to be months before you get real
productive work without hand-holding. It takes most people a lot longer than
12 weeks to be comfortable with the basics of moving up and down through
levels of abstraction.

~~~
syndacks
I'm a self-taught web dev, and I want to further my CS education but can't go
back to school for various reasons.

I've seen various syllabi eg teachyourselfcs.com and though they seem legit
(and I've dabbled is some courses) I don't quite see the application/direct
benefit professionally.

Let me phrase in another way; when I got started it was easy to see why I
needed to learn front-end and back-end to make a web app (for a CRUD job). Now
I want to go further, but where?

I think it would be helpful to see what jobs I could get by furthering my CS
fundamentals, and not just "Senior Software Engineer".

So, as someone with your unique perspective, what do you recommend? Should I
really slog through ye olde CS curriculum in hopes that one day I'll be able
to apply some of it? Can you recommend another approach?

Again, put another way, some of these "top performing bootcamps" sharpen your
React skills and whiteboarding skills, which have a career/market value. But
they don't appeal to me because they don't seem academically/CS focused.

I hope this duality/constraint came across.

Any guidance appreciated.

~~~
arcsin
Knowing CS allows you to build unique solutions from first principles. In
cases where you're tied to applying solutions that have already been decided
there will be less opportunity to use your CS knowledge. I think the majority
of the time for most jobs you're just applying solutions, so it's much clearer
how this would benefit you professionally.

Depending on the kind of work you do, the minority of the time where it would
be beneficial to know CS might have a big impact both on the product and your
reputation in the company. This could help you move up to higher, better paid
positions, but it also might not. Teaching yourself CS is a big time
investment and if you just want to maximize your salary there's probably
better ways to do it.

I think it's really only worth it if on some level you enjoy it and find it
interesting. You can seek out jobs where they use more CS, but again this
doesn't guarantee you'll advance professionally. But if you're the type of
person who enjoys programming as a creative activity, I think CS can be very
rewarding because it opens you up to what's possible.

------
lostcolony
I was involved in the hiring and filling of > 50 developer positions at a
company, while being a tech lead.

We tried hiring a few people with just bootcamps. Only a few (so hardly a
representative sample), but none of them worked out. As soon as they had to
try something even the slightest bit different than what they'd done in the
bootcamp they were lost. There were people with degrees in unrelated fields
who then did a bootcamp who were good, and almost all of the CS/CE/EE people
we hired were good.

I'm not saying this is always the case, but the two years of CS fundamentals
seem to be valuable, AND the two years of unrelated core classes seem to be
valuable. It might just be how it forces you to engage with and learn things
you don't care about (because there will be times in any job you have to do
that), or the people skills of having to learn to deal with professors and
other students, or the pattern of constant learning and adapting it ingrains
upon you, or something else entirely, but per the link, I don't think a
bootcamp should ever be viewed as sufficient preparation for a career in
development. It's fine in tandem with other things, but it's extremely
limiting on its own.

~~~
sircastor
For a counter example, I'll say that we've got 3 Bootcamp graduates on our
team at work and they've all been very good. They've all moved into languages
beyond what they learned in their courses. One has become a major platform
contributor and has been a driving force in decisions being made. Another has
been working with hardware and system deployment. They're all very driven,
I've been quite impressed.

Now the caveat to my statements there are that all three already had degrees,
in disparate fields unrelated to CS/CE. It's an example of capable individuals
being able to learn practical skills in anything.

~~~
wongma
Those aren't really counterexamples. They corroborate this finding by the OP:

>There were people with degrees in unrelated fields who then did a bootcamp
who were good

------
amorphous
What I miss in those kinds of discussions are the intangible benefits of
having studied a subject in depth to acquire a degree. The person that entered
university is different from the one that came out of it. The way to tackle
problems, to think scientifically, the ability to see the broader picture are
some of the advantages of good education that are easy to dismiss since they
are not immediately visible.

There has been a similar thread on HN where someone with a bunch of degrees
said: "I haven't used anything from my studies in my work". But this person
might be blind to the fact how the education shaped her mind. Understanding
goes beyond mere knowledge.

~~~
Ntrails
> There has been a similar thread on HN where someone with a bunch of degrees
> said: "I haven't used anything from my studies in my work". But this person
> might be blind to the fact how the education shaped her mind.

I tried to read thought my uni notes on metric spaces a couple of years ago. I
don't even understand them anymore. Littered with idiot comments like
"obviously -> " despite it being nothing of the sort.

University me was a douchebag. :(

~~~
aaron_m04
I'm guessing you don't use metric spaces in your day to day work. Take a look
at notes from a subject you are actively using, and I think much of it would
be obvious.

------
yontherubicon
So, for the dogshed builders among us, what might be the recommended pathway
to learn some architecture--beyond the obvious academic options?

I'm sure this has been covered to death on HN already, but if anyone has a
link bookmarked and feels like sharing?

~~~
avmich
Read carefully "Structure and Interpretation of Computer Programs" (e.g.
online for free), preferably do exercises. You'll get a solid start.

~~~
pjc50
SICP is a Lisp textbook. This will be controversial, but I think it has little
application outside of the Lisp world, however much it is venerated.

~~~
stutonk
Yeah, it only teaches you about term rewriting, boolean logic, iteration vs.
recursion, algorithm complexity, higher-order functions, data structure
design, closures, generics, statefulness, environments, mutability,
concurrency, stream processing, modularity, interpreter design and
implementaion, lazy evaluation, nondeterminism, logic programming (i.e.
search/constraint), low level computer architecture, memory models, and the
design and implementation of virtual machines, garbage collectors, and
compilers. Just a total waste of time unless you're doing Lisp.

------
stcredzero
_It means that a person can get the little things done while knowing very
little. But it also means that this person probably will never learn enough to
get the big things done._

 _To be honest, I get secretly frustrated with the lower-level people who now
exist in giant hordes. (I rarely tell anyone that.) To me, they are like
people who have decided to learn 5% of their field in order to get a few
things done, have some fun, and make a living._

 _These people use tools to create little applications for everyday use. But
remember: The tools themselves are also software. But they are a level of
software far beyond anything these people could dream of creating. They use
languages, editors, compilers, and operating systems; but they don 't have the
first clue about how to create any of these things or even how they really
work._

The most disturbing thing to me, based on interviews I've conducted, is that
this seems to include some large fraction of people graduating with a Computer
Science degree from supposedly top tier schools with high GPAs that supposedly
mean something.

 _If you want to make really interesting exciting things that have never
existed before, if you want to make a tiny little difference in the industry
and change the world just a little bit, then you do need that degree. If you
want to make the tools and libraries that the lower-level people use, you do
need that degree._

The tools and libraries aren't sentient AI yet. If you want to use the tools
and libraries at a high level, then you really need to have some knowledge
about how they work. The disturbing thing I might be seeing, is that something
like 40% of graduates from even good schools have that Computer Science
degree, yet really only have that 5% knowledge, yet have been led to think
that they know more.

~~~
jacoblambda
I think the mistake a lot of people make is the split between you need a
degree and degrees are worthless. Degrees are largely what you make out of
them.

I have been going through a bachelors of computer engineering and the
curriculum/professors make every effort to provide as much value as possible
yet most students do just enough work to get the grade they want in the class.

In this same vein, students so often take the required courses, look for the
easiest (instead of the best) teachers, and try to pick the easiest, lowest
effort classes out of the in major classes they can choose between (tech
electives) rather than focusing on building a useful base of knowledge for
their future careers. Many students intentionally avoid useful classes because
they are hard and don't want to risk damaging their precious GPA. I find this
accounts for a lot of the grads with very high GPAs but with fairly limited
knowledge outside of the basics. This ends up with students putting the cart
before the horse by focusing on how to be best suited for getting a job rather
than how to be well prepared for it.

The true value of a CS/ECE degree comes from the classes that you take not the
degree itself. Much of that material (particularly the fringe optional
courses) can be very difficult to grasp on your own and having a professor
dedicated to assisting in your understanding of that material is extremely
valuable.

~~~
stcredzero
_Degrees are largely what you make out of them._

Agreed. I think a lot of people take CS to get a GPA, network, get a good list
of impressive sounding internships, and work with buzzword-compliant
libraries.

------
fru311
I would suggest that if someone isn't interested in technical fundamentals,
they should consider a degree in human computer interaction and design. The
things you can create with shallow technical knowledge continue to become more
commoditized, but understanding problems that people have and designing a
solution that makes them happy is a good way to create value.

------
ereyes01
We've reached an era where the average worker's serviceable time long outlives
the competitive edge they've gained from their education/training in their
formative years. The accelerating pace of economic and technological change is
faster than ever, and this condition is unprecedented in human history.

I've become more and more convinced that this is the defining problem of our
times- we're becoming victims of our own success. The author of this post
feels like a dinosaur, and I would bet that many young people in our field who
give in to their natural instincts and specialize in something will emerge on
the other end feeling the same, at a much younger age than the author, and
maybe unable to find equal or better work than before.

In other professions, the difference is more stark, and I think this is a
major catalyst for the political/populist zeitgeist of the day. Entire
industries have disappeared in a historical blink of an eye, and their former
struggling workers are up in arms fighting powerful forces of nature trying to
turn back the clock and stay relevant / valuable.

Bringing this back to CS, it's interesting to use this lens to determine
whether the degree is worth pursuing anymore. On the one hand, it's
fundamental and it encompasses the building blocks of how computers work and
what they can do. On the other hand, programming techniques haven't changed
very much and are quickly becoming commoditized and more accessible. As the
author notes, it's true that you don't need to know as much as you used to, to
build a useful program anymore. Like it or not, that's a fact, and economic
forces are exploiting this more and more.

I think our human-being wiring is optimized to learn when young, and then
"grow up" and become efficient at repeatedly applying our skills to obtain the
expected outcome. Increasingly, I feel like the winning (or at least a better)
strategy is to stay "young" as much as possible, since the chance you will
need to reinvent yourself seems to only rise. This sounds great when you're
_actually_ young, but as time passes you get worse and worse at it, despite
needing to remain "young" and malleable, and despite the mounting competition
from actual young people.

So given all this, saying people "need" a CS degree seems like punching and
kicking at giant waves you'll never beat. And I say this as someone who deeply
loves both CS and academia. Stay "young" as best you can and try to keep
riding the next wave you can find.

~~~
flukus
Disclaimer: My only formal training in this field was TAFE in Australia, which
involved an 18 month course and is roughly analogous to a trade school or
community college, before that I was a high school drop out.

> We've reached an era where the average worker's serviceable time long
> outlives the competitive edge they've gained from their education/training
> in their formative years. The accelerating pace of economic and
> technological change is faster than ever, and this condition is
> unprecedented in human history.

I think when change is this fast understanding the basic building blocks is
more important than ever. These don't change quickly, some haven't changed
since the industry was born. So much technological change is just reinventing
concepts that have existed for decades and once you realize you're staring at
an old concept in a new package keeping up is much easier.

The question then is what educational format teaches these fundamentals the
best. For some of them it probably is a computer science course but for others
it might not be. One of the best classes I had was building our own database
(TAFE was pretty hands on) and from what I've seen this was a lot better than
how it's taught in many universities. We had to start at the file level and
think through the various steps to make a half decent database, like what is
required to handle index lookups efficiently, how to retrieve records in
order, etc. It gives you a much more intuitive grasp of what steps a DBMS has
to go through on your behalf. In my first real job after graduating I had to
explain to someone with a CS degree why storing dates as strings was
inefficient and making our monthly billing took half a day to generate instead
of half a second.

Foundational knowledge is important but the where/when and how we obtain this
knowledge could do with a shake up, you can produce a lot of valuable output
without an upfront 3-4 year investment, but it doesn't seem like there are a
lot of opportunities to gain it after becoming a full time worker.

------
spraak
> If you want to make really interesting exciting things that have never
> existed before, if you want to make a tiny little difference in the industry
> and change the world just a little bit, then you do need that degree. If you
> want to make the tools and libraries that the lower-level people use, you do
> need that degree.

I wonder if the author considers Node.js to be really interesting and exciting
and never existed before. Ryan Dahl doesn't have a CS degree (but does have a
mathematics degree).

Another (pretty cliché) example: Bill Gates never finished his degree and went
on to create many great, exciting and interesting things.

~~~
chrisco255
I think exceptional genius combined with exceptional work ethic can overcome
any shortage of credentials or education, period. But for the great majority
of folks, a formal CS education will give you a great advantage over a
bootcamp graduate, or even a self-taught hacker. The thing is, if you're smart
enough and contrarian enough, you're not going to listen to anyone's advice on
this topic anyways...so those of you who do care what other people think, I
think it's best to get a CS degree. Boot camp just doesn't cover enough bases.
It's important to learn fundamentals. The fundamentals change much less often
than languages or frameworks or platforms.

------
User23
Germane meditations from the pioneer of kvetching about the standard
substandard approach to programming:
[https://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD103...](https://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html)

------
white-flame
Bootcamp vs CS degree really has to do with what sort of work you want to do,
which is a missing variable in this article.

There's plenty of programming work out there that doesn't require any deep
understanding of CS. You're not going to be creating algorithms when using
existing frameworks to write yet another web thing, phone app, or internal
businessy database-based system.

A bootcamp can get you started doing practical things. Yes, you won't have
deep knowledge, but really you don't _need_ deep knowledge for most employable
work. Code doesn't need to be hyper-optimized at the scale you're working, and
it's easy to learn common pitfalls & best practices from applied practice,
reading, and mentorship.

And I say all this as an oldish fart who understands the chain from designing
bespoke high level language environments down through to transistors. We don't
need to count bytes & clock cycles anymore; people can let the machine & its
provided environment simply work for them and learn the top-level interface.

------
neil_macintyre
> He's a freshman at Kennesaw State right now, but he really struggles with
> the idea of taking two years of classes that he has very little interest in.

If it is just the idea of having to take a load of liberal arts classes that
perturbs your son and not the low level courses like chip design, logic,
algorithms and data structures, calc and stats, one alternative to consider is
to study internationally. English universities, for example, offer a bachelors
in computer science in three years. Unlike a "8- to 16-week full-day immersive
courses that focus solely on technology" they have a curriculum almost exactly
the same a US computer science course minus the 3 English classes, 3 history
and political sciences classes, 2 economic courses and an art course that a
college like Kennesaw has a graduation requirement: Kennesaw State Curriculum
([http://ccse.kennesaw.edu/cs/docs/BSCS_2016-2017.docx](http://ccse.kennesaw.edu/cs/docs/BSCS_2016-2017.docx)).
To compare look at the University of Bristol's
Curriculum:[[https://www.bris.ac.uk/unit-programme-
catalogue/RouteStructu...](https://www.bris.ac.uk/unit-programme-
catalogue/RouteStructure.jsa;jsessionid=55C3E695CF3A9FA6C9333C0391AC0FBE?byCohort=N&cohort=Y&routeLevelCode=1&ayrCode=19%2F20&modeOfStudyCode=Full+Time&programmeCode=4COSC019U)]

I know this is not an option for everybody - many people need to stay close to
home for personal or financial reasons, but is definitely something to look
into. With regards to finances, English university for international students
even with 1 year less of study still cost a lot. However, I am pretty sure
that the course structure is similar at most European universities some of
witch offer really low fees to international students.

~~~
shagie
I wish more programmers took a few writing classes so they would appreciate
how to write an email with the correct punctuation. I've seen far too many
emails where the author didn't appear to understand how to formulate a
complete sentence or understand where to put a paragraph break.

I wish more freelancers took a class in business accounting so they'd have an
idea of how to do it and what a good (or bad) contract looks like... or
understand the value of their time. There are far too many that decide to
become "freelancers" and yet have no idea on how to do the basic business
items that come with being a freelancer.

I wish more programmers took a class that had a public speaking component.
Reading powerpoint slides as a team presentation is boring. The work
environment isn't just "I write code" but also a transferring of knowledge
from one person to the rest of the team.

I wish more programmers took some classes in history, or physical sciences -
things outside the major. I've had more than a water cooler conversations
where a person doesn't understand how the length of the day impacts the
temperature, or is surprised at the similarity of events today and those of
thirty some-odd years ago. This concerns me, not for the skills of work, but
rather the understanding of the world outside of the office.

To these things, English composition, human communication, contemporary
economy, arts and culture, political science and history... oh, those are are
excellent class titles to help fill out those I wish items.

~~~
Nursie
I wish people would understand those things can be picked up before a degree
or outside of a degree.

Going to a university in the UK I was free to study the subject I was
interested in and wanted to understand. I was able to fully immerse.

My schooling prepared me for the rest.

------
tabtab
As soon as higher-level programming languages such as COBOL, Algol, and
FORTRAN came out; many clerks in the mid 1960's onward learned programming
without knowing about the hardware guts or theory. Thus, the layering of
specialties had already begun.

~~~
frostburg
I'm not that sold on this. Programming in ASM isn't really "harder" than
programming in Haskell, it's just slower - it requires discipline, but not the
ability to grasp abstraction that some more modern languages need.

I think that issues like knowing "how do compilers actually work" or "this
thing is actually the halting problem, let's stop" are more relevant than how
removed from latches and memory controllers one is.

~~~
supermdguy
> Programming in ASM isn't really "harder" than programming in Haskell, it's
> just slower - it requires discipline, but not the ability to grasp
> abstraction that some more modern languages need.

Reminds me of this comment:
[https://news.ycombinator.com/item?id=17403233](https://news.ycombinator.com/item?id=17403233)

~~~
tabtab
That story reminds me of a guy who made a CRUD application (tracking, reports,
& statistics) out of MS-Excel VBA. I was asked to start supporting it, and did
a lot of similar head scratching. Amateur programming can be worse than no
automation at times.

He wasn't bitter, however; just confused about my assessment about it being
time-consuming to support. I had to explain that typical programmers use
abstractions to make code maintainable and not rely on our ability to read,
well, spaghetti code fast. I've met some programmers quick at deciphering
spaghetti code, but I confessed I wasn't one of them. I used the analogy of
taking a custom-built amateur car with a custom-built engine to a generic
auto-mechanic and expecting them to figure it out as fast as a regular car.
That story seemed to click.

------
Xeronate
College is only one way (albeit a good one) to get a firm grasp of CS. I'd
argue putting in 1000s of hours of work is another.

------
xor1
I know someone currently doing a CS MS so she can get into tech. She is good
at math, so all of those classes are free As for her. She has other people
help with her programming homework assignments, sometimes even having them do
the entire thing for her. I know because she told me this herself, and even
asked me to do some for her. As long as she gets near 100% on homework, it's
nearly impossible to get less than a B in any programming class. She has an
adderall prescription so she can cram for tests, which have way more multiple-
choice questions than should reasonably be expected.

She's currently on her second internship. They're both at employers that don't
screen candidates on actual programming ability (they just looked at GPA,
resume/application, and then a soft interview), and the current one has a
reputation for being a very meh internship, though good resume padding. The
last time I helped her, her code was fine for someone who had just started
learning two years ago, but I don't think she is going to progress to the
point that you'd expect someone with a Master's to be at simply because she
isn't doing her own homework.

I don't have a CS BS or MS, but there have been a few times where I feel like
I need to get one just in case the market tanks again and they become a
significant hiring criteria. But at the same time, I have to wonder just how
many people currently enrolled in MS CS programs throughout the nation are
doing something similar, and devaluing the worth of the degree (on paper, to
potential employers) to the point that some could even look at it negatively.

------
richpimp
I see pros and cons to both sides (4 year university vs boot camp). I have a
CS degree, whereas our front end developer came from a boot camp.

For my part, I have found the underlying theory to be helpful in ways I
couldn't have comprehended while at school. Understanding binary made
understanding octets in IP addresses and subnet masking much easier. Taking a
class that involved programming sorting algorithms by hand in C++ was very
beneficial, even though I have no need to do this in my day to day work.
Learning about logic gates has even been helpful. Basically, I'm better
equipped to have a fundamental understanding of how software and hardware
works, even if it's a very basic understanding. What I lacked coming out of
school, though, was having a clear road map of how to just build something in
a modern stack on day one at a job.

My compatriot is in the opposite boat. He came out of boot camp with a clear
understanding of how to build web applications using Angular. He could hit the
ground running, and did from day one. However, he lacks the underlying theory
that helps to understand how things work. Does he need these things to do his
job? No, but I do believe it makes for a more well-rounded developer to have
this knowledge. Fortunately, he's got a great attitude and aptitude, so he's
been picking these things up as he goes.

I'd rather see something more in the middle, where one can get the theory
coupled with the real-world programming skills. Maybe my CS program is to
blame, and others exist that do a better job of this. Looking back, my senior
"full-stack" project was very limited. I would have benefited from a little
more meat to the project, and also having some more of the ancillary things
taught, such as anything to do with networking in a more practical rather than
academic way.

------
3pt14159
I mostly disagree. Software, like electronic engineering, is about
abstraction, but it differs in a critical way: It's self-modifiable. Kids can
think they're making computer games using little apps, but what they're doing
is more akin to making a map for Starcraft than it is to actually making a
game. If anything I'd argue that getting a CS degree or similar (math,
engineering, philosophy) will arm your mind with the tools it needs to really
compete over the coming decades.

If you want a simple middle class life a bootcamp is perfectly fine. Lots of
people make money writing CSS. There is nothing wrong with it. But I would
never tell a bright youngster that CS degrees (and similar) are a waste.

~~~
BanazirGalbasi
I don't think they were saying CS degrees are a waste at all, in fact I think
the message is exactly the same as yours. Going to a bootcamp teaches you to
use some specific tools and let you make basic projects. Getting a CS degree
lets you learn how those tools work and even how to make better ones if you're
good enough.

------
rb808
Bob Martin has a great talk
[https://www.youtube.com/watch?v=ecIWPzGEbFc](https://www.youtube.com/watch?v=ecIWPzGEbFc),
which illustrates a lot of history of computers.

He asserts that the number of devs is doubling every 5 years which means that
half the developers have < 5 years experience. The industry has lots much of
its scientific discipline which has to return, or regulations will force more
structure.

Anyway he's a great speaker and this is one of my favorites.

------
projektir
Ugh.

I think what people writing articles like this tend to miss, is that it's much
easier to be super deep in a field when the field is limited and low-entry but
you're already in it. Because there's not really as much going on and there's
not much else to do but learn C or some text editor on a super deep level or
what not. What else are you going to do? Look at the stuff "deep" people are
generally into, it mostly revolves around POSIX some way or another. And
databases, but nobody wants to talk about that.

But today, there are hundreds of languages, a whole bunch of frameworks per
language, various tools, constantly changing standards, etc. The available
landscape is absolutely staggering. If you want to deeply focus, you need to
pick what to deeply focus on, which is a rather tough choice and a
questionable one, because the thing you focused on might become obsolete.

> if you want to make a tiny little difference in the industry and change the
> world just a little bit, then you do need that degree

And what sense does THIS make? Among the people who I know who _do_ deeply get
into some specific CS topic, many are those who do not have degrees, because
they're often people who are not fans of structure and ended up doing what
they want, as opposed to what might be beneficial for career purposes.

This just seems to be heavily misguided elitism.

If you really want to know why the quality of software, and basically
everything else, has gone down, just look at market incentives and you'll find
that to be an utterly boring question.

~~~
Ultimatt
> This just seems to be heavily misguided elitism.

Not really. There is a bit too much meet you at the bottom communism in the
modern ethos of computer science. When you can have measured difficulty and
time to skill in a field isn't it a little odd that we don't have a lot more
measured elitism in computer science? The reality is the hardest most complex
stuff is literally solved and produced by an elite few. All of which could be
taught or learnt but no one gives a shit. Its a bit like magic is slowly dying
from the universe, and the wizzards keep suggesting it might be worth holding
onto. But they then get called out as an elite minority only interested in
furthering their arcane agenda. Whilst everyone else is using the accessible
modern "technology" built from the original magic and cannot fathom why anyone
should give a shit about magic anymore. Wizzards only appeared special to get
a cushy job next to the king in their own tower right? Technology is just as
good as magic, because it was built from magic!!!! So elitist. The problem
comes when the technology fails, or doesn't do something thats needed and
cannot be changed without changing the base magic that the technology started
from. If there are no more wizzards and no more magic, you're never going to
be able to create new base technologies. The _only_ hope is the magic making
technology everyone is currently working on called Machine Learning. Then all
the wizzards can be virtualised and controlled like slaves, even if its
provable ML isn't actually magic, its close enough... we hope.

~~~
projektir
> The reality is the hardest most complex stuff is literally solved and
> produced by an elite few. All of which could be taught or learnt but no one
> gives a shit.

The elite few don't really want anyone joining them, so nobody does. Look at
the state of academia and look at lack of training in jobs. Nobody wants
anyone to be elite, so people don't bother, there's no benefit in it. Your
problem is that you think you're important, that you think the most useful
contribution from a person is what they do personally, but all that does is
just advance, you, personally.

The thing is, the elite are often much more worried about being elite than
about what they're actually doing. Once you see that, you know the incentive
is corrupt. It's a status thing for them. And how dare anyone challenge their
status. That's really all this is. It's hardly about the advancement of
technology, because if it was, those people would be out there teaching, or
trying to address the informational overload, and not looking smug. It's
elitist because it's utterly disregarding most of human experience and
presenting yours as superior, and your entire argument will ultimately derive
from that view and pretty much everything you say after that could be really
anything as long as it supports your idea that you're superior. That's why
elitism is bad, it's destructive to conception of reality.

I know plenty of people who don't look at things as magic but who also don't
consider themselves as some "wizards". Maybe you should try getting off your
high horse and talking to people some and figuring out what it is that they
are doing all day and you'll understand how silly everything you're saying
here is. But as with everything else, it's easier to sit on top than to try to
understand.

Snobbery is all this is, and likely unearned, can't say the association
between perceiving yourself as elite and actually being so is very good at
all.

~~~
throwawayjava
I, for one, am really looking forward to seeing the projektirSolver in next
year's SAT competition and the projektirNET in next year's ILSVRC!

------
NTDF9
I've worked with plenty of competent developers who don't have degrees. Most
crud jobs don't need degrees anymore.

But, any serious business that's going to churn a lot of data, needs fast
pipelines, needs to invent entire new markets or ideas will heavily rely on
people with patience and training in scientific process.

------
michaels9876
Very fun to read and sounds very true. In my experience though, I found no
correlation between programmers with a CS degree and being a good
developer/architect.

I will say that those of us who didn't graduate (including me, I dropped out)
often feel they have something to prove and will work harder.

------
Jarwain
Mirror:
[https://web.archive.org/web/20180731000241/http://rubyhacker...](https://web.archive.org/web/20180731000241/http://rubyhacker.com/blog2/20150917.html)

------
tonyedgecombe
If you require programmers to have a deep understanding of computer science
then you will never have enough programmers. This is good for those people
with the qualifications but not necessarily good for the rest of society which
ends up with an unmet need.

------
jteppinette
I dropped out of a Computer Science program at KSU. It’s been great.

~~~
sus_007
What have you been doing since then ? Are you pursuing self-study ? I'm
curious .

~~~
jteppinette
I am always working on side projects that usually become businesses or lead to
a consulting/full time opportunity. I’m currently working at Apple as a tech
lead.

I worked my entire way through school doing IT (6 months) then software
engineering (2.5 years) before I was offered my first full time by some
coworkers that went to a startup. The full time offer also lined up with my
term as president of my fraternity ending, so it was time to get out.

------
devxpy
> If you want to make really interesting exciting things that have never
> existed before, if you want to make a tiny little difference in the industry
> and change the world just a little bit, then you do need that degree. If you
> want to make the tools and libraries that the lower-level people use, you do
> need that degree

I don't know about you, but I need some solid evidence that you did anything
close to that so I can consider you seriously.

------
ThJ
As a person who never had a degree but whose knowledge goes above and beyond
what 90% of the market needs and well into CS territory, this article insults
me. It's also a painful reminder of similar prejudices in people who are
looking to hire. I often end up doing the kind of basic development the author
talks about and I'm not happy about that.

Why not just take a CS degree? Because I'm a poor fit for the education
system. That's why I dropped out of high school in the first place.

Also, I feel like I've paid my dues already. I've been learning about computer
software (and hardware and electronics) for 27 years. I haven't stopped at
merely what I needed to know to do my job. I have done a lot of self-study. I
routinely roll my own libraries and write embedded code, and I had a patch
submitted to the Linux kernel a few years back. I also design analog and
digital circuits on my spare time.

I feel it's not about having a degree at all, because I'm living, breathing
evidence of that. I've met people with CS degrees who can barely write a line
of code. Maybe they didn't go to a good college. Maybe they did, and it's
possible to pass the exams by cramming (followed by forgetting).

Saying that you can't do advanced stuff without a CS degree is snobbery.

~~~
rayiner
I don't think that's a charitable reading of the article. The author is not
saying that you can't have this knowledge without a degree, he's saying that
few people in the field today have this knowledge, because they don't have the
degree. The two assertions are different: there are things a degree teaches
you; if you have the degree, you probably know them. While you can't judge
whether any given individual has the same knowledge without the degree, you
can:

1) Expect that 1,000 people with the degree will mostly have that knowledge;

2) That 1,000 people without the degree will mostly not have the knowledge.

~~~
white-flame
I disagree strongly with your point #1. "This knowledge" specifically is deep
full-system understanding, as quoted in the article:

> _" They use languages, editors, compilers, and operating systems; but they
> don't have the first clue about how to create any of these things or even
> how they really work."_

And yes, he is asserting that people should get this from a degree:

> _If you want to build doghouses, just pick up some skills with hammer and
> nails, and then go for it. If you want to be an architect who designs and
> builds skyscrapers, then go get a degree in architecture first._

The full depth of applied understanding comes from personal interest &
experience. Whether or not a person with such interest pursues a CS degree is
completely orthogonal.

Plus, these applied low- & mid-level computational practicals have nothing to
do with Computer Science; they are programming, architecture, and engineering.
People generally do not complete CS degrees with any specific imparting of
these 3 facets, unless they use their university time to pursue their own
interests & ambitions in the field. And again, such people can and do pursue
those outside of university, especially in their pre-university age
exploratory years, and on-the-job experience with real systems.

~~~
rayiner
> The full depth of applied understanding comes from personal interest &
> experience. Whether or not a person with such interest pursues a CS degree
> is completely orthogonal.

It's not orthogonal, but rather highly correlated. Combinatorics, graph
theory, computer architecture, etc., will all be part of a university CS
curriculum. Someone who has a CS degree will _probably_ know those things (or
at least recall them after a brief refresher).

~~~
white-flame
Combinatorics and graph theory have zero to do with this practical knowledge.
I'll grant that computer architecture classes introduce some relevant
concepts, but this foundation can be had from anywhere as its matters,
history, and details are widely discussed in the open online as a persistently
current practical concern.

People like the author, with a degree and lots of experience under their belt,
really overestimate what the degree specifically gave them, vs what they
learned through decades of experience as they developed their craft. When it
comes to practical, applied programming and skills of abstraction, informed by
deep knowledge of what goes on under the hood, vanishingly small amounts of
that come from university education.

Again, I will be careful to separate out those who do actual Computer Science
on the job from this practical craft of quality programming. The former is
much more rare, but is a separate field.

------
anfilt
He calls it a rant, but I would say its just being honest.

------
oyebenny
My Alma mater on HN? Weird!

~~~
abhiminator
Curious to know what's weird about KSU showing up on HN. Is it an anomaly?

------
andrewmcwatters
> If you want to make the tools and libraries that the lower-level people use,
> you do need that degree.

No, you need to somehow invest more time to build more features than another
sucker out there. That's almost entirely it. Period. Shit is just fast enough
these days, and if your industry cares about performance, well then maybe
understanding something about caching that can be learned in less than a day
from a blog article will help you with 80% of your problems.

There's plenty of work out there that craves better solutions, and a degree is
absolutely not even a nice to have at this point. Let me repeat: there are
fundamentally basic applications and software solutions that various
industries are dying to have exist, millions of dollars on the line if you
know what industries in question, that simply just take a damn long time to
implement but every individual piece is so far removed from so much as a basic
comp sci 101 algo class, that you're literally just talking about business
logic at that point.

~~~
tonyarkles
That’s all true. The flip side is that there’s also problems that do actually
require specialized training. An example that comes to mind for me from a few
years ago involved real-time simulation of a constellation of satellites. The
accuracy was on the order of meters. I ended up implementing RK4 as a solver,
and had to use pretty complex differential equations (2nd order effects matter
at that resolution).

The project also involved real-time bitstream generation and modulation at
10MS/s. That was a mixture of understanding DSP and some clever hacks to get
the performance we needed on the hardware we had. Oh, and concurrency without
race conditions, because we needed to use every core we had to make it all
work.

Yes, there’s lots of business problems that can be solved by programming
without much computer science. But there’s also a huge pile of problems where
it’s not even clear that it’s possible to solve using current tech. I,
personally, much prefer the latter, but to each his or her own.

