Critical thinking in software development, the word ‘should’, and why you shouldn’t listen to Martin Fowler

Posted on

3. Wishful thinking (confirmation bias)

When the desire for something to be true is used in place of/or as evidence for the truthfulness of the claim.

Example: This large code-base we’ve inherited is written in foo-script, we should rewrite it in our preferred language, bar-lang, because that language is better.

A proponent of this idea might cite arguments along the lines of the following:

  • bar-lang has static typing, so we will see less errors in production.
  • Our team is already more familiar with bar-lang.
  • I’ve been talking to my friends who also know bar-lang, and they agree that foo-script is well known for being a bad language.

These arguments seem good on their own, but the desire for the claim to be true might overlook much stronger arguments against the idea, such as:

  • A rewrite of a large project will require a huge amount of effort and time, most likely with unpredictable timescales.
  • The project already works in its current form (even if it is in a way that the proponent of bar-lang would consider objectionable) and a rewrite adds no additional business value. The value created compared to time spent would be atrociously poor.

An often accurate actuality of web development is that the majority of the common n-tier stacks are actually pretty mature and are more than up to the task of producing maintainable, performant and reliable software. As a result, the reality of whether you end up with a clean, easily maintainable code base or a nightmare horror show of spaghetti nonsense has a lot more to do with code architecture decisions and the skill of the developers involved. Only in very business specific cases is the choice of language going to be the primary cause of issues and the idea that a complete rewrite in a new language will be productive is almost certainly ‘wishful thinking’.

4. Appeal to novelty

Claiming that something that is new or modern is superior to the status quo, based exclusively on its newness.

Otherwise known as ‘shiny things’ syndrome:

“I saw [library, AWS offering, or architecture] on hacker news today; it looks awesome, let’s use that.”

Prev5 of 6Next

Leave a Reply

Your email address will not be published. Required fields are marked *