Having spent close to a decade building and engineering software for various clients, a crucial thing I have learn’t is the need to optimize the process being used in the development of software.
I m a big advocate of Agile. I think any modern software project has a better probability of success adopting agile development methods. But this post is not to talk about the awesomeness of Agile and what it brings to the table. The projects I have worked on have been a mix of different development models – Pure Agile, Half-assed Agile, Waterfall etc. As much as the process, the nature of application and optimization of the process is extremely critical to the success of the project!
What most software engineering firms don’t do well with whatever software development process they have – identifying what’s going wrong and how. I think the honchos/managers running the project need to look for ‘Process Smells‘ (yes. coined with inspiration from Code smells :)). There needs to be a very keen eye for symptoms of process failure/loopholes that would eventually lead to bigger problems. Identify such Process smells early and find ways to eliminate them.
Following a rigid development pattern that insulates itself from change is harmful. This is common in large to mid-size software enterprises that don’t want to disturb something that’s getting the job done for them albeit with mediocrity. Bring in an element of agileness and dynamism to your methods (again, whatever methods you might follow). This enables optimization of your process and will lead to a positive impact on your project’s goals.
I m no project management guru but I have served in the industry long enough to understand the perils of not constantly optimizing a software development process. On a lighter note, let me leave you with one of my Dilbert favorites.