2018-11-20
A parent at a recent meeting I was attending lamented that her child's school no longer taught coding. I was blessed that my high school offered classes in programming back in 1973. I wrote about that six years ago on this blog. Today, I'd like to offer some suggestions to that parent and to any parents or students out there who can't go to formal training for one reason or another.
The good news is, there are multiple free and low-cost resources out there to help people of all ages learn to code. For most beginners, my recommendation is to start with Khan Academy. They even start with a "what is programming" intro to get users oriented.
Before I go any further, I want to talk about "programming" and "coding". Web pages are described using a markup language called HTML, the HyperText Markup Language. Many or maybe most pages actually use the programming language JavaScript (or ECMAScript) to make things happen on the page. Learning to use either of those is "coding," but most programmers would hesitate to call HTML programming.
There are other sites that have resources for novices and beginners in the field, also. Codeacademy is one such site with a good reputation. There way too many other options to mention here.
Where Do I begin?
One problem that many beginners face is where to begin. There are myriad programming languages in the world, and many are proclaimed as good languages for beginners. While programmers and teachers debate the merits of the languages and which may be best for first-time learners, some of the popular choices are Go, Java, Python, Ruby, and the aforementioned JavaScript.
Khan Academy chose JavaScript likely because it can be used in conjunction with HTML to create fun, functional web pages quickly. That is a good reason.
Go is another great option. Its developers include Rob Pike and Ken Thompson, two computer science greats. The language is significantly different from JavaScript (even though they share some roots in how the code actually looks) in that it has rules that are very strongly enforced. This may make it better for encouraging good programming habits from the beginning. In addition, the language has many advanced features that lend it to being used in "real" projects.
Either of these languages would be a good place to begin because they can be used themselves in real projects and the concepts they use can be easily transferred to learning other languages. That can be a real benefit as few programmers end up using a single language for all their projects.
Java and Python advocates will say similar things about those languages, too. If you have access to materials that teach those languages, and especially if you know someone who can help you over the rough spots, those can be good choices, too.
Regardless of language choice, the magic step here is to practice and then practice some more. Absent a live instructor, structured assignments, and critique on those assignments, developing good, reliable secure code is difficult. Fortunately, some online courses provide that feedback. If the course you take doesn't, there are alternatives. In some communities, there are "Makerspaces" where hardware and software enthusiasts gather to work on projects. Some of those may offer tutorials or individual help. Another option is to learn the basics of a particular language at the site or with the tools that works best for you and then take an intermediate class at a potentially non-free site that offers feedback.
Learning Tree and I would love for you to take a Learning Tree class, of course, but we know that is not always an option, particularly for school-age learners. My best advice is "do what works for you." I learned to program some languages in high school, many in college, some from books, and some from trial and error. Don't be afraid to try, there are many ways to learn.
Related Training:
Cyber Security
Java Programming