Questioning the Software Development Process
If you’ve taken a look at the homepage for my business site, you’ll know that there are three areas of expertise that really interest me:
- Enterprise .NET Development
Architecture, Design and Development of enterprise n-tier .NET solutions using a domain-driven, object-oriented approach. - SQL Server Development
All aspects of development with the full range of the SQL Server suite, including Analysis Services, Integration Services and Reporting Services. - Software Development Process Improvement
Proven experience implementing version control, work item tracking and continuous integration.
The last point is fairly woolly and difficult to convey in a single bullet point. What I’m trying to get across is that, having spent a decade or so developing solutions for a wide variety of organisations and industries, I have had the benefit of witnessing many working practices and techniques and obtained a reasonable idea of what does and doesn’t make for an efficient and productive software development team.
Further, I believe that this experience of “other places” is an example of the added value that comes from hiring a freelancer or consultancy for a piece of work. So, whilst clients will generally initially hire me to undertake a particular chunk of .NET/SQL development work, inevitably as I go about that task I will bring to the table some of the best practices that I’ve encountered over the years.
Often these issues will be raised early in an engagement, when asking seemingly basic and straighforward questions of the client in order to get on with the job in hand:
- Which source control system are we using?
- Where do I log bugs?
- Which unit testing framework are we using?
As time progresses, and depending on the nature of the client, the questions have a tendency to get increasingly specific, and perhaps be re-phrased as open suggestions:
- Will the deployment occur out of hours?
- Should we be performing static analysis as part of the build process? FxCop, NDepend perhaps?
- Wouldn’t it be a good idea to use a mocking framework like Rhino Mocks or MOQ to simplify these tests?
- I really think that the database schema should be version controlled.
Some clients are more receptive to these ideas than others, and inevitably there’s a
delicate balance to be struck between being seen as the helpful and experienced consultant who’s full of good ideas, and the irritating Mr “You Don’t Wanna Do It Like That” character portrayed by Harry Enfield. And the willingness of an organisation to change will fall somewhere on the continuum between “let’s change everything again starting today” and “but that’s the way we’ve always done it!”
Still, it occurs to me that there is a definite value in asking these questions when it seems appropriate. Further, I find that some of them work excellently in job interview situations to turn the interview into more of a dialogue (letting the interviewer see that you’re interested and thoughtful), or at the very least as fodder for the inevitable “Do you have any questions for me?” coda.
So, with that in mind, I’ve decided to compile and publish a list of the questions I like to ask (if only to myself!) about the way in which development teams work.
You’ll find it at http://ianfnelson.com/software-development-process-questions
Feel free to add comments and suggestions to that page, and I’ll try to keep the list updated over time.








