I am hoping to write a series of posts about the practical nitty-gritty of managing software development. In the first instance it will be a set of bullet points to highlight issues, however I hope to expand some of the list into some practical advice and suggestions. Please be aware:
  • What I write about here may not work for you in your circumstances. All I can do is perhaps give you something to think about.
  • The blog format means that I am going to be making some simplifications and generalisations. This is not the definitive word or the only way of looking at the issues
So what is Software Development About? Here is my definition: "Delivering a new or modified service to business users that increases the value of what they do via the medium of computer software" This is a fairly broad statement. However it does force us to recognise that we are delivering business value for the use of our customers (business users) and suggests the criteria we can use to measure success "Have we truly meet the users needs?". So how do we deliver these software services? Let's start with a very high level outline (suitable to put on a Power Point slide for the pointy haired boss)
  • Know where you are (What are your people, tools, process and current software assets)
  • Know where you are going and how you'll know when you get there (What are the User Needs)
  • Manage the trip (Plan, track, correct, test, design, code, talk, deliver, rework, improve)
Even at this high level we need to qualify these statements. As well as meeting the real business needs of our customers, we need to address the needs of the software development team and organisation. These might include
  • Preserving the economic viability of the team
  • Reducing costs in future versions of the product
  • and reducing costs across related projects and products
  • Improving the job satisfaction of team members and providing for their professional development to reduce costs
  • Meeting external criteria and mandates (e.g. CMMI conformance)
  • Achieving performance targets (e.g. schdule, quality, customer satisfaction, financial targets, team member satisfaction,...)
So how can we break these very broad statements down so that we can
  1. Understand the implications, gain insight into their significance and see how they are related
  2. Develop techniques and practices to make our development projects successful
There 's the rub! More on this to follow in future posts.