Tuesday, August 21, 2012

Five Fatal Logical Fallacies of Software Development

Source:Carlos Botelho, CC3.0, via wikimedia

Fallacy Fallacy

Drawing the conclusion that another engineer's point is incorrect because he cannot adequately defend his position.

Don't immediately disregard somebody's opinion due to poor argument construction. We often have an intuition about engineering solutions — an intuition that isn't always easily quantifiable into a well formed argument. You should seek first to understand the possible reasons for taking an opposing position so that, ultimately, your designs will be better informed. Moreover, if you are in a decision making position, your decisions will be viewed as more fair and well thought out.

Appeal to Tradition

Justifying or defending a coding practice by citing precedent.

I encounter this argument all the time when introducing new software into existing systems. It is usually an internal struggle between introducing newer, more well thought out designs vs adopting a 'When in Rome do as the Romans do' strategy to maintain consistency in the code base.

Processes, procedures and coding practices aren't developed in a vacuum. There are a dizzying array of external factors that influence these decisions. Many times, if you examine the factors that led to these decisions, you'll find that the original reasons no longer apply or are diminished. It never hurts to apply the five whys to find out if it makes sense to continue a particular practice.

The Sunk Cost Fallacy

Believing that you must continue forward with a particular design, project, etc. because you've already poured too much time, money and other resources into a solution.

Software engineering is hard. We never have all of the facts when we start a project. We should not be afraid to change direction once new information leads us to question the viability of our original decisions.

Is that refactoring effort that you thought would take 2 days instead proving to drag into 2 weeks with no end in sight? Don't be afraid to stop because you now know that its more involved that you originally thought. Cut your losses. Your project deadline and your stakeholders will thank you for it.

The False Dichotomy

Constraining a problem space to two — and only two solutions.

I encounter this most often when troubleshooting production issues that aren't yet well understood. Statements like the following are often made: 'The slow performance is due to either a missing database index or a changed execution plan from crossing a partition'.

While these may be likely culprits, such statements ignore an entire universe of other possibilities including JVM GC pauses, network latencies, etc. Rarely are there only two possibilities when dealing with undiagnosed problems.

Confusing Correlation and Causation

Assuming that because events occur together that one must cause the other.

This is another fallacy that tends to be seen when troubleshooting production issues. In such situations, reams of data are analyzed and we humans do what we're best at: pattern recognition. If we're not careful, this pattern recognition can lead us to assume that one event causes another to occur.

Incorrectly asserting causation is dangerous in this case because it can lead us down unproductive exploratory paths and thus lead to longer diagnosis times. Knowing in advance that events are correlated but not necessarily causal can introduce a healthy dose of skepticism into the troubleshooting process.

28 comments:

  1. The sunk cost fallacy is one of the most dangerous fallacies ever. Why should I stop working on this project when I already spent a lot of money and a lot of my time.

    Sunk costs are the main reason why people don't quit on already dead projects.

    You stakeholders may not thank you, but you will not be doing a favor to yourself, and neither to your stakeholders if you continue working on such a project.

    As a software developer, I have learned this lesson the hard way!

    ReplyDelete
    Replies
    1. Great observation, itoctopus! Wall Street calls this fallacy throwing good money after bad. How much we've 'spent' on an investment should never be a reason to continue with the investment.

      Some projects, like investments, aren't worth pouring more resources into. As engineers, we ignore the lesson of this fallacy at our peril!

      Delete
    2. Big data is a term that describes the large volume of data – both structured and unstructured – that inundates a business on a day-to-day basis. big data projects for students But it’s not the amount of data that’s important.Project Center in Chennai

      Python Training in Chennai Python Training in Chennai The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training Project Centers in Chennai

      Delete
  2. Hi. best wishes to you and your very nice blog,     putlocker

    ReplyDelete
  3. This is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article.

    Website Design and Development Company

    Website Design Company

    Website Development Company

    Wordpress Customization comapany

    SEO Company

    digital marketing company

    ReplyDelete
  4. It’s actually a great and helpful piece of information.
    Thanks for sharing this useful article with us.
    You can find more information click here software services in hyderabad


    ReplyDelete
  5. All which give a large number of the items and administrations we expend today. streaming microphone

    ReplyDelete
  6. LinkedIn now withholds valuable informative data on those outside an immediate connection with you and has set limits on your own depth and breadth of search. Clicks that when led you from what you needed to see now prompt "Upgrade Now" conversion attempts. Many of my clients and students reach that impasse and see the need to opt into a settled plan. Kennected LinkedIn Reviews

    ReplyDelete
  7. I’m going to read this. I’ll be sure to come back. thanks for sharing. and also This article gives the light in which we can observe the reality. this is very nice one and gives indepth information. thanks for this nice article... Google Maps Scraper

    ReplyDelete
  8. I haven’t any word to appreciate this post.....Really i am impressed from this post....the person who create this post it was a great human..thanks for shared this with us. bulk email extractor

    ReplyDelete
  9. When you use a genuine service, you will be able to provide instructions, share materials and choose the formatting style. internal audit management software

    ReplyDelete
  10. I haven’t any word to appreciate this post.....Really i am impressed from this post....the person who create this post it was a great human..thanks for shared this with us. bulk email extractor

    ReplyDelete
  11. Also, the software testing results will help the business to generate more revenue by reedratings launching a high quality software application, in addition to avoiding maintenance and correction cost.

    ReplyDelete
  12. Well, if the pressure of washing the precious things from me will be, then it doesn’t cause the body to swell often. However there is some merit in the normal like washing their clothes along the way. android app development California

    ReplyDelete
  13. i never know the use of adobe shadow until i saw this post. thank you for this! this is very helpful. Search Engine Scraper

    ReplyDelete
  14. Tricks Jones says, "A progression of studies the deformity thickness of software ranges from 49.5 to 94.5 mistakes per thousand lines of code ." CBT Mass Email Sender

    ReplyDelete
  15. Presently comes the subsequent stage, the planning of the software. Based on the documentation and the consequences of the principal stage, the framework and the software is given a plan. free email list

    ReplyDelete
  16. Not any more lost pieces of paper which have tumbled down the rear of a work area. No more post-it notes jumbling up your writing space. At last you can coordinate yourself and your book for a superior result.emv software download

    ReplyDelete
  17. Realizing the benefits of the SaaS model may require fundamental changes to a software vendor's business model, software architecture and operational structure. https://licensing.tranxition.com/Account/RegisterUser?InvitationCode=JJX0Q-F4ZHCKT

    ReplyDelete
  18. That is the reason; numerous organizations accept that the software testing measure expands the item's an ideal opportunity to advertise. In any case, every undertaking has a few choices to get its software tried intricately without expanding its opportunity to advertise. skimmer in pos

    ReplyDelete
  19. The most widely recognized application in this classification is, obviously, content editing. A large portion of the other exemplary "office" applications, for example, computations and information bases are just of restricted use in the homegrown climate, in spite of the fact that they will be utilized sometimes, especially now that the more PC proficient age is developing. mobile tracker app

    ReplyDelete
  20. Pretty good post. I have just stumbled upon your blog and enjoyed reading your blog posts very much. I am looking for new posts to get more precious info. Big thanks for the useful info. Salesflow linked

    ReplyDelete
  21. If you instead need to calculate for a known ending balloon payment, please use our. canada mortgage calculator Paying off your mortgage may seem being a distant dream at first. canadian mortgage calculator

    ReplyDelete
  22. I found so many interesting stuff in your blog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the enjoyment here! keep up the good work... mapsjar.com

    ReplyDelete
  23. You can have your own web space wherein you can transfer an assortment of files for your companions to view and share. file transfer

    ReplyDelete
  24. Thank you for the update, very nice site.. online review removal

    ReplyDelete
  25. This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. Best Domain Name Registration Australia

    ReplyDelete
  26. Good thing I tried this online brand naming course out! It was really worth the time and small cash I invested on it! business dialogs

    ReplyDelete