I’m not sure why, but many of the programs I’ve tried that teach beginners how to code start off by getting the newbies to type stuff into the terminal. Check out CodeCademy, Try Ruby, Ruby Monk and even the in-person Railsbridge Ruby on Rails Outreach Workshop for Women. I’d like to first clarify that I’m incredibly grateful for the above-mentioned programs and their vision of making coding a lot more mainstream and accessible. However, to a beginner (like I was a few months back), the Terminal is a dark intimidating hole. It is easy to understand that 2+2 is 4 and what variables are and even what for and while loops are, but ultimately, as a beginner, I don’t understand what the Terminal is and why I’m typing into it, and most importantly, what I’m accomplishing.
The first step to teaching people how to code is asking them why they want to learn in the first place. I wanted to learn so I could build my own website or product, so typing stuff into a terminal did not make me happy. I wanted to make something. As a result, I walked away from the above-mentioned tutorials pretty disappointed without any desire to continue learning. Other people want to learn to get a better job – if that is the case, they should be taught skills that would specifically make them more marketable (teaching them everything at once is not as useful as making them really good at one thing in this case).
For me, discovering Stanford CS106A was just what I needed to learn to program. In this Stanford course, they start out with a fun pre-Java language “Karel the Robot”, where your job is to make Karel move in a grid and drop / pick-up diamond beepers. There is absolutely no terminal involved (you do this via Eclipse), and you get concrete results right away – you made something happen! The exhilarating feeling I felt when I was able to get Karel to do exactly what I wanted was a lot more valuable than any CodeCademy badge I received, and I’ve been addicted to programming ever since.
Teaching others to code is a very difficult task, especially since most people will not have the persistence and motivation to continue learning. I applaud the efforts that are out there, but I also think they can be made much better by starting out with programming basics outside the intimidating terminal.