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.
1. Integrated Development Environment (IDE)
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.
2. Source Control
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.
3. Automated Testing
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.
4. Automated Build
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.
5. Defect Management
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.