When we last talked about learning to code I recommended learning program design before jumping into choosing a program language and writing code. The hardest thing about learning new tech is getting the conceptual framework. My question may be simple, but I don’t know how to ask. — Sarah Allen (@ultrasaurus) July 4, 2013 Sarah Allen is speaking about complex systems in general, but her tweet gets right to the heart of why it’s important to learn flow control structures, simple data modeling, and program design if you want to be a developer: these tools give you the conceptual framework and vocabulary needed to discuss programming with other developers, which is necessary for you to be able to effectively comprehend documentation, search for things online, and ask questions. How do you start building this framework? There is a course titled Introduction to Systematic Program Design on Coursera that looks like a great place to start if you are interested in learning to code; the next session starts on September 4th. Watch the intro video; who doesn’t want to make games, animations, and try out several different languages? I also recommend a book called Simple Program Design (there are newer editions but I’ll take the old one for $4 rather than the new one for $82, thanks). My first experience with programming as a science rather than a hobby some 13 years ago was reading this book. It’s easy to read, has homework exercises and answers provided inside the book, and will give you a good base understanding of how code is structured. Going this route will also let you learn a lot without having to go through the sometimes painful experience of configuring a computer to be a working development machine, a process that can require spending time using command line interfaces and tracking down and installing dependencies. These are valuable skills and you’ll have to learn them eventually, but they shouldn’t be a requirement for learning to code. Once you have a conceptual framework for programming, you’ll be more confident asking other developers for advice because you’ll be able to speak their language. Choosing a language will become less of a task, and jumping over to try something new will be less daunting.