Live data from Hacker News

Ask HN: Non-technical people, how did you learn to code?

news.ycombinator.com

21–30 of 58 posts

Re: Ask HN: Non-technical people, how did you learn to code?

#21
It really depends what you want to do as a programmer. Different programming languages do better or worse jobs of making the general concepts of computer science digestible. My advice for someone just starting off, who wants to be "well rounded", is to start learning Python. 'Learn Python the Hard Way' followed by a couple more introductory tutorials will help you get your head around a lot of the concepts of computer science that are found in most programming languages.

From there, it's worth working on a couple projects. You'll have built a few by following the introductory Python tutorials, but pick something you're interested in and actually build it. It doesn't need to be a huge project, something small will do. Once you understand the syntax of the language and why you use specific concepts, building something helps cement that knowledge.

Once you've built a few of your own programs, you'll have a better idea of what you're actually interested in, and what you can do. You won't need to follow a specific route by then, you'll be able to learn what you want to learn. I'd suggest that you pick up a functional language next. Haskell does a great job of packing in a LOT of computer science concepts, especially on the functional side of things. Follow the same process you did with Python. Start with a couple introductory tutorials, then build a couple programs.

If you've got Python and Haskell under your belt, you're really ready to tackle anything you can think of. Learning a new language will be easy. You'll find deep library support for pretty much anything you could want to do. From there you really can pick anything you're interested in and built it or learn it.

Re: Ask HN: Non-technical people, how did you learn to code?

#22
First, I'm about as technical as they come (8 years old sounds about right), so take my advice with that in mind. But I think becoming "technical" is critical to learning how to code.

I don't mean you should start solving equations in your spare time. I just mean find a concrete problem that you're motivated to solve (i.e. something fun), and then solve it.

Maybe you think AI is cool, so try to figure out what it takes to make an interactive chat with the computer (easier than it sounds). Maybe you think computer graphics are cool, so figure out how to make a web page that has a ball bounce when you click it.

Above all, make the path interesting and fun for yourself. You'll get a lot further that way than you will by reading books or watching screencasts that brainwash you into the author's (or the programming language's) way of thinking. Most of programming is a transferable skill set anyway.

That's what I mean by becoming "technical". Just make something you think would be cool, and when you're done, make something cooler.

And if you don't know where to start, just remember this: Google is your friend. Search engines will point you to plenty of material you can copy-paste, and will answer 99% of coding questions you could possibly have. After 15 years of coding, there's still not a day that passes when I don't look up how to do something.

Re: Ask HN: Non-technical people, how did you learn to code?

#23
A hugely important thing to keep in mind when learning is "humility is endless". I remember when I started out I felt like I knew hopelessly nothing. Well it turns out that this is actually a good thing. You learn much better when you approach everything with the attitude of "I don't know this so I am open to everything" (There's a concept of 'Beginners Mind' in Zen Buddhism which is similar). I find that new programmers are discouraged by this feeling, when in fact the most dangerous thing is when you start to approach problems with the attitude (and we've all done this) "Okay I'm a smart guy , this should be easy to understand". So cherish that feeling of ignorance, and work to maintain it (the feeling not the actual ignorance).

And of course the biggest thing is to try to put in 1-3 hours a day of practice. Coding a problem you have solved before is not practice. Always be pushing yourself. At first this is very easy since everything is new, just code 1-3 hours a night. But as you get better continue to try to learn new things, code problems from a book you're reading, start learning a programming language that challenges you, implement new algorithms, refactor and improve something you've written etc. Essentially practice is very closely related to humility.

Put in enough hours of true practice and you will be a better programmer.

I also should add that I did find taking formal classes helpful (and it can help with pushing you to realize how much you don't know, force you to practice etc). People make a distinction between autodidactic and formal learning, but really the best solution is both, and they are not mutually exclusive so there's no reason not too.

Re: Ask HN: Non-technical people, how did you learn to code?

#24
post #2

I want Codecademy to extend their language set and number of courses. This would help me greatly.

Although I have been programming for many years, I have never really given Javascript a chance. A friend showed me Codecademy a few days ago, and as a newcomer to the language, I really liked to way the basics were taught.

Re: Ask HN: Non-technical people, how did you learn to code?

#25
I was 14 and faced the same questions you do. I was surrounded by all these guys who could bend bits with their thoughts and had pointers and stacks for breakfast. They all used see and did stuff that seemed amazing to me at the time. Add to that the fact I felt more like a 'creative', in the narrowest of senses, so I was not sure how to reconcile both my interests, my friends were no help and I did not know much about the demo scene, nor of people like _why and the Processing guys.

Somewhere along the way I found Perl, and the way from A to B was not paved with incantations. It took me a copy of Randal Schwartz's "Learning Perl" and a Christmas Holiday to get really hooked — the immediacy of thinking and doing and making mistakes and fixing them was paramount to my believing programming was not only for the initiated.

While I second all the recommendations for having a mentor and working closely with knowledgeable people, I disagree with putting IDEs in the middle and choosing PROJECTS (more on that on a second). I sincerely think there's a great benefit to shortening the path between you and running code, and I believe dealing with compiler errors and linker spewage can be detrimental to the overall purpose of getting acquainted with code and thinking about programs.

About projects: having something as a goal is definitely a must; I don't object to that, but to all the baggage the term _project_ carries. Have something around which you'll structure your thought, but allow yourself to tinker and to put it in the backburner if it proves itself to be not challenging enough or too daunting a task for your current knowledge level. If you're neither having fun nor being challenged, you won't improve.

If you want specific tips on what tech to use, it would perhaps be better if you told us what you want to achieve. Do you want to code for the web, to take your designs to the next step, to code simple workflows?

Re: Ask HN: Non-technical people, how did you learn to code?

#26
post #22

First, I'm about as technical as they come (8 years old sounds about right), so take my advice with that in mind. But I think becoming "technical" is critical to learning how to code. I don't mean you should start solving equations in your spare time. I just mean find a concrete problem that you're motivated to solve (i.e. something fun), and then solve it. Maybe you think AI is cool, so try to figure out what it tak…

Interesting approach. So how should I become technical? Let's say I'm interested in AI, I can't just think about a problem without a certain base knowledge right?

Re: Ask HN: Non-technical people, how did you learn to code?

#28

A hugely important thing to keep in mind when learning is "humility is endless". I remember when I started out I felt like I knew hopelessly nothing. Well it turns out that this is actually a good thing. You learn much better when you approach everything with the attitude of "I don't know this so I am open to everything" (There's a concept of 'Beginners Mind' in Zen Buddhism which is similar). I find that new program…

Is there a reason why you recommend 1-3 hours and not let's say 6-8 hours (split wisely)?

Re: Ask HN: Non-technical people, how did you learn to code?

#29

I was 14 and faced the same questions you do. I was surrounded by all these guys who could bend bits with their thoughts and had pointers and stacks for breakfast. They all used see and did stuff that seemed amazing to me at the time. Add to that the fact I felt more like a 'creative', in the narrowest of senses, so I was not sure how to reconcile both my interests, my friends were no help and I did not know much abo…

I'd love to code for the web and the mobile web. And I chose my weapons: RoR, HTML5 and JavaScript. When it comes to learning I'd love to be prototype/side-project proficient, so than I can quickly code an idea and show it to people and iterate from there.

Re: Ask HN: Non-technical people, how did you learn to code?

#30
Find a language - start learning a language. Have a project you want to build. Then start learning a framework. Python -> Django, Ruby -> Rails.

Practice. You'll think you understand something, to only realize a few weeks later you don't. Just gotta keep practicing until you really get it - it takes a few 'Oh i think i got it..nevermind's

When you get stuck, try to answer it for a while, but if you are truly stuck - raise your hand and ask for help. Ask friends, or Stackoverflow.

The great thing about Stackoverflow is that explaining why you are stuck will help you better understand the problem. As you get better, you'll notice your questions get better.

Post reply on HN