Why is Learning to Code So Hard?
startuprob.com
startuprob.com
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.
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.
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.
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
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.
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.
Because it's f*cking complicated!!!
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.
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.
Too few employers are willing to pay for learning and evaluation.
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.
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.
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.
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?
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
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.
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?