Source control is your (now multi-purpose) friend. Even more reasons to use it!

In my last post I provided an introduction to source control systems for those not yet familiar with them and detailed a few reasons why you should be using source control if you develop applications.

I briefly mentioned that source control systems nowadays are full of handy features to facilitate good software development. After all, anyone can develop software but we want to develop software well.

Let’s dive right into what these features are so you can see their benefits for yourself.

Collaboration

Usually, more than one person works on a software project. Not everyone on the project has to be a developer, but having access to the project through a shared repository enables everyone on the team to work together.

A shared online repository eliminates the need for the team members to be in the same place at the same time in order to collaborate on a project. Having to organise physical gatherings to work on a project limits your work time. Essentially, using a source control system allows your team to work whenever convenient around the clock. This also facilitates the prospect of working with team members around the world, making your project a truly global product.

On the flip side, you can have multiple people working on the same project at the same time. It is easy to see that the velocity of the software development is increased through concurrent development, thus saving you a vast amount of time when compared to linear development.

It is worth noting that, for concurrent development to happen smoothly, the tasks need to be split up in a way that they can be done without any dependencies on other people’s work. This is addressed in the Scrum methodology of software development, something you should look into and something I might write about later.

Issue tracking

When working on a software project, in a team or on your own, you will find a list of tasks (the backlog) that need to be done building up as you progress. These tasks can be along the lines of adding new features, fixing bugs or issues in the code or adding new test cases.

In the past I have assumed that for small projects I could simply write that list on a piece of paper and work through it. I used note-taking applications on my phone/tablet/computer for larger projects.

A software development project is an ever-changing journey with unexpected situations. So when it came to making changes to my backlog, pieces of paper and notepad simply didn’t cut it. (And don’t even think about using Microsoft Word!)

There is a need for an elegant way to manage that list. Let’s think of all those tasks as ‘issues’ that need to be dealt with. You can add your tasks to the source control system’s issue tracker, add a description, organise them into categories, add labels for easier reading and put them in an order of priority for your project.

Your team can then look at the issues in the issue tracker, work on them and check in their changes when possible. As the project progresses, issues such as new features or bugs can be added regularly into the backlog for the team members to work on.

I really like the GitHub issue tracker as it’s very easy to use and an effective tool for managing the development on my software projects.

Apps

I mentioned in my last post that source control repositories are usually managed through command-line interfaces, but some of them have graphical user interface (GUI) clients as well.

I prefer to use the GUI clients as much as possible as they help me visualise the repository and the changes I’m making to it.

Working with other tools

You can also use source control systems from within most integrated development environments (IDEs such as Visual Studio, Eclipse, IntelliJ). I’m pretty sure source control functionality is built in to nearly all of the popular IDEs.

This built-in functionality is more than enough for most developers and especially good if you are planning to use the same IDE for the lifetime of your project. I like to use the standalone Windows client as sometimes I make changes to files in my source controlled repository from outside the IDE and I like separating out repository management to its own application.

Syntax highlighting

This one is more of a non-essential, ‘nice-to-have’ features I picked up in GitHub.

Syntax highlighting is simply applying formatting to the text in the files on the repository (code files or data) in order to help the reader distinguish between programming keywords and other text and to make the code more readable. It is hard to explain but you can see it in action for yourself.

This is a useful feature for those who are not developing but want to be able to see the files in the repository without having to install an IDE or using software to make the code more readable.

Final comments

Using the right tools to develop software goes a long way in helping you to develop software well.

The evolution of source control systems from simple storage solutions for your code to multi-purpose product development facilitators has paved the way for developers to create well-designed, well-managed and collaboratively developed applications.

Developers can thus focus on what they do best: developing good software using good software development practices.

Software developer with skills in .NET and Java, believes in good coding practices and agile development.I am interested in using technology to solve problems and I enjoy working on my own software projects.I like experimenting with and writing about new ways to develop software products. I also like to watch football and cricket, and I play when I can.