

Ask HN: What are the consequences of learning something by yourself? - solipsist

All of the technical knowledge that I have comes from what I've taught myself. This is not a choice I decided to make; rather, it was the only option I had given the circumstances. I ended up teaching myself HTML, CSS, Objective C (and iPhone development), and Java on my own. Besides a little help here and there, I learned these scripting/programming languages by means of the Internet or books. W3Schools, Apple's iOS documentation, coding blogs, StackOverflow, and a few books is what I had. Now that I think about it, I've been leading the life the upcoming generation will have. It's all centered around the next type of learning that is emerging in the age of the Internet. Many of us who would have otherwise stayed away from programming are attracted to it via the Internet. The Internet does many things; that is,<p><pre><code>  1. It sparks interest in the subject
  2. It provides the sources necessary for learning the subject
  3. It gives people ways to use their knowledge of the subject
     towards publishing their creations
</code></pre>
In short, the Internet is giving children the resources needed to learn programming and publish the creations they make using their newly-found skills. All of this is great, but it has to make us wonder about the consequences of self-learning? Personally, I've seen very little benefits from this new method of learning. Formal teaching exists for a reason. In learning, I've often missed out on the basics. I learn by seeing feedback, which often means that I only strive for the results while ignoring the means. While people say learning a new language is easy for a programmer, this is not true for me. By skipping out on the rudimentary basics (due to the lack of formal training and motivation), I find my methods of learning to be counterproductive in the long run. The lack of these basics make learning a new language, or even just a new feature in a language I'm familiar with, incredibly hard.<p>As I'm sure a lot of HN users have taught something to themselves before, I'd like to hear your feedback. I'm especially looking for people whose first encounters with programming were by themselves, as I think that's the most important time for a programmer.
======
dwc
_Personally, I've seen very little benefits from this new method of learning._

Except that you learned programming where you otherwise wouldn't have done?

Like you, I learned to program on my own. I learned well before the internet,
and let me tell you that it's easier and better with it than without. As for
missing parts of my education, they are there and they are real. I've
attempted to broaden my knowledge by reading and experimenting, and I would
suggest that you do the same. This is the difference between learning some
HTML, CSS, Javascript so you can put up a web page and the ongoing education
that's required to stay current as a programmer. Ongoing reading and playing
is required whether you've got a degree or not.

For a broad introduction to your craft go buy _Code Complete_. For a survey of
popular programming language paradigms get _Seven Languages in Seven Weeks_.
There's a lot more to read but seriously reading those two will be a nice
start and will have a practical impact for you.

~~~
solipsist
Thanks for the book recommendations - I will definitely look into getting
them.

> _Personally, I've seen very little benefits from this new method of
> learning._

What I meant by this statement is that I saw very little benefits from this
method _in comparison_ to the traditional method. While it is not entirely
impossible to go back and relearn the basics the right way assuming you've
already taught them to yourself, it is most definitely a waste of time and
something that should be avoided. As I said before, I think the first
introduction to programming is the most important part of the learning
experience. If the formal introduction is done well, you should be able to go
off into the real world with what you learned and discover new languages by
yourself. However, the lack of this introduction makes kids go off and teach
it to themselves via the Internet. The solution? Schools should offer the
basics of programming at an early age (10-11 years old). From there, those who
want to pursue programming in greater depth can seek more instruction or do
the learning by themselves.

> _I learned well before the internet, and let me tell you that it's easier
> and better with it than without._

While I'm sure it's easier with the Internet, it is not necessarily any
better. The easier it is, the less time you'll spend learning it.

