Ask HN: Best way to teach programming
What is the best way to teach a programming language to someone with little to no software development experience? How have you seen or experienced it first hand?
Some of us are self taught, some learned in a classroom. What methods exist other than self teaching with book and a compiler and what have you seen work best? I'm not talking about something that can be mastered in a few hours like some of these "teach yourself to code" tutorial sites. I mean what is the best way to help people go from 0 to average?
4 comments
[ 5.1 ms ] story [ 21.7 ms ] threadI'm self-taught as a youngster, just pure curiosity, started in Visual Basic 3.0 to 6.0, and eventually Visual Basic.NET, and eventually got into web design (PHP, Javascript).. but I have no idea what would've been had I learned it later in life. But my girlfriend has used codeacademy.com in the past to learn the basics of javascript, html, css, etc.
While these are definitely good learning areas, the best way to learn is to have a real assignment in practical application. In other words, it would be coming up with a few applications that are useful.
To-Do lists. Reminder lists. Building a contact form. Learning how to use and implement API. Learning how to connect and utilize a MySQL database.
As for what program to learn? It is best to look up whats in demand and what is likely going to be in demand in the future. And for that, I could only suggest learning Ruby, Python, or Java/Javascript.
Go, R, Swift, C++, C#, C, PHP are all languages that wouldn't steer anyone wrong, either.
Learning the basic concepts of at least two different programming languages and syntax are especially important. If you can grasp the concept of at least two, you can most likely learn them all and it wouldn't be much of a hard transition for any of them.
Having seen more than one person go through them and on my experience though, not all bootcamps are created equal (in addition to how much work you put into it). Mine was fantastic, I got lucky. So also be sure to do the research first, and ask other (hopefully impartial) developers what their thoughts are on whatever ones you're interested in.
If that's not an option, before I went to my bootcamp and I had some confidence in my basic skills, I started to ask people who wouldn't have been able to afford a custom built static site on their own if they'd like a free one. It gave me practice with my frontend skills, they got a neat product, and I could have a portfolio piece. Everyone was happy, and I met a lot of neat people along the way. The TL:DR; on that is I'd suggest doing some practice, then finding something that you'd like the build (because you need it or want it), and then try building it with a mentor and plentiful tutorials.
For me it was always great to see results when learning programming (a website, a mini app). My first contacts in a classroom environment with programming where not successful as they where teaching more theory or how something would work. I really caught on when someone showed me how to write a real (very basic) app. What I was taught had a purpose and output I could immediately see.
Since I started learning rails and used his tutorial I still think that Michael Hartls Rails Tutorial is one of the best to get started. He teaches you the proper concepts (TTD etc.) and techniques while keeping it simple and still building something right from the beginning. Ah yes, and it is free (railstutorial.org/book).
If you will be teaching it to somebody you could also use this book as a guideline, make them work through it and help him with problems. He/she will have a working app in the end and have learned the basics of web development by then.
Try to narrow your scope and come up with a short achievable idea. Then, implement the project with the timeframe of the hackathon. If you have issues, just talk to the engineers on-site from different companies. They are all more than happy to help on architecture and application design questions etc. etc.
Somehow, we learn better under pressure and under fire. This is how I got into python :)