sildenafil kaufen cialis prezzo kamagra pas cher viagra dosaggio acheter cialis generic impuissance erection viagra farmacia acheter levitra pas chere acheter clomid en france curare impotenza aquisto levitra sildenafil sin receta vendita viagra achat viagra le viagra viagra donna cialis inde cialis marche pas genericos viagra pildoras cialis cialis belgique levitra venta pilule viagra acheter kamagra 100mg levitra italia impotenza sessuale achat de levitra cialis generique acheter acquisto viagra on line levitra donne viagra versand tadalafil precio cialis en ligne vardenafil generique acheter cialis 20mg impuissance sexuelle cialis meilleur prix commander du cialis viagra ohne rezept acheter cialis pas cher kamagra te koop vardenafil generico vendo viagra pastilla cialis farmaci impotenza levitra sin receta cialis ohne rezept generische viagra levitra te koop sildenafil precio acheter kamagra france acheter viagra pas chere vardenafil bestellen cialis livraison rapide viagra bestellen acheter propecia vendita levitra propecia sans ordonnance achat levitra cialis pharmacie cialis venta cialis vente en ligne viagra controindicazioni posologia viagra cialis 10 mg leivtra moins cher cialis prijs generique du viagra cialis prescrizione procurer du levitra acheter cialis sans ordonnance kamagra apcalis vendo sildenafil achat cialis 20mg vente levitra pastilla viagra comprar viagra em portugal comprar cialis generico levitra naturale levitra venta libre aquisto cialis cialis donne koop viagra vardenafil generika viagra recensioni levitra generico acheter accutane impuissance homme prozac sans ordonnance acquisto viagra generico receta viagra levitra pharmacie vardenafil generico tadalafil bestellen vendo viagra milano viagra 50 mg compro sildenafil acquisto levitra acheter zithromax levitra prix cialis sur internet vente viagra cialis generico 10 mg cialis pharmacie prix viagra pharmacie acheter cialis cura impotenza viagra donne viagra naturel cialis generique cialis sur ordonnance viagra svizzera cialis kopen cialis en pharmacie compro cialis sildenafil generico acheter cialis generique achat kamagra internetapotheke acquistare levitra viagra moins cher zyban generique acheter du cialis viagra europe kamagra rezeptfrei impotenza rimedi prix du cialis levitra generique cialis moins cher commander kamagra costo levitra pharmacie en ligne

Duct Tape Programming: Macho?…Yes! Practical?…Rarely!

By Steven Boscarine in Information Technology| People Who Make Software

6 Oct 2009

In http://www.joelonsoftware.com/items/2009/09/23.html, Joel Spolsky of the Joel on Software Blog advocates a practice he calls “Duct Tape Programming.” What he advocates actually is nothing new. It’s more commonly known as “Cowboy Coding.” I decided to post my response for public comment.

Joel’s article was amusing, but obviously balance is important.

I got the impression the Joel was rebelling against COM, C++, OOP, and general abstraction. I can’t say I personally share his view that complex technology is inherently bad. These features are sharp tools, much like the power tools today’s carpenter uses to build a house. Left in the hands of idiots, sharp tools cause problems. It doesn’t take too much imagination to see how assigning an idiot with a drinking problem and an addiction to cough syrup with the task of ripping boards (cutting lengthwise) with a table saw can cause problems. Likewise, letting someone write multi-threaded code who doesn’t have the skill necessary to handle it responsibly is a recipe for disaster.

Over-engineering is a serious threat to a business, especially since many engineers I have worked with can fairly be accused of over-engineering at some point or another in his or her career. However, there’s obviously a reason things like Object Oriented Programming exist… and it isn’t just because the entire software engineering profession isn’t as smart as Mr. Macho Duct Tape Cowboy.

Everyone reading this who has written code for a large company has seen what happens when duct tape programming gets taken too far.  You end up with a giant legacy system, written by two-dozen authors over multiple decades. The application performs poorly, is difficult to maintain, and no one has holistic knowledge of how the system works. You often find yourself spending 6 months training each engineer which touches the system on your internal proprietary duct tape patterns. Duct tape programming is fine and dandy until you ship something that’s broken or can’t be extended to fit your changing business needs — because it is a giant scary monolith and every simple change in one piece of functionality breaks another piece that was duct-taped on it 5 years ago.

OOP and standardization technologies that abstract complexity pay off when you have more developers that can fit comfortably in a small office and you realistically expect for a product to be handled in the future by people other than its original authors. They add complexity for the sake of compartmentalizing functionality so it can be distributed among different authors and can encourage documentation of the workings of each module.

My team pushes for modern standards and best practices so that we can hire a sharp developer who’s familiar with modern technology, and he can instantly understand most of what we’re doing. More often than not, we could have shipped whatever we were working on slightly faster if we ignored standardization and just did things the way we did them many years ago because it was familiar to us. However, the customer would pay the price when they asked someone other than us to maintain our quickly-shipped, duct-taped masterpiece.

Most professional developers write code for a company for the sake of delivering a quality application, a tool to enhance their business. You do the client no favor by saving them money on the initial delivery and costing them more down the road to keep the product running and relevant… unless you’re solely billing by the hour and are in a situation where they can never fire or sue you.

Clearly this is a complex problem that people are years from solving, but until the geniuses of the world get together and solve this once and for all, I personally think we’re best off balancing writing elegant, standards-compliant code with shipping things on time and not blindly adopting technology without fully understanding the consequences.

1 Response to Duct Tape Programming: Macho?…Yes! Practical?…Rarely!

Avatar

Tim Cook

October 16th, 2009 at 7:02 pm

Make everything as simple as possible; but no simpler. – Albert Einstein

……

The ENTIRE quote applies. — Tim Cook

Comment Form

About this blog

A group of people dedicated to figuring out clever ways to implement information technology in healthcare. It's written by William Crawford, Jon Abbett, Evan Pankey, Vineet Manohar and Steven Boscarine.

  • Bee: I manage to get it running on tomcat 5.5.x. Thanks. [...]
  • Bee: Thanks for the great tutorial. I wonder if it can be run in tomcat 5.5.x. I mean if JSF 2.0 and Weld [...]
  • Aruna: hi Steven, Thanks for this great tutorial. I'm new to all this stuff maven, jsf, tomcat etc. I lo [...]
  • Steven Boscarine: Hello Ashley, I apologize, but much as changed since that post was written. When that post was writ [...]
  • Ashley Westwell: Type above javax.servlet jstl 1.2 runtime Should be javax.faces jsf-impl runtime 2. [...]