Things This Coder Thinks
A blog about Mono, C#/.NET, iFactr, Monocross, and getting application code built with those technology stacks running on every mobile device possibile.
October 26, 2011
iPad Printing for Line of Business Applications
September 6, 2011
When do the Agile development cycles cease
What is Agile:
Agile is an iterative software development process that helps flush out application requirements and functionality during development. This popular process has won the hearts of many software developers such as myself... but sometimes you have to ask... will we ever release this software?
Struggles Agile is not designed to assist with:
Winding down a development cycle is not about iterating on the app. And once the app has met the stability level necessary for release, the process becomes about user acceptance testing. As each stage progresses, the threshold for changing the code must become higher.
The threshold for code changes must be raised because code changes by nature introduce new bugs. They interrupt tested code paths. Some bugs can be critical to fix before releasing a quality application; changing code under those circumstances is necessary. However, if the threshold for code changes is too low then the project runs the risk of introducing new code that introduces new bugs, which in turn causes a downward spiral of new bugs and never ending code changes.
Agile does rapid software development well:
The agile process generally provides a lot of flexibility through iteration during app creation. The agile process stops when "code complete" occurs. At that point, the app's code base cannot continue to change or the code freeze process by nature must restart.
A few days are generally not enough time to go from code complete to app store release. I would concede that the smaller size of today's mobile apps have made it possible to reduce beta testing of enterprise apps from months to weeks.
What to do with the bugs found during code freeze:
There is a short answer as to what to do with bugs deemed not critical for release. Unfixed bugs remain logged in the ticket system and are then prioritized upfront when planning for the next release. If the application life cycle does not include releasing another version then each bug must be elevated to the quintessential "feature" or elevated into the critical bug list
There are countless positives to releasing a quality application. But the negative effects of elevating every bug or last minute feature request to critical are the development cost. Those last minute feature's and bug fixes are expensive to incorporate because the "fix" often resembles a round peg in a square hole. What I mean to say is that in general the solution works but it's not elegant, probably shoe-horned into already well-functioning code, and often containing a bug or two. During the final development stage project sponsors must be cognitive of if development cycles of never ending code changes are causing the development costs to exceed the eventual ROI of the project.