Featured Post

Tuesday, November 15, 2022

Breaking Software Wholesale I

An advertisement has been airing on Television where the central message is that the self-driving software in Tesla vehicles is the worst software the engineer speaking has ever seen.  This prompts the question: What is the best software that this individual has ever seen?

To be certain, the state of software engineering is in tremendous disarray, in part because the science of software engineering has not been owned by scientists in Academia for over 40 years!  The science of Software Engineering is now owned by practitioners.  Not well-meaning practitioners, but practiners who are interested in their own fame and fortune.  This foments a "Not Invented Here" mentality where each contributor to a software solution is driven to simplify a highly complex mess and to do so in the absolute minimum of time.  In short, the ship of nearly every Software Application is on a collision course with failure

Enter Agile practices.  Now we take the software that is already on a collision course with disarrary and we force our highly skilled and highly paid engineers to do everything all at the same time, simply because the members of  the Agile Alliance said it was a better way of building software.  

A number of challenges emerge: 

1)  Agile is the antithesis of inclusivity.  It teaches engineers a notion of survival of the fittest, rather than the intended team-work model which is most successful in any engineering endeavor.

2) It is nearly impossible to Agilify legacy software and commercial software.  

  • Agile methods work best when there is 100% code coverage and the team understands the inner workings of every facet of the software product.  
  • 100% code coverage is exceedingly difficult and costly to achieve, but it is, nevertheless far easier to achieve if you own every line of code is owned by a software engineer who understands it's purpose at a profound and deep level of technical understanding.
  • Frew commercial software vendors embody this deep level of ownership of  their code and it is unlikely that a software vendor would consent to deliver a 100% coverage test suite with their software (Although enterprises procuring commercial software ought to demand this deliverable contractually).
  • Legacy software suffers from a lack of test coverage by definition.  Since it was not built using a test-first methodology, it is going to be difficult to build out the required test suites for any sizeable application at a reasonable cost.  Hence, it is common to see organizations concede that 50% or 70% code coverage is better than 0%.

"Fail Fast," shout the Agilists, but take caution about these words.  Managers are not so tolerant of failure.  It is not in their nature to praise the team's ability to fail fast.  Moreover, "Fail Fast" quickly morphs into "Fail at Velocity," and there you have it a perfect recipe for failure -- Breaking Software Wholesale!

The situation gets far worse when most companies throughout the country are frantically trying to migrate to Cloud-based solutions.

Experience shows that many more software projects are failing under an Agile Regime than failed under Waterfall methods, and Waterfall methodology was intended to keep the project moving forward until it ultimately achieve success, yet we know that around the turn of the century that software projects were failing at an unacceptable rate.  Today the numbers have barely changed, and if anything, software failures are trending in the wrong direction.