The Artima Developer Community
Sponsored Link

Uncle Bob's Software Craftsmanship Corner
Differentiation through Obfuscation
by Robert C. Martin
July 7, 2004
Every software vendor needs to convince you that their product is _different_ from all the others. Unfortunately, one of the most common strategies for differentiation is obfuscation.


Consider cell phone companies. Their products and services are virtually identical. How do they convince you to choose? By making those services complex. Through that complexity they can create a pseudo-differentiation. They try to make you believe that their services are different by creating a complex structure and then emphasising one part of that structure.

Consider air travel. Essentially the product is identical. The carriers differentiate by creating a complex structure of incentives, discounts, coupons, awards, etc.

"If you can't dazzle them with brilliance, baffle them with bullshit."

Unfortunately the software industry suffers from the same syndrome. Companies attempt to attract the good will of programmers and software professionals by differentiating their products. That differentiation is, all too often, based upon obfuscation.

This obfuscation often convinces us that the complexity is essential instead of artificial. We are bemused and bewildered into believing that we need the complexity. We need applications servers. We need SOAP. We need MDA. We need Web Services. We need three tiered architecture. The list is endless.

I will grant you that there are some great tools and great frameworks out there. I will grant you that frameworks are often a good choice. However, I reject entirely the notion that we must use frameworks for the majority of our applications, even enterprise level applications.

For example, using a web server is often a smart thing to do if you care creating a web application. Something like apache can be very useful. On the other hand, web servers do not have to be complicated things. Writing your own bare bones web server is a matter of two or three man-days of work. If you don't need all the bells and whistles provided by the differentiation engine of the purveyors, you might consider just writing your own.

For example, middleware engines can be complex, feature-laden beasts. Sometimes you need all that power. Sometimes. Often, though, all you need to do is open a socket and spit a few bytes to another port. Don't let the obfuscation engine befuddle into ignoring this pleasant option.

Remember, the people who sell you things do not want you to think about simplicity. They want to convince you that you need what they have to sell. Caveat Emptor. Very often, you aren't going to need it.

Talk Back!

Have an opinion? Readers have already posted 6 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Robert C. Martin adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Robert C. Martin (Uncle Bob) has been a software professional since 1970 and an international software consultant since 1990. He is founder and president of Object Mentor Inc., a team of experienced consultants who mentor their clients worldwide in the fields of C++, Java, OO, Patterns, UML, Agile Methodologies, and Extreme Programming. In 1995 Robert authored the best-selling book: Designing Object Oriented C++ Applications using the Booch Method, published by Prentice Hall. From 1996 to 1999 he was the editor-in-chief of the C++ Report. In 1997 he was chief editor of the book: Pattern Languages of Program Design 3, published by Addison Wesley. In 1999 he was the editor of "More C++ Gems" published by Cambridge Press. He is co-author, with James Newkirk, of "XP in Practice", Addision Wesley, 2001. In 2002 he wrote the long awaited "Agile Software Development: Principles, Patterns, and Practices", Prentice Hall, 2002. He has published many dozens of articles in various trade journals, and is a regular speaker at international conferences and trade shows.

This weblog entry is Copyright © 2004 Robert C. Martin. All rights reserved.

Sponsored Links


Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use