How to learn programming, solo
By Dr Shawn Tan September 19, 2013
- As intelligent machines invade, we would need at least rudimentary programming skills to live in the future
- Regardless of how you go about it, learning how to program is an invaluable tool in this modern age
IN my previous article, although I asserted that programming cannot be taught, I did clearly state that it can definitely be learned. If you look at major role-models in the tech industry, you will find that many were self-taught programmers at some point in their lives.
Unlike a lot of other skills, programming is something that can definitely be learned on your own. I have friends who started while studying for their biology degree; while doing their bio-chemistry doctorate; or even while working as a full-time lawyer. So, it is never too late to start.
Nor would you ever be too young to start. I knew someone who started programming at the age of four. Such a person is obviously rare, but as a regular judge for national LEGO robotics competitions, I see primary school kids doing programming all the time.
It is my personal opinion that within my lifetime, I will see programming turn into a basic skill for everyone. As intelligent machines invade, we cannot help but to have at least some rudimentary programming skills to effectively get through our lives in the future.
So, where do we start?
That's a question that I often hear from undergraduates. I was also recently asked by a young father on how he might be able to encourage his kids to do programming. Unlike in the past, we’re now living in an age where learning how to program is accessible at any age.
Some people may research the pros and cons of different languages to determine which to learn first. The truth of the matter is that the language does not matter in the larger scheme. Decent programmers know several languages. Just pick any language to start with and grow from there.
Learning a language is simple. There are far too many online courses and materials for every single language imaginable. The Learn X the Hard Way online materials for learning a language is a good way to jump right in for Python, Ruby and C.
For younger children, something a little less abstract may be preferable. Starting with Logo as they do in Vietnam may be a good choice, but something like Scratch, Stencyl, or Alice might be more suitable. For older children, Code Academy and Khan Academy provide a guided platform to learn programming.
As with everything else, the key to learning programming is to keep things fun.
Besides learning a language, it is also quite important to build up a solid foundation in computing fundamentals. There are plenty of online courses that are available as well. Some of the best universities in the world give away their courseware for free.
For example, there is the MIT Open Courseware series that covers a wide range of topics, including computing fundamentals. For the younger children, there is also CS Unplugged that tries to present abstract computing concepts in a simple to understand way.
In addition to learning theory to understand the fundamentals, and learning a language to express the ideas as something real; we would also need to have some real-life scenarios to apply all that learning. This is where many people get a little lost, as the areas of application are numerous and various.
An area of personal interest is as good a starting point as any. Some people like playing games. For these people, a good gateway into programming might be to write some simple games. From this starting point, we can grow into related areas.
It is important to start small while growing our skills and knowledge, one step at a time. There is no sense in being too ambitious and trying to create an Angry Birds clone on your first attempt. Writing a simple tic-tac-toe game would already involve a lot of hard work.
And hard work it will be, if we wish to master The Art of Computer Programming (a recommended read for the advance programmer). There will be a lot of pain when confounded with difficult problems, but a sense of elation awaits those who never surrender.
I would also recommend getting a low-cost Arduino kit or a LEGO Mindstorms set. Both these things allow us to quickly build and program devices that interact with the real-world, which brings programming to life. There are a lot of cool projects on the Internet to copy from.
On that note, copying is an excellent way to learn how to program. Trying to build something from nothing can be a bit daunting for the beginner programmer. There are so many open-source projects to be found online. Learning from real-world examples will really help us in applying theoretical skills.
Regardless of the path that we choose to embark on, learning how to program is an invaluable tool in this modern age. Learning how to program is a fruitful adventure, though it is a dangerous one that risks sucking us in and never letting us go.
In my next column, I will look at how programming in small groups actually helps us develop into better programmers.
Dr Shawn Tan is a chartered engineer who has been programming since the late 1980s. A former lecturer and research fellow, he minds his own business at Aeste while reading Law. He designs open-source microprocessors for fun. He can be reached via Twitter as @sybreon.
Previous instalments:
One does not simply … teach programming
Bad Computer Science programmes: Parents and industry
Bad Computer Science students, and what must be done
Bad Computer Science lecturers
Is accreditation a bad thing for Computer Science programs?
For more technology news and the latest updates, follow @dnewsasia on Twitter or Like us on Facebook.