Certain aspects of programming can only be cultivated if done as a group activity
We can learn as much from the mistake that others make, as from our own
IN my previous column, I suggested several ways that you could start learning programming, at any age, on your own.
The important thing to remember while doing all this learning is to keep things fun – and what could be more fun than doing it with some like-minded individuals?
Although the stereotypical computer programmer is often depicted as a loner working from a dark basement or kitchen table, programming is actually a social activity. In fact, there are certain aspects of a programmer's skillset that can only be cultivated if we do programming as a group activity.
The group does not need to be big – a pair is often good enough.
We can think of a program's source code as a form of written communication. Besides being a systematic method to instruct computers on what to do, it also serves as an exact and unambiguous form of communication between those who understand the language.
Just like how we are often told to read and write more as a way to improve our language skills, by our English teacher, a good way to improve our programming skills is to write some code and have someone else read and critique it.
Another excellent way of improving our coding skills is to read code written by other programmers. It takes a good programmer to spot the bugs in someone else's code. We can learn as much from the mistake that others make, as from our own.
Therefore, working in a small group is a good way of sharpening communication skills and ensuring that others are able to understand what we are trying to accomplish. If someone else finds it difficult to read and understand our code, then we are likely doing it wrong.
A popular cartoon illustrates this best: “The only valid measurement of code quality is WTFs a minute.”
Programming is an intellectual activity involving multiple layers of abstraction and many moving parts. Sometimes, things get complicated quickly. We can often discover better ways of doing things by simply discussing our code with others.
In addition to sharpening our communication skills, we will learn how to see things from a different viewpoint and learn to think at multiple levels of abstraction.
It is often useful to discuss things with non-programmers too as they can offer a fresh perspective.
Useful real-world software is often created by programmers working together, sometimes across different geographical regions and time-zones. As a result, a lot of effort has been spent on developing tools that enable teams of programmers from around the world to work together.
While there are far too many such tools to list, they all have the same objective – to help manage source code and teams. So, the key is to just pick one and learn good house-keeping rules. Just like programming languages, good programmers know how to use several.
I would personally recommend learning to use Git, simply because it is used to manage the source code of Linux, which has several million lines of code written by thousands of programmers from across the world. It is both capable of managing complex projects and quite useful for handling small individual projects.
There are many different methods to use Git, but which one we ultimately choose will depend on individual preference and group dynamics.
That's right – programming is a great way of learning how to work with other people.
Writing software gives us a chance to work with diverse people from around the world, and not just those from our own kampong (village). This is particularly true for major open-source projects. We will get to interact with others who share our interests, from all across the world.
A good programmer needs to know more than just how to write code. A good programmer must be capable of communicating clearly and concisely, able to see things from different perspectives, and able to work effectively with others including those who may not necessarily be programmers.
These skills cannot be learned by working alone.
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.
How to learn programming, solo
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
For more technology news and the latest updates, follow @dnewsasia on Twitter or Like us on Facebook.