~ By Rodney J Smith
Modern computer languages with their high-level constructs have come a long way since the early days of assembler programming. And with more and more people taking computer classes at school, programming skills are now more widespread than ever before, allowing even relative novices to produce professional-looking applications. But to truly join the ranks of the professional coder, several elements need to be put in place.
Whilst it's possible to get started in many languages with merely a simple text editor, it won't be long before your code's complexity becomes unmanageable without some help. Modern IDEs like Visual Studio or Eclipse offer so much support to the coding process - built-in wizards to help you accomplish numerous tasks, code completion and dependency management, are just a few examples of standard features - that it's almost inconceivable to attempt a serious application without one.
Source control tools integrate directly into your IDE and give you the ability to track changes to the various files that make up your project, enabling you to modify your code with confidence knowing that you can always roll back to an earlier version if things don't work out the way you planned. Source control repositories are also invaluable when working in a team environment, or across different machines.
Testing used to be a dirty word amongst developers, but the recent popularity of techniques like Test Driven Development have placed the responsibility for testing squarely back at developers' feet where it belongs. Test frameworks like the xUnit family make it easy to write repeatable automated tests that demonstrate your code's functionality as you go, and provide confidence when refactoring that you haven't inadvertently broken anything.
Automating your build process takes this a step further, producing a complete packaged system every day, or in some cases, each time you make any changes to the source code. Generally your full suite of automated tests is run at the same time as your code is built, giving you confidence that everything still works when integrated and reducing what can otherwise be a major headache further down the line when you come to try and put everything together for installation.
If you plan to distribute your application to anyone else you will almost certainly need some way of keeping track of problems that people have experienced with your software, and the status of any fixes that you've come up with. This may be nothing more complicated than a spreadsheet, although there are a multitude of tools available to do the job for you.
One thing you won't have to worry about is the cost of purchasing all these tools to support your development activities, because there is high quality open source (free!) software in all these categories - and in many cases these tools are the industry standard, beating many proprietary tools in terms of quality and market share. So if you're serious about software development there's really no excuse.