
Why is Learning to Code So Hard? - startuprob
http://www.startuprob.com/learn-to-code/
======
ams6110
_Sudden leap in difficulty – Nearly everyone noted that at some point in their
learning they stumbled upon a sudden leap in difficulty that crippled their
ability to grasp the follow-on concepts_

I have hit this in every subject I've studied where I wasn't really motivated
to learn the material. The reason this happens is that you reach a point where
suddenly all the basic concepts start supporting the follow-ons. If you never
_really_ learned the basics, you will be lost. For example this happened to me
with foreign languages. I had no real interest in learning French, but a
foreign language was required in school. The first year was easy: basic
vocabulary, stock phrases, and simple rules of grammar. The second year was
not too bad either. But I never really learned anything... I would cram before
exams and get decent scores, then promptly forget the material. Third year,
when you actually had to put it all together... I was sunk.

If you're studying something, and can't motivate yourself to _really_ learn
the basics, you can only go so far. If you're studying computer science
because you heard the jobs pay well, but you don't _really_ care about
learning the first and second material, you will hit that "leap of difficulty"
at some point.

------
bdcravens
Because it should be.

That's actually not the correct answer. For most developers, it's not hard.
Not only is it not hard, it's a joy to learn a language, or two, or eight. If
this is a struggle, perhaps this is a barometer that you're on the wrong path.

I'm not saying coding should be limited to the elite. If you want to learn
code because there's something burning inside of you, that's awesome. However,
I'm thinking of the MBA founder who decided the startup thing was the ticket.
They discover they need a developer, and that's expensive.

"Hey, this can't be that hard! I'll just learn to code!" I see this movement,
and it's scary. Not scary because it's a threat to me. Scary because I'm a
decent developer (been doing it sine 1998), and there's a lot of mean scary
people who are smarter than me who want to break into code I've written. I
can't imagine how insecure code from someone who wrote their first line 6
months ago. Learning is cool, we were all there. The idea that production apps
are being launched based on this experience level definitely isn't cool. I
might be totally off base here, but I feel like this is a rising trend.
Crackers are going to have a field day with all the superduper.ly's out there.

It takes 3-5 years to get a marketing or management degree. Anyone who thinks
they are going to learn to code in 3 months and build the next Instagram is so
delusioned they make the most southern Baptist church look like a center for
logical discourse.

~~~
eclipxe
I agree, well said!

------
macavity23
For the same reasons that many people find learning mathematics so hard: it
requires abstract thinking and the ability to layer abstractions on top of one
another.

I think anyone can learn to code, or learn maths, but there's no doubt that
some folks are MUCH better predisposed to it. That said, some good tips in the
article.

~~~
laumars
I found learning to code easier than learning to write in my native language.
I think some people are just better suited to some subjects.

That said, I never did enjoy writing but always enjoyed programming, so I
think an earlier commenter hit the nail on the head when he said it's down to
having enough interest in a subject to learn things properly:
<http://news.ycombinator.com/item?id=4933004>

------
unoti
Learning to code is hard, and everyone's specific struggle is unique. The key
issue though is why do they fail to learn, and that answer is the same for
everyone that fails: they give up.

All kinds of mental talents can be helpful for learning to code, but tenacity
is probably the most important. Better learning materials can be great, and
they're getting better all the time, but they are still no substitute to an
unshakable commitment to being a developer.

For my 12th birthday in about 1980, my grandparents heard I liked computers
and bought me a college level textbook on microprocessors. I didn't understand
a word of it when I first read it really. But I did read it, and re-read it,
for a couple of years. And it's one of the key reasons I wasn't afraid of
doing assembly language a while later when I got my first computer. The book
was a terrible way to learn, and it was completely at the wrong skill level
for me. But I was really into it and made up for my lack of capability with a
tremendous commitment and huge amount of time, slurping up every bit of
information on computers I could find.

You've only lost when you quit fighting.

~~~
startuprob
This is an incredible answer - persistence is absolutely key. What I'm
exploring is how to make persistence efficient. How can we make it so that
people don't have to spend that horribly inefficient time reading a textbook
like that?

------
ChrisBanner
Conversations about "learning to code" frighten me because they overlook a
necessary foundation in engineering concepts like abstraction and the value of
simplicity. If you're looking to hire software developers, stop interviewing
"coders".

~~~
verdverm
Truth be told!

I dropped out of college to learn to program, thought I could teach myself
everything. The issue is that tutorials and books gloss over the theory.

It wasn't until I returned to college for a CS degree that my eyes were opened
to what I was missing.

Why is this algorithm better than that algorithm? BigO... What does the
compiler do with my code? PL... How does the code I write interact with the
OS? What is concurrent vs parallel? amdahl's law...

why can for i ... for j... be better than for j for i

pass by value vs pass by reference which languages, when...

How many people use languages these days that require them to manage memory
themselves?

Coding is hard because coders don't learn the theory of computing and the
abstract concepts that extend beyond any particular language.

EOR.

------
taeric
Why do we think that coding is at all unique in this regard? Have you looked
through your standard fare cook book? The leaps from step to step are
sometimes astounding. Yet folks are usually able to pick that up. Same for
sewing. Show me the typical sewing pattern and it looks like someone dropped
some lines somewhere. How is anyone able to learn that?

~~~
thejteam
It never ceases to amaze me that the IF..THEN..ELSE concept seems to be beyond
the ability of my wife to comprehend, but she can do things with knitting
needles that are far more complex. She once tried to explain a "simple"
knitting concept and all I could do is nod and realize that this is what she
feels like while looking at a computer screen.

------
dreamdu5t
Why is learning to be an architect hard? Why is learning to be a lawyer hard?

Because it's f*cking complicated!!!

~~~
nacker
Right!! Why do so many people think everything should be easy?

Oh, I know why - their "self-esteem" has been carefully protected from reality
throughout the years they spent being indoctrinated in the state school
system.

------
BrianEatWorld
I think part of it is trying to learn the wrong thing. I am self-taught and
still struggle, but I found one big breakthrough came from returning to
principles.

A lot of people who want to learn to code jump into a language and as soon as
they finish "Hello World", they go headlong into a full scale project. This is
the main culprit behind the unhelpful "help" sections alluded to in the
article. If you don't understand the basics, that inevitable bump in
difficulty becomes insurmountable. It wasn't until after I went back and
figured out basic algorithms, how to properly use and test with an IDE and
other little, less "sexy" details that learning to code became manageable.

------
yarrel
"Too many developers want to stay in their comfort zone."

Too few employers are willing to pay for learning and evaluation.

------
bradleyland
I tend to be a bit of an evangelist in whatever endeavor I'm currently
engaged. I'm a big mouth. There, I said it. With that out of the way, this
tends to put me in the teacher's seat once someone says, "Ok, Brad, show me
what's so cool about this thing you're always talking about."

What I've observed is that there are two types of learners. One set of
learners starts from a set of instructions. These instruction sets are simple,
enumerated lists. The learner executes the steps and looks at the outcome. As
they advance, they might begin to explore deviations in the steps. Reasoning
like, "What happens if I swap steps 2 and 3?"

The other type of learner cares less about the steps and more about the
concepts behind the steps. They begin by asking, "Why do I do step 1" or "How
does step 1 work?"

Everyone I've taken under my wing who engages in the enumerated list approach
hits a wall at some point. When the complexity of the enumerated list extends
beyond their ability to tweak inputs, they become frustrated, and ultimately
give up.

The latter group tends to get further, but it's not a free pass to stardom.
Many still hit a conceptual complexity wall where they fail to grasp some of
the more abstract concepts.

The former group far outnumber the latter, in my experience. I'd posit that
what makes learning to code so hard is that it is more accessible to a means
of learning that fewer people possess.

------
kyllo
It's still hard, but it's getting easier. The open source movement and free
resources like Github, EdX, Coursera, etc. are all making it much easier. The
information is all out there on the internet and most of it is free. It's a
matter of setting aside the time and digging into it.

I'm not a good programmer by anyone's standard yet, but I'm reaching the point
where it's becoming a serious hobby for me. I audited my way through the first
couple computer science courses (in Java) offered by my university, which
posts all the lecture slides and homework online. Then I worked through the
university's web programming course while I wrote an ad-hoc reporting web app
for my employer in PHP. I just finished the two edX courses in Ruby on Rails
and am writing a Rails app in my free time for practice. Now I am starting an
iOS development course to learn Obj-C and the iOS SDK. Also planning to take
online courses about databases, algorithms, and security soon. I have a LOT
left to learn, but that's part of what motivates me.

Point is, though, if you want to learn programming, there has never been a
better time. The availability of free and inexpensive learning resources is
greater than it has ever been. As long as you invest the time and approach it
with curiosity, determination, and patience, you will learn it.

------
dccoolgai
Why is learning to read and write so hard? It seems natural to you now, but
when you were in 1st grade, it was a pretty big challenge...It's not that it's
"hard" or "easy" - the most interesting thing is that you chose to do it.
Maybe a better question is "Why don't more people choose to learn coding?".

------
KeepTalking
Coding requires effort, which is acquired like any other skill such as
reading/comprehension. Many people try to run before they even learn to walk
and this is when the sudden leap in difficulty is encountered. It took me
years( read - coding time and effort) to move from novice to an intermediate
programmer and this occurs each time you want to move up on your skill level.
You need to commit effort, and no doubt you are going to fail before you
succeed. Pair programming, code reviews , mentoring etc ...appropriate to your
own individual learning ability is paramount for success.

I personally found: 1\. Code imitation - coupled with understanding 2\. Code
reviews - of a next level programmer 3\. Blogging/Q & A(Stackoverflow sort)
4\. __CONFIDENCE __as important in becoming a better programmer.

------
sek
I found that I underestimated how hard it was for me in the beginning.

I had to learn C in university and I applied for BA first and thought coding
is for monkeys (What an arrogant prick I was...). I hated it, I didn't
understand anything first but I struggled trough. At some point it made
"click" and I loved it ever since.

The funny thing is, afterwards I was biased in believing coding is easy and it
has been for me from the beginning. It took me a while to realize how hard it
was for me to start.

Anybody here with a similar experience?

------
mrcrassic
Some people find it hard because they are not interested enough to really take
the time to understand it.

Others just don't have the mind for it, like how some don't have the body to
dance or play sports at a professional level.

There are, indeed, some concepts that come naturally to only a handful of
people (kernel development is hard for me; interesting, but hard), but I think
the fundamentals are pretty easy to grasp for most of the mainstream
languages.

Some concepts are just plain

------
mitchi
The thing I notice about people who are frustrated about how difficult it is
to code is that they don't give themselves enough time. Learning how to code,
like any good craft, takes time and that's something most people cannot
understand because of all the flashy and motivating books and tutorials out
there. "Learn Ruby on Rails in 24 hours blablabla". I would say 3 years is a
good start for the total beginner.

------
jwblackwell
Having a meaningful and interesting project to complete that can also grow
with you helps a lot. I was fortunate enough to be paid as well.

When you need to get something done to complete the job it's a lot easier to
force yourself to concentrate and learn. I can imagine if I didn't have that
motivator I'd be too tempted to just leave features out if they were too
difficult.

------
bennyg
I think he hit upon the main point at the very end. If you wanna' learn
something, and I mean really learn it, you've gotta' be invested in it - and
there's no better way to do that then building your own projects. Saying I
want to learn to code, and having to learn to code to see your idea come alive
are two different animals of motivation.

------
hjay
Thanks for the great post.

You mentioned to contact you if anyone is interested in mentoring/being
mentored but I couldn't find any email on your blog except the one for
makersacademy...which is for something else?

~~~
startuprob
Either email address will be fine.

------
gmkoliver
The essay doesn't say when those experienced programmers _started_ learning to
code.

