Can Innovation be Boring?
Go and ask a few people at any IT conference about their definition of innovation. The term new technology will be part of many answers. The IT crowd is deeply in love with new technology.
Since most of us are working for businesses that need to generate revenue, let’s take a look at the Business Dictionary definition:
The process of translating an idea or invention into a good or service that creates value or for which customers will pay. To be called an innovation, an idea must be replicable at an economical cost and must satisfy a specific need.
The emphasis lies on the economic value and utility. An idea or invention is at the core of an innovation. New technology is not an essential part of it.
A Real Story
Early this year I started a consulting task in a company that uses a CRM system whose roots are 20 years in the past. Writing everything into a relational database, including source code, seemed like a good idea at the time. The entire tooling for screen form design sits on top of the database.
With the introduction of source control management systems, the source code had to be transferred back and forth between the file system and the database somehow. One form ended up in 20 files, one file per table, which referenced each other using bizarre mechanisms. The implementation of upload and download was inefficient, non-transactional, and error-prone.
The database contains about 1000 such forms.
Innovation was desperately needed here. But first I had to swallow a fat, ugly toad sideways. Digging into ancient software, analyzing tons of nasty legacy code, and shoveling data around did not sound like fancy rocket science.
After all, who likes to peer under 20-year old rocks and find out what’s lurking underneath? Yuck. Can I instead play with a new, shiny programming language and the web framework that comes with it, please?
The solution is laid out quickly. Store a form in a JSON document instead of ripping it to 20 pieces. For that I had to reengineer the complex structure in the database, load and store table dumps with as little boilerplate code as possible, build a composite structure from 20 tables, do some JDBC fine tuning, and take care of good testability.
- Java 8
- Simple Flat Mapper as minimal O/R Mapper
- Jackson as JSON mapper
- Picocli as command line parser
On top of the new tooling came a load of renovation work on Perl scripts and a careful, stepwise rollout to the development process with backwards compatibility. Last but not least, the final mass migration of 1000 forms was performed.
Solid craft, nothing spectacular by today’s standards.
Please take an honest look at yourself now.
From a technical viewpoint this story won’t make any IT hipster drop their energy drink in excitement.
Anyone can do that, where is the hero factor in this? Bingo! Everyone should be able to do that! I am going to leave this project one day. My successor will neither have the time nor the nerve to admire my heroic creations.
What About the Economic Value and Utility?
The tool I designed is vital for 60 developers and the CRM product itself. A checkout now takes 20 seconds instead of 10 minutes. The form upload is transactional and safe. The JSON format finally allows for diff and merge of a form. The deployment pipeline’s speed is boosted dramatically and the number of objects in the source code repository is reduced by 70%.
So much for the hero factor.
This is innovation. None which shines with a buzzword cloud in my CV or on Twitter. None which meets with applause from the scene. However, for the paying customer it has great value and will be useful for many years to come.
That’s what IT services are all about.
The sweetest balm for the soul of software developers is to admire their ingenious code. We love our code and are proud of it. In the economic reality this is of secondary importance, to put it mildly.
Let’s remind ourselves every now and then that service implies to serve.
Innovations that create economic value and utility may indeed seem boring.