Preventing a Software Frankenstein with Design & Care
As referenced in Part 1: “Are You Scared Yet?,” we continue our exploration of the monsters that can bring your company to a halt if not for quality planning and response. The focus of much of my writing relates to software, but it can easily be translated to most businesses that involve creativity, and even a large portion of those that don’t.
Frankenstein and His Monster* as Software?
*References to the monster follow the film mythologies, rather than the original novel, as the caricatures in modern culture are far more relevant, even though they lack all nuance.
For those not intimately familiar with Mary Shelley’s story: Victor Frankenstein created a monster in a home laboratory using unique and somewhat-related scientific and protoscientific disciplines. The alternate depiction from the movies usually involves the combination of parts and pieces from other beings. Upon seeing the appearance of his creation, Frankenstein flees in horror, allowing the creature to roam the countryside while appearing to cause trouble.
The likely intention of the Frankenstein novel is to generate sympathy for the creation, who seeks only to be understood and loved. The movies often miss this [un]subtle point. Ultimately, the villagers force the monster to run for the hills—the standard pitchfork and torch chase scenes in the films appear to have originated here. The monster was indeed “a monster” by definition: An imaginary creature that is large, ugly and frightening. But the monster isn’t evil or bad. It’s a product of its creator who failed to give it the necessary care, love and (most importantly) support needed to survive in the world.
The Frankenstein Analogy in Play
Many of you who build a piece of software from scratch also find yourselves using unique and only partially related methods to accomplish your goals. It feels like alchemy. While this conception process takes longer and requires more people than it took Victor Frankenstein to build his creation, the ultimate result is often the same: A thing that appears to be beastly and unmanageable to its creators. Yet, in the case of software designers, it’s not unleashed to the public by accident. The release happens because you need to eat and people will pay to interact with your new creature.
***(See the modern unrelated movie spoiler alert below.)
A “software monster” is an ongoing creation with all the limitations of any man-made beast. As you attach new “features” and “fixes,” you ignore the overall structure and your monster evolves into an even more unmanageable amalgamation. Each release of your product—the point releases and the major releases—is like setting free a wholly separate and unique monster out into the world.
Side note: In the Software-as-a-Service world, it’s more like destroying the old monster at the same time. Most software (even the 2/3 that claim to be SaaS) isn’t “as-a-Service,” in that it’s not truly multi-tenant. Beware of the companies that are obviously using the SaaS tag as a marketing gimmick. They want you to think their monster has fewer flaws by telling you there aren’t dozens of them roaming the village, uncontrolled.
Out in the World
The “software monster” is born without a well-formed mind—it’s been given no context for life. It has had no real-world interaction and suffers for it. While out in the world, facing interaction, it will be incapable of going beyond the boundaries defined by its creator. It may be functional but will not gain acceptance. It may improve over time with hard work but will struggle to gain any major acceptance if the original limitations put upon it remain in place.
Gang of Angry Customers
Though the intent of your creation may have been something beautiful, the positive aspects of the design are quickly overshadowed by the glaring design issues. This ultimately results in an army of villagers (your customers) chasing you down with fire and pitchforks. Rest assured, dealing with bad design and the related complaints from customers will feel like being hunted down by your life’s work.
The customers should be mad. They’ve been promised a fully functional solution—instead you’ve given them some horrid creature that’s way taller (more expensive?) than they wanted and barely speaks their language (doesn’t really do what they want). They were expecting you, their Prometheus, to create what they want, in their own image, and instead have been given something disgusting that barely works.
How to Avoid Being Frankenstein / Fix Your Monster
The unfortunate result of this willful release of your creature is that it was not properly prepared, cared for and loved prior to its introduction to the world. Once released, it lacked the proper support needed to adapt and improve—a horrible side effect. In software, you’re granted a reprieve in that rarely does the world immediately access your products. But don’t make the mistake of continuing to staple pieces on, trying to fix core problems by masking them.
Think Long Term / A Design Mindset
Too often, you develop a “technical debt” in your products. Long overlooked design flaws, out-of-date or insecure libraries, and poor development lifecycles lead to a mountain of issues that remain impossible to fix under the stress of generating sales and solving urgent bugs.
The first step in getting better is to change your mindset. Stop trying to fight each issue as an individual problem. Consider changing the entire way your development efforts are run.
Act Long Term / Raise It Right
Start with something simple like defining an organizational standard for quality. Create a well-defined software-development-lifecycle (SDLC) that contains ample time and effort for your design team. Ensure that developers understand during the coding process that self-testing for performance and usability are a must. Include significant QA steps to validate any and all changes. Include tests for performance of every little thing. Regularly run full smoke tests and regression tests on the entire product. Tweak, constantly.
Be Patient / Love and Support
Changing the way you operate an entire organization overnight won’t net visible results until you’ve gone through numerous iterations of the new system. You’ll need to advance several versions and releases into the future before the “monster” becomes a fully functioning member of society.
It’s not hard. OK… it’s harder than having done it from day one, but it’s still easier than continued failure.
Dedicate yourself to the change. Know that it reaps rewards, improving life for your organization and every place it touches. When things get tough, know that there is a light at the end of the tunnel.
*** Jurassic World: Fallen Kingdom spoiler alert….
This is basically the entire plot to Jurassic World 2. People paying to play with the monsters they created.