TheChaseMan's Frenetic SoapBox

Always looking for better ways to do things...

The Duct Taped Soccer Ball Model

The formal term for the waterfall model in software development was introduced in 1970. These days an iterative approach is more popular for its many benefits including risk reduction, etc. These are real-world, formalized methodologies that have been acknowledged in the industry. However, there are other informal methodologies that run rampant in our industry that most of us who know what we are doing mock and criticize behind closed-doors while management informally dictates them under the guise of a real process model. Because of its popularity and high frequency, this developer has decided to give one such model a formal name: the duct taped soccer ball model. In this article I hope to become the pioneer of formalizing this model, although I certainly do not deserve credit for its existence and popularity. Not even the Daily WTF could claim credit for this debacle of a methodology. Nevertheless it is my intent to define this model as it exists in the real world as it truly exists in its secret, cult-like society where individuals who propagate its existence are still floating down a river in Egypt and will deny its existence until the end of silicon as we know it.

The duct taped soccer ball model is a term I decided to use based on an analogy. Many years ago, I watched as my younger cousins would play soccer in rural Tucson, AZ. Every so often the soccer ball would leave the boundaries of the grassy yard into the desert full of cholla and other cacti which would pop holes in the ball. The inventive children would use their father's duct tape to patch the hole(s) in the ball, continue to play, and repeat the process over and over again as the ball would continue to gain more holes and continue to be covered by an increasing amount of duct tape until such time that the soccer ball was no longer a soccer ball as we know it. Instead it was a misshaped, somewhat-spherical ball of duct tape with a flat soccer ball hidden somewhere in the middle. Much like a program written without a plan by programmers that don't care about neatness or organization and managed by an organization focused on selling the misshaped, unmanageable code that is the duct taped soccer ball.

The methodology itself is difficult to describe. It is true chaos. Almost as complex as the chaos theory. If I were forced to define its phases...

1. Coding

The first phase in the duct taped soccer ball model is to have a few quick conversations about a given project, possibly a flow chart or two, perhaps an email, and  then immediately begins the process of coding. What is actually being coded? Typically there is a vague idea of what certain screens should look like, and idea of where to get and put the data, and possibly some generated code and third party controls to throw in the mix. Tying it all together is a process usually done in phase 2 and phase 4. Although usually there are a few team members that copy and paste code from sections of other related applications and try to retro fit the code into their given problem space. If any code exists in the new project, that too of course can be copied, pasted, and retrofitted.

2. Debugging

Forget compiling all together. This phase is where the code written is often run by the developer in Visual Studio by clicking F5 immediately after coding. Next, the developer figures out that the code won't compile and makes the necessary syntax changes so that the next time they press F5, hopefully they won't have any more stupid compiler errors. Nostalgia for VB6 is sometimes present in this phase because VB6 didn't really have a compiler. Compilers are stupid and its all Microsoft's fault. This process is repeated until the application runs successfully in the debugger. Optionally, if an exception is encountered, the developer may step through the code to figure out why. Usually, this is not important and a try...catch block is placed around the offending code (with nothing in the catch block of course) so as to not offend further by any exceptions leaking to the UI or other developers trying to debug in the future. Exceptions are bad in the duct taped soccer ball model and need to be hidden at all costs.

3. Confusion

In this phase, the developers get together and try to figure out why the application isn't architected well, isn't working as planned, isn't on schedule as planned, and the customer doesn't like the beta application..because there really never was any formal plan even though the contention may be that there actually was a formal plan. So a new plan is put in place that covers the 80/20 rule where 80% of the existing code (a flat soccer ball surrounded by duct tape) can hopefully be salvaged. If not, 1/2 of the code will simply be regenerated because nobody like to write code manually these days. That's for losers.

4. More Coding and Debugging

In this phase, the confusion is now clarified at least to the point of being a muddy pond rather than an actual mud ball. Since the project is already behind schedule, more developers are brought into the project because bringing in more developers to a late project will fix everything. We all know that to be true. Coding at this point involves copy, paste, F5, fix compile errors, F5, repeat, run, test, copy paste, fix compile errors, F5, etc. This is not a hard and fast rule; after all, the duct taped soccer ball model is one that promotes flexibility within an organization. Therefore, any order of "copy, paste, F5, fix, repeat" can be applied. Of course if that is not working out well, you can take a step back to phase 3: confusion.

6. Release to Production

Once the project can compile and the developers have run a few quick tests, it is time for an RTM build. This is self-explanatory and it should not take more than a few minutes to do a build and release. Did we miss anything? No, I don't think so.

7. Debugging and Testing

OK, so we did forget some things in our phases, but that's OK we can just do some more debugging and testing until the problems disappear. This includes adding more try...catch blocks with the catch doing nothing in the code.

8. Re-release to Production

Do a build and ship it.

The real benefit to this entire model comes after deployment. After deployment when problems in the system are identified, instead of truly fixing the problem, your organization has the flexibility to use a duct tape solution! Rather than fixing problems the right way, a more cost effective approach (usually because it takes far less time) is to cover up the problems with programmatic workarounds while hiding the root causes of real problems and piss poor design. This is self-explanatory to many people. If you don't understand what I'm describing at this point, then that is actually a good sign.

The duct taped soccer ball approach has many "benefits" in the eyes of managers who adopt it. First, it provides the illusion of being cost effective. You are probably in the business of selling software or writing solutions for your company, and nobody wants to waste money on documentation and design work up-front, after all we are paying developers to develop things, not write novels and draw pretty pictures. Second, without any sort of paper trail, anyone can point fingers at anyone else for failures! That kind of flexibility is important in an organization. Furthermore, most managers want the option of selective amnesia - this methodology provides that feature and is perfect for breeding this behavior due to its fast pace and lack of a paper trail. In future writings I hope to clarify more of the processes involved in the duct taped soccer ball approach. Comments or additions are welcome, but remember this is not a wiki.


Digg!

posted on Wednesday, May 03, 2006 8:51 PM

Feedback

No comments posted yet.