If you are a student, financially constraint or just interested in programming a little, there is a way to program for free and well at the same time! First of all lets assume you are a common guy with common needs so you likely will be using Microsoft Windows, looking to program for Windows possibly using C#. If you prefer Linux or other systems and look to program in something more ‘outlandish’, e.g. your own assembler language then surely there is help out there but I am not addressing it here(, yet).
For starters you would need an Integrated Development Environment (IDE). It allows you to write code, save, organise, build, compile and debug it. I will not bore you too much because very likely you have heard already about IDEs. One that is hard to beat especially if you are into C#, C++, ASP.NET or VB is Microsoft’s Visual Studio. The good news is that there is a free version, Visual Studio 2008 Express, out there. The bad news is that it is stripped of many features. Some of them quite useful to most of us. Even if you ‘only’ develop your student project, thesis or start up self-employed work. Luckily, there are nice people out there who share their solutions to their/our problems.
One of the most useful tools in software development are version or revision control systems. They keep track of changes in files and if necessary help you organise several people work on several versions of the same files. Even if you are working alone the benefits are tremendous. Assume you have two computers one at home/desktop and one at university/work/laptop. With a version control system and internet access, you can install a version control system and synchronise you your work from wherever you are. If you suddenly share your work with a friend then (s)he can contribute under a new user name and you can exchange your work and stay updated. Most importantly you have a central repository of your work which works automatically as double backup. Firstly it will be on a different machine and secondly it will allow you to reverse to any version of any file which is the ultimate ‘Undo’ function.
- So what do you use? Well there are several out there but I am very happy with using Subversion.
- Looks complicated? Some web site providers throw in free subversion (or cvs) repositories which can be a good way to start.
- How do you use it on your machine without getting into the dark world of command line tools? On your Windows machine use TortoiseSVN to connect with your repository through simple right click context menu on any folder/file.
You could go ahead and start your work now but I would recommend at least one more tool. Independent of your programming style a unit test is always a good idea. You might be the Test-Driven Development (TDD) or the write first test later type. Even if latter you should and will need to do a unit test if you want to keep your code stable and free of as many bugs as possible. Use an automated unit test tool like NUnit (if you are using C# or csUnit for any .NET language) to do the hard work for you once you have written your tests. One downside is that the IDE integration does not work because Visual Studio Express does not allow plugins to my knowledge. All that means is that you have to start the unit test program yourself but what is a click every now and then when it is for free!
My last recommendation, a profiler, is not a necessity but can be very useful for some and teaches you a lot at the same time. If you have a performance sensitive application a profiler will be essential to work out where you waste time and where it is worth to optimise. A very good and (currently until released in version 1.0) free one is IJW Profiler which can deal with Java and C# applications. I hope they keep it free for private and academic use. Just run your application from the profiler and it will keep a track of how long what in your application took allowing you to track down the parts that take the most time and optimise them.