ZenPyrical

Waxing Empyrical
Welcome to ZenPyrical Sign in | Join | Help
in Search

ZenPyrical

Being Pragmatic about Being Pragmatic...

One of the first things you learn in the book "The Pragmatic Programmer" is not to break windows. To explain this more clearly, it has been shown that an abandoned house in good condition (no broken windows) will tend to stay in relatively good condition if it is maintain such that broken windows are fixed and fixed fast. As soon as one window is broken (the neighbourhood kids throwing stones lets presume), and no-one fixes it, then it becomes 'OK' to keep on breaking windows. Once this starts, the house rapidly becomes degraded with more and more windows being smashed with impunity. In a similar way, councils these days will try to remove graffiti from walls as soon as it goes up, (with the exception perhaps of Banksy!), making it clear that it's really not worth the bother of putting it there in the first place because no one will see it.  This is a very pragmatic ideal because it is about being disciplined to fix problems as they happen and not let them spiral into bigger problems down the line.

Have a look at this article on Coding Horror for more detail: http://www.codinghorror.com/blog/archives/000326.html  

Yet.. with the onset of more and more people adopting (and interpreting) agile, pragmatism is slowly being bent into meaning 'quick and dirty... just get it done'. One can argue in a highly intense environment that the most pragmatic approach to keeping a business afloat is to make sure that problems are patched up. If the problem goes away for now, the business will be happy... for now.  Pragmatism is becoming 'hackmatism'. 

If a broken window is  taped up... the problem is not resolved. If the window is removed the problem can be said to be resolved, but you are left with a windowless building. If the window is boarded up you have a similar problem.  So you are left with few options. You could say well "this is bad area ... even if we fix the window today, it will be broken tomorow". In this case you can invest in commercial level coatings for the windows - so that the problem is severely decreased. You could replace the windows with tough plexiglass so that the cost of the problem is perhaps decreased. But on the whole, I personally believe that if you fixed the windows quickly, (or better yet never let it get to that in the first place!) the problem would resolve itself. Removing ourselves from the 'window' analogy for a minute (the analogy starts to leak here), remember that in the software development world, if the people breaking the windows keep on breaking them (ie intentionally or through gross incompetence) you have many more options available for dealing with that scenario. You're dealing with developers, not roaming gangs of kids!  The pragmatic solution is the one that solves the problem quickly.... not patches the problem quickly and sweeps it under the carpet.

 More and more project managers are playing the pragmatic card these days as a way to meet schedules. In interviews almost all developers will call themselves pragmatic. Pragmatic doesn't really mean anything when it has been reduced to "I will always look for quick fixes... not solutions".  When building bespoke systems, it is too late to get to delivery with a thousand bugs (and more and more on the way), start hacking in fixes, and start calling yourself pragmatic.  The pragmatic developer looks at a problem at the outset and finds a solid solution. They use pragmatic techniques to build robust, quality systems. They spend time putting in place unit tests that actualy do something rather than being completely tokenistic. I don't think anyone originally thought pragmatism meant do the least possible work, or mean don't think through what you are doing. 

There are plenty of scenarios where you simply must thrown in a quick fix. The business should drive technology and not the other way around. Many businesses would go bust without the quick fix. But should we really be putting this type of behaviour up on a  pedastool?  To get to the point where you don't have time to do anything properly, you have not been pragmatic and you no longer can be pragmatic. The windows are broken, and the local gangs (bugs) are breaking more.  

Quick hacks beget more quick hacks.  They might need to be done, but don't celebrate the fact and please don't tell me it's pragmatic.

 

Comments

No Comments

Leave a Comment

(required) 
(optional)
(required) 
Submit
Powered by Community Server (Commercial Edition), by Telligent Systems