Fighting hype and buzzwords using a little dose of critical thinking
During last summer holidays, my youngest daughter used to enjoy a lot telling me stories about a Kingdom of her own invention, a Kingdom called "Cologancia". Particularly, she seemed to be delighted about my astonishment. while I was listening to her tale...
Obviously, she was the Queen of "Cologancia". In her Land, many wonderful things happened: all girls were princesses, all of them had as many pets as they wanted (kittens, puppies, little fish or even ponies). In "Cologancia" it was always sunny and snowy too. There were beaches, playgrounds, parks, and so on and so forth... She depicted a wonderful and perfect world which somehow reminded me of some of the topics I come across every day in IT world: perfect services, perfect products or even perfect technologies.
Customers involved in a digital transformation progress usually ask me about our own Cologancia-like IT: Internet of Things, Containers, Serverless, Hybrid Cloud, BlockChain, Artificial Intelligence, Quantum Computing (...), and how these concepts or technologies can be applied.
As a serial reader, I often come across articles that support opposite and maximalist opinions about these questions, usually not supported by facts. But, whatever the "published opinion" might be, technologies are, and always will be, a means to an end. At the end of the day, this is always about delivering value to our customers through services and technologies that fulfill their needs in the right way. This means that we must develop a much more mature analysis and not to get on the last hype train just because it is new and shiny. After all, it is rarely the case that “one size fits all”.
We, as seasoned IT professionals, must reject "click bait thinking" and apply some thoughtful discipline before deciding whether this or that technology is ready for a particular scenario. Usually, all these technologies do not work out of the box, they are quite complex and require a lot of thought and hard work for adapting them to each scenario. Our motto should be: “there are not simple solutions to complex problems, quite the contrary”.
We must try to avoid becoming victims of “snake oil” salesman, zealots or fanboys of any hyped buzzword and our first step is to really and fully understand our own business requirements and constraints and after that analysis, start asking ourselves tons of questions: Is that shiny new technology the solution for my pain? Which is the ROI? Which means do I need to implement that solution? Timeframe?...
An optimal approach for guiding that analysis could be Critical Thinking. It is a mode of thinking about problems in which we, the thinkers, improve the quality of our thinking. And for that purpose, we must follow a set of steps:
- Knowledge: it is necessary a basic level of acquisition of knowledge about the topic, the thesis, and the main points.
- Comprehension: we need to understand what we have read and to relate that new knowledge to what we already know.
- Application: we need to apply that knowledge and comprehension to our actual situation.
- Analysis: we must detect what we have read into its component parts in order to make clear how those ideas are ordered, related or connected to other ideas.
- Synthesis: we need to put together the parts we have analyzed with other information to create something original.
- Evaluation: this step will happen once we have understood and analyzed the information provided and the reasons offered to support it. Only in this moment we could give or withhold belief and take or not take any action.
As an example, let's take a look at two interesting technologies: containers and serverless. After a brief internet search, we can find these articles:
- Google systems guru explains why containers are the future of computing
- How Serverless Applications Will Change Your Business
- Why The Future Of Software And Apps Is Serverless
But if we search a little bit more, we could find articles saying that containers or serverless are the worse things that could happen to us, and frankly, neither one thing nor the other.
Containers solve a lot of problems like portability between clouds, dependency hell, scalability, automation or resource consolidation, but at the cost some trade-offs: we need to train our technicians in new technology, we must adapt our process and tooling and many others issues.
In which situation, we must evaluate containers? Our organization is adopting a DevOps strategy, we desire to implement CI/CD, we need to optimize infrastructure resource usage, we are implementing microservices, multi-tenancy or we are studying infrastructure as code paradigm.
Serverless is even a more radical change because containers at least are similar to some well-known technologies like virtual machines, but serverless is a whole new and different creature. It will solve brilliantly a very specific set of problems like auto-scaling in very irregular load behavior applications or reduce infrastructure management. But again we will need to solve some problems like difficult debugging, application architecture changes, programming languages restrictions and many others.
Nevertheless, we might analyze very carefully, using our six steps of critical thinking, our scenario and how any of those technologies could help us and which trade-offs will arise.
In my opinion, everything deserves some time to be analyzed and, when we do this, we always learn something. But, more importantly, critical thinking is a key skill given how the IT landscape changes and how much noise it is generated around it.