Recently I had an interesting conversation with a business partner about their software development process and areas for improvement. Whenever I have these conversations the quick wins are often the same:
  • When doing changes ensure all code changes are booked against a ticket in your ticket system. Make sure this is enforced by the software if possible
  • Make sure you have a consistent (but lightweight) ticket process that is applied to all changes. Try and automate the process flow with tools if possible
  • Provide a coherent, automatic, build process. Make sure that all test candidates are build on environments that are controlled -- not development environments. Tools such as CruiseControl can help. Consider placing built files under version control, providing adequete traceability information can be stored in the repository.
  • When creating files for a release make sure that you can show:
    • Which source versions where used to build the software
    • How the software was build (on which machine, when, what 3rd party tools where part of the build process etc)
    • Which set of changes (tickets) are part of the release
So make sure your tickets record the correct information, that you install any automation points you need, have a documented process and spend the technical effort to create and maintain your build infrastructure (that can be non-trivial). I'll try an post more about these topics in the next few days.