
How To Learn To Code In 2013 - nbashaw
http://blog.enoughtobedanger.us/how-to-learn-to-code-in-2013/
======
theoj
>> The reason it’s so hard for adults to learn new things is that there is no
authority figure punishing them if they fail.

I think it's way more than that. Once you're out of school, there is no one to
set goals for you. Even assuming you do have goals, there are no structured
classes or textbooks to get you to those goals with your eyes closed. You are
essentially both the teacher and the pupil and you must figure out your own
curriculum in addition to doing the learning.

~~~
capkutay
I agree. Studying CS in college I never had an Aha! Moment or a specific
moment where I knew I "learned to code", but the cumulative knowledge I gained
from following the strict college computer science curriculum gave me that
skill over time.

------
dysoco
I dislike how people say "Learn to code" and that automatically implies that
it's HTML, CSS and JS: There is a whole world out of that.

~~~
yk
Especially since HTML,CSS and JS is actually a way to not learn to code. (Or
rather a dangerous way to learn coding.)

To expand a bit, the most fun part of coding is clever tricks based on
understanding a system. But with building a website, you get nice results by
just treating coding as a complicated way to do photoshop, and settle for
this.

------
eggbrain

      In my experience, the best way to learn to code is to find someone who needs a website built and offer to do it for really cheap, though not free.
    

I'd highly disagree on this. The minute someone offers some sort of
compensation for work, the dynamic of the relationship changes -- from helper
to employee (and in some cases servant) -- especially at the low-ball prices.
From what I've found, the people thinking a website can be built for $100 are
the type of people who will bug you as to why it's not done, demand extra
features, wonder why it doesn't look like
{{insert_dynamic_million_dollar_website_here}}, etc. And if you are just
starting out, you probably don't have much contracting experience to have
contracts ready with expectations of work/time to commit/deadlines/etc.

The best solution I found when I wanted to learn to code was that I had
something I wanted to create that I couldn't -- not anything huge, just
something small. Once I got it up and working, I had so many questions -- "why
did it do that?", "why didn't it work?", "what if I wanted to do X?", and that
fueled me to find out more information so I could answer those questions.

I also disagree that "we have to create a context where we have no choice but
to learn." What people need, instead, is to bring back our child sense of
curiosity. When I was reading up on the fiscal cliff, I was confused -- why
were we in this mess? Why couldn't we do X, Y, Z? If you are overwhelmed with
questions, many will just quit, feeling the answers are too insurmountable.
The trick is to ask just enough questions so that you can understand a
slightly larger view of the puzzle, which will help you answer the next set of
questions.

~~~
nbashaw
> "The minute someone offers some sort of compensation for work, the dynamic
> of the relationship changes"

That's the point. If you're doing something for free as a helper then there's
no consequence for saying "hey sorry i haven't gotten around to the website
yet, i've been really busy...". More often than not, that's exactly what we'll
end up doing, because learning a foreign language makes our brain hurt.

> "What people need, instead, is to bring back our child sense of curiosity."

I'm really glad you are able to make that work, but I'm positive that
curiosity is not as reliable as fear.

~~~
eggbrain
>That's the point. If you're doing something for free as a helper then there's
no consequence for saying "hey sorry i haven't gotten around to the website
yet, i've been really busy...".

Agreed, but if you have no experience, nothing will turn you off faster to
learning than a client who yells or berates you for your lack of experience. A
teacher is there to nurture your love of learning -- a client doesn't give a
damn about you wanting to learn, they just want the project done at a certain
time/budget/capacity.

>I'm really glad you are able to make that work, but I'm positive that
curiosity is not as reliable as fear.

The problem with fear that I've found, is that it only pushes you to slightly
outrun that fear, not run miles ahead of it. I don't need to outrun a lion,
for example, I just have to make sure that I run faster than the person next
to me. When you use that for learning, you'll only learn what you need to
complete the task, not use creativity to ask questions and learn and expand
your knowledge.

When projects come from a question, or from a problem, I feel much more likely
to keep asking questions and learn to fix my problem.

~~~
nbashaw
> "...nothing will turn you off faster to learning than a client who yells or
> berates you for your lack of experience"

I never got berated, because I made it clear up front that I was a beginner
and that I was charging a very small fee. It motivated me to make something
that was worth it. I'm confident that most people have the ability to make
something good enough to justify a $100 fee, it's just that they don't have a
reason to try hard enough.

> "The problem with fear that I've found, is that it only pushes you to
> slightly outrun that fear..."

This is a great point - in fact, when I was first starting out I was often
ready to be done with projects. They were stressful! But they taught me skills
that I don't think I'd have learned otherwise, that I could have more casual,
curiosity-driven fun with later. I doubt anyone would put themselves in a
stressful situation like that unless they had some genuine curiosity. It
didn't permanently scar me. It just was an accelerator, like taking off the
training wheels. Stressful and scary but a necessary push forward to learn
faster and stretch myself.

------
neumann_alfred
I like that, if only because I plan on / am doing that anyway :) I am amazed
by what is _already_ possible with "just" a modern browser and a decent
machine, and the fact that it will get so much better in the near future..! I
played games on my Amiga 500 just yesterday, in the afternoon I painfully
tried to get SDL to draw enough pixels fast enough to make particles that look
nice (forget alpha!)... now I can draw whatever I want with awesome speed,
even without being an optimizing or math guru, send a link to someone or a
million people, and they can play it seconds after I made the last change.
WTF? Forget flying cars; did any of you see this coming 20 years ago? I love
it :D

Oh, and happy new year! May you find many ways to make people happy, so they
may make you happy in return.

------
edj
_The reason it’s so hard for adults to learn new things is that there is no
authority figure punishing them if they fail. ... If we’re serious about
accomplishing our goal, we have to create a context where we have no choice
but to learn._

A great way to do this is 1-on-1 tutoring. As an adult, I learn faster under
tutoring than in any other context.

Part of the reason is that a (competent) tutor can keep me right at the edge
of my ability during a session, which is where learning is fastest.

Another reason is that fear of embarrassment motivates me to do my homework.

You could apply this to programming by defining a specific thing you want to
make (e.g. roll your own blogging cms in Rails), then hire a programmer to
coach you an hour or two per week and assign homework. You'd learn quickly and
build your app at the same time.

~~~
nbashaw
Very true, also probably less stressful. When I was a student I couldn't
really afford it though. The nice thing about doing freelance is you make
money! haha

------
henning
I think a good first target for a static web site would be a restaurant
website.

The goals are pretty simple, you can probably put one together in a few days
or a week, and just by not making it awful you actually produce a website that
is better than the vast majority of restaurant websites.

~~~
nbashaw
That's a cool idea! I had a lot of luck with student organizations since I was
a college student. I also built a site for a book my professor was writing, a
board game that a friend was launching, and a professional parent
psychologist. There's tons of small business out there that have little to no
web presence but feel bad about not having something better up. They're more
than willing to pay a learner $100 to give it a shot at creating something
better.

------
10098
I think the best way to learn programming is the same as it was in 2012. Or
1995. Or 1970. All you need is a compiler/interpreter for language X, an
introductory course for language X, and a nice entry-level CS book. But most
of all, you need passion. Without it, you are doomed to quit.

------
klrr
I am going to (try to) learn programming next year. I'll start out with SICP,
read all chapters twice and watch all the lectures. If that's to difficult
I'll read Simply Scheme first.

------
Vendek
First of all, HTML and CSS is not coding, and second it won't result in a
'serviceable website' as sites need to be dynamic these days, and you won't
get paid for a static website anyway. This is a bad post and the author should
feel bad.

~~~
nbashaw
I kind of feel bad that the switch from "learn to code" to "why schools work"
was so jarring. I definitely need to do a better job making it a bit more
skim-able. But I definitely don't feel bad about advising people to start
learning to code by learning HTML and CSS if their goal is to eventually learn
to build web-apps.

It certainly is coding in the most literal sense of writing code to be
interpreted by a computer, although it's not a programming language. You are
correct about that. Nevertheless, it's a great starting place for beginners.

You definitely can get paid for building static websites. Somehow I did.

~~~
harrygold
Thanks for the good article. It definitely resonates with me and I will be
trying to develop some habits in the next 30 days (every day). I am certainly
not an absolute beginner (I know some html and css)but I am not a programmer
at all and your article gives me some food for thought as I embark on learning
a bit about javascript.

~~~
nbashaw
Awesome! I'm glad you got something out of it. If you ever want to chat about
strategies email me! nbashaw [at] gmail

