

Ask HN: Your opinion on self-taught programmers? - nicoschuele

Some time ago, I wrote a little post on my personal blog titled &quot;Self-taught vs formal education in programming&quot;. You can find it here: http:&#x2F;&#x2F;bit.ly&#x2F;12131O7<p>To my surprise, the stats of my blog exploded. Even though I didn&#x27;t get many comments, I received quite a few e-mails asking me how to become a self-taught programmer. Today, I posted what I think is a very valid path, for anyone with the drive and passion, to learn: http:&#x2F;&#x2F;bit.ly&#x2F;1246qMU<p>I am very interested to know what&#x27;s your take when it comes to self-taught coders. Are you one of those? Have you hired one? Do you think self-taught ones are not as good as those with a formal education?
======
betterunix
Frankly, I think the value of formal education is underrated by both hackers
_and university professors_. CS departments generally have low expectations of
their students, with the exception of the "Top 5" schools. I have been on
either side of this: as a teenager, I was self-taught and learned how to
program by writing thousands of lines of code, and in college and grad school,
I received a formal education in computer science, but I had to go out and
learn more about the topics my courses covered on my own. A formal education
is immensely valuable to writing more than just mundane code.

The key problem with being self-taught is that it is up to you to find the
things you should be learning. It is very easy to miss whole topics that may
be interesting or enlightening, or may even change how you think about
programming. Here is an example of something I would never have known without
a formal education:

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

It is easy to gloss over it, but this is a _completely different way to think
about programming_. You might not see it used much in the real world, but it
opens your mind to a new way to think about problem solving and can help a lot
in understanding other things (like model checking or natural language
processing).

There is also the matter of understanding certain abstract concepts that are
very important in both theory and practice. Asymptotic analysis comes to mind
here, though even a lot of people with formal educations seem to have trouble
with it (probably because they thought their theory courses were a waste of
time). Algorithms and data structures are also prominent examples of things
that are easy for self-taught programmers to miss, especially those that are
not included in their favorite languages' standard libraries.

All-in-all, I think the best programmers are those who have both a formal
education and who can and do learn on their own. Self-taught programmers
usually know their language of choice at a deep level; coupled with a formal
education, you can do a lot.

~~~
etler
One argument I hear a lot is that self taught programmers can teach themselves
the theoretical stuff later on their own.

As you mentioned, one problem is that you wont have the direction. I think
some other problems that are often overlooked is that you wont have the drive,
or the time.

When you're in college, learning is your full time job. You have deadlines and
requirements for that learning. All of your time is dedicated to it.

If you try to teach yourself these things while working, are you really going
to be as dedicated to it as a student can be? In practice, I don't see this
happening.

Another complaint is that you're not learning the applied skills you'll need
in the industry. My view on that is that you have your entire life to work and
learn the tools of the trade. You only have one real chance to go to college
and learn the theoretical stuff.

If you're burnt out on school, by all means, take a few years off, see how the
working life is, save some money. But before long you'll have more
responsibilities, maybe a family, and no time. The longer you wait, the harder
you'll have to work to go back to college.

------
adambard
I'm self-taught in the sense that I learned Javascript before I graduated high
school and got a chance to learn to program in a formal setting. Also, I got a
degree in Electrical Engineering, even though I use exactly none of that in my
current position as... wait for it... a web developer.

I think self-taught or not is not the question. The real question is, are you
passionate about programming, or at least about creating things via
programming. There are a lot of people who have taught themselves to program
as a means to an end, and I think that makes them "better", in some sense,
than someone who started their CS degree in search of a paying job without
ever writing a line of code.

Of course, the above is very binary, and as comfortable as we programmers
might be with that, (and if I may issue a blanket cop-out at the last second),
I think "self-taught" is a small facet of the whole that makes a "good" or
"bad" programmer.

~~~
nicoschuele
This: "The real question is, are you passionate about programming, or at least
about creating things via programming."

I can't agree more but I know there are many who believe the exact opposite
and think that only academic education can turn someone into a good coder.

------
CyberFonic
There's a difference between self-taught to get a specific job done or self-
taught to learn foundational CS / SE concepts, methods, etc. Some university
courses are nothing more than a souped-up "Learning Java in 21 days" padded
out to 3 years.

Unfortunately there are lots of university trained "software engineers" who
can barely compete with your average self-taught programmer. So in terms of
getting a job it depends on the company's hiring and evaluation processes.
Typically big corporates want degrees and many startups look at what you've
already accomplished.

------
toddan
It dose not matter if you are self thought or not. The only thing that matter
is how smart you are. I have met people with degrees that for some reason
don't know shit about the fundamentals of CS and then there is smart people
that just gets it.

------
mouseroot
All i know is school dosent come even remotly close to preparing you for
programming in the real world im self taught and even if I had todo it over
again I would not waste any money trying to learn programming from a school.
not to mention you can find EVERYTHING you need to learn and implement
programming w/o a school and schools are usually 5-6 years behind so they will
be teaching vb6 when the standard is win8rt or very basic php when you should
be learning new technologies and concepts...also in my experince most schools
dont even teach its more like "heres the book...read it and write an essay"
(honestly which employer is gonna ask for an essay or a "open-ended-response"
to my projects

~~~
mouseroot
if you lean more towards web dev...then you most deffeintly dont need
school..web programming is dead easy even for a beginner who has never touched
programming. application/desktop programming is a little more involved...the
main difference being web dev is mostly more cosmetic(eg change something a
refresh to see its output) compared to the compile-link and run phase of
application dev... I honestly think if your passionate about w/e your learning
then your employer(if he/she actually cares about the quality of your work)
will hire you without a degree/diploma (im not suggesting you drop out of hs)

~~~
pestaa
> _web programming is dead easy even for a beginner who has never touched
> programming_

That one hurt. Some say it's easy as pie even for a kid, some say it's so
complex with all the layers going on. Why can't we never see it as it is?

I also firmly believe that anyone who thinks web development is easier than
any other kind of application development should stop writing crappy PHP and
improve the quality of her/his own work.

~~~
h-go
You mean the fact the writing procedural code is outdated but still being
used?

------
breadbox
Really, almost every programmer is a self-taught programmer. The programming
that you get in a formal education barely scratches the surface.

~~~
betterunix
Yeah but at the same time, you are not _just_ learning how to program when you
go to school (if you are, then you are being ripped off). You are also
learning how to think abstractly about programming problems, how to analyze
programs, what sort of programs are possible, etc. It is hard to know _what_
to learn when you are self-taught, and it is easy to get caught up in minute
details while missing the bigger picture.

~~~
michaelwww
Talent, curiosity, interest and practice will find a way. I think what you are
saying applied pre-Google, but now it's easy to see the path ahead.

~~~
betterunix
You need to know _what_ to search for on Google. Curiosity is good, but some
topics are just not obvious enough for a curious hacker to search for. This is
particularly true of more advanced topics, that are often not covered well by
Google searches or wind up buried in noise.

~~~
michaelwww
Just follow the links and Google the keywords mentioned in the writings. I'd
be in favor of people going to school to learn how to use Google.

Edit: that wasn't a knock at you, but I am often surprised at some of my smart
friends who don't know how to use it, as in not knowing that the dash in front
of keyword will eliminate those results.

