Software due diligence is a bit like having a home inspection done when purchasing a house. Some problems are more serious than other. For example, if you find that there is mold or asbestos in the basement that might be a reason to walk away. Like a home inspection in most cases, the diligence does not reveal such serious problems with the software that you will want to back out of the deal entirely, it is typical that you may want to re-consider your valuation or take steps to manage the transition.
Red Flags
- Architecture that will not scale (possible walk away)
- Application cannot be re-built / run from source control checkout
- Inability to engender a sense of confidence that the solution really works
- Lack of forethought (this is where I’d like to go)
- Architecture that cannot be cleanly expressed
- Prima donna developers
- Absence of technical leadership
- Reliance on obsolete technology (i.e., Delphi)
- Business logic consistently found in the presentation layer
- Absence of any documentation whatsoever
- Critical code that no one owns (i.e., that was developed by abc who isn’t here anymore)
- Serious ethical breakdowns
Reasonable expectations
- Absence of perfect documentation (even the best organizations are challenged to have up to date documentation)
- At least one thing that impresses you as “world-class” (the more the better)
- Good code
- Finding that there are one or two go-to people
- People wear many hats (product manager, QA, developer, etc.)
- Insufficient infrastructure
- Reliance on free services
- Lack of published standards, metrics, or formal process
- Informal bug tracking
- Out of date off-the-shelf software
- Limited requirements documents
Things to give you pause
- Non-homogenous technology configuration
- Bleeding edge / specialized technology (e.g., Cassandra, assembly)
- Dependence on a service provided for free (Google Translate API)
- Sloppy code
- Lack of appreciation of the competition
- Insufficient knowledge of best practices (JQuery vs. JavaScript)
- How well will the system under examination compliment / be incompatible with existing systems?
- Are some areas more complete than others? (some code is more battle tested)
- Is there something that should be patented?
- Poor user interface
- General sense of mediocrity