How to Learn Programming in Small Groups

This article first appeared on DNA here.

In my previous column, I suggested several ways that one could start learning programming, at any age, on our 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 cartooni 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 manyii 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 learningiii to use Gitiv, 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 methodsv 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 kampung. This is particularly true for major open-source projects. We will get to interact with others who share our interest, 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.

Published by

Shawn Tan

Chip Doctor, Chartered/Professional Engineer, Entrepreneur, Law Graduate.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s