(This column is posted at www.StevenSavage.com, Steve’s Tumblr, and Pillowfort. Find out more at my newsletter, and all my social media at my linktr.ee)
I’ve been thinking of large, easy-to-deploy, fast-to-scale solutions can be an inefficient waste of time. Before I go into my inevitable rant-o-speculation, let me note the origin – Chinese history and Agile. Trust me, it’s worth it.
As to Chinese History, I’ve had a deep interest in the Taoists and because of that some of Chinese history and culture. The Taoists provide a body of philosophy, meditation, and sarcastic humor while focusing on simplicity, uncomplicated-ness, and a kind of mystical realism. Chinese History is replete with scholar-bureaucrats whom I deeply relate to because I’m me. This means I can read about a figure who is essentially “He was in the Department of Awesome Flowcharts and a famous Taoist scholar” and go “yeah, this dude rocks.”
Early on in philosophical Taoism there’s an emphasis on frugality, not-over reaching, and taking care of things while small. Arguably the “journey of a thousand miles begins with a single step” originated in the Tao Te Ching (Chapter 64). If you focus on small things before they’re large and not overdoing it, you get a lot done without, well, doing a lot.
Now does this sound like Agile? Well now you can see where this comes in . . . and learn even more about my personality. I love Agile’s focus on small, meaningful incremental change. The tenth Agile principle even states success is what you don’t have to do. Well done Agile Projects do what is needed, no more, and thus get a lot done – and even save time by not overdoing things.
By now if you know me, you can see where this is going in the world of IT solutions, so thanks for humoring my above explanation. Now let me rant about discussions I have with my friends in IT which is . . . most of them.
Back in my day (hey, I’ve been in IT 30 years) I saw a lot of custom IT systems. I built them. Whatever you needed for your specific needs might not have an off-the-shelf solution, and if it existed it was large and expensive. So when you had to make something custom you learned the issue, solved the solution, then watched your code decay for ten years after getting a promotion. Maintenance was an issue, but at least it was small.
(Software is an expense, talent is the investment.)
In time people of course made solutions that were scalable, that were customizable, that built on layers and layers of code over the decades. We took advantage of cloud computing, of distribution systems. Any large provider of services can instantly set up your small business because of years of investment.
You can implement the same solution as the big guys, or customize a solution . . .
. . . except everything is now all so large.
You just bought, say, an infrastructure tracking tool. Sure it’s on the cloud, but only runs in this one browser. Also you have to figure which modules to activate. You have to train your team. You also have a lot of features you may not need, but everyone wants them as they’re there and easy to use (for the people who want them). You may not have to maintain the system, but you have to get everyone on board something they never participated in making and isn’t based on your specific needs.
Oh, and as soon as a certain web security company who’s name sounds like “Clown Strife” goes under your inventory system is unreachable. Well, also half your other systems are too, but I digress because I still flash back to that outage.
Now you’re using all of this stuff to ease paperwork while creating more paperwork. You are probably entering data you don’t need but it was one of the features. You now have to reconcile the new system with the old system, which is months of work and means you need a consultant. You’re trying to get everyone aligned on something that you basically dropped on them and they make workarounds.
I have met people who were still solving problems with spreadsheets because the applications didn’t work. I have been those people.
You quickly and efficiency implemented a big solution that doesn’t quite work and thus you make more work and waste more time. You have small issues to solve and maybe if you solved them first you wouldn’t be here. Plus maybe you had no gain once all the overhead is taken account of.
All that new work you added may be worse than the janky old system – and you can’t tell.
Right now in technology we can implement huge, powerful solutions easily with no concept of the small picture that makes them work. We don’t even know if they serve the small picture as the “Big Thing” becomes paramount. You can buy a solution and not solve anything and may not know.
Maybe it was worth it slowly maintaining and upgrading the system you had. Or having done it right in the first place. B Or a piecemeal migration.
This is a reminder of Agile, of the Taoists, all having a point. Solutions are often about the small things, about working on something before it’s large, of doing what’s needed – and not letting things grow into a problem. I think in the world of IT we’ve accumulated so much tech, so many solutions it’s easy to just throw a Big Thing at a problem. That may not solve the problem, it may make more of them.
There are situations that need bottom-up implementation and that’s a lot of them. Yes, you might be able to use a Big Solution, but only after you get what you need, and probably do it incrementally. You have to address the small to fix the big, not throw the Big at whatever else is Big and hope.
Also let’s face it, sometimes we get Big Solutions because we let something get out of hand and hope it’ll fix it. We forgot the lesson of starting small then repeat it.
Think small. It’s the way to do big things right as opposed to just doing a Big Thing and hoping.
Steven Savage