While you can write code with a simple text editor, there are many tools that make programming far easier, faster, and more reliable.

Online Resources

Stack Overflow

Version Control

Version control is used to keep a history of how your code changed during its development. Only the shortest of programs can be written in a single session focussed on the program itself.

If the program gets only a little bit more complex, a version control system quickly gets indispensable. A version control system keeps track of all the changes that are made to the code base, allowing you to easily roll back to earlier versions, or 'branching out' to experiment without interfering with the core code.

Usually, by the time that you realise that you should have used a version control system, it's too late (to go back, still a good idea to start using version control going forward with this code), so I recommend starting every project with version control from the start.


Git is our version control program of choice. It is easy to set up and use for the beginner, but can also be scaled up immensely to manage truly herculean projects. (It was originally created to manage the Linux Kernel)



*LinkedIn Learning is a paid service, but some Universities offer access to their courses to their employees and students for free. Try to 'log in with your institution'


Subversion is an older, and more hierarchical Version Control System. It is advantageous to git if you need tight control over your sources because it is very centralised.

For this reason, many of the proprietary models use subversion as their version control program of choice.


Integrated Development Environments (IDE)

Visual Studio Code


<references />