The 3 Ks of the Apocalypse — Or how awesome technologies can get in the way of good solutions.
As an App Modernization expert, I have come to the conclusion that the 3 Ks of the Apocalypse are, in no specific order, Kotlin, Kubernetes and Kafka.
What? You can’t possibly be serious! Those are world-class, top notch technologies! How can those technologies possibly be harbingers of doom? Yes, I realize I am running the risk of having my karma run over my dogma. The 3 Ks often get in the way of figuring out “how the system wants to behave.”
Okay, before I get flamed, let me explain. I agree. Awesome tech. Groundbreaking, disruptive solutions. It is precisely because of this that it is easy to be distracted by their brilliance and forget that when modernizing large scale applications, we need to think about the problem a little more. To explain what I mean, I am going to use assorted parables, movie quotes and some (hard ‘G’) gifs — you know, to distract you from thinking about tech in favor of thinking about the problem we are solving. The 3 KotAs are the famed Magician’s Assistant of the Modernization world: Ok, let’s watch closely to see how this magic trick is done. <intense focus> Hey, that lady is getting in the box. Cool sequins! I wonder how often she does this trick <losing focus> Yep, her feet are still moving. They must be real. I wonder if they have to make different sized boxes for different assistants? <you are getting sleepy…> How does she keep smiling like that? I wonder what she puts on her resume. OMG HE CUT HER IN HALF! How did he… wait. Crap. I forgot to pay attention to what he was doing. Aaaahhhhh!
“These are great and powerful tools, not magic tricks!” Steven Skeptic shouts back with arms crossed.
“True”, I answer. And then I throw in movie gif #1:
Steven Skeptic: “Oh. I see. You are talking about planning. You are going to say the ‘A’ word aren’t you (architecture).”
“Yep, you need to think about it a little for modernization” I respond cautiously, like a cat balanced on the edge of a toilet. Especially since for this type of problem, the issue often largely IS the architecture or design of the system. And I snarkily emphasize my point with the disturbing gif #2:
Ok, yeah. Can’t unsee that.
“Well, we are Agile. We need to move fast!” Sally Cynic says with the powerful breast stroke of a channel swimmer making her confident way towards the white cliffs of the obvious. And she even throws a movie meme back at me to emphasize her point:
I agree again. I think we are on the same page possibly. Ok. Speed is not the same as velocity. Velocity = speed + direction. What if there was no planning done in Sally’s meme? Jeff Goldblum said “Must go faster!”, but he surely implied “Must go faster — that direction!” Going fast toward Mr. T-rex seems silly. Moving fast in the wrong direction, can make things worse off than when you started.
I like to quote the inimitable Dr. Ian Malcom and say: “Oooh ah! That’s how it always starts. Then later there’s running and then screaming.”
Which is only slightly less well-known than the Jurassic Park(ish) Parable: “Your computer scientists were so preoccupied with whether they could, they didn’t stop to think about if they should.”
What I look for and try to measure is opportunities for exponential benefits vs incremental benefits. That takes some, maybe even just a little, thought.
“Ok, I get where you are coming from… BUT,” Sachin Scoffer bursts out like a tube of toothpaste being run over by a truck full of toilet paper heading to market during a pandemic. “..what does this have to do with Kotlin? You know, less verbose code, no semicolons, null references. The !! operator, for darn sakes! Developer happiness!”
Yep, you’re right Sachin. Those are some of the many benefits of Kotlin. BUT (and I always have a big BUT), in THIS case, is the flavor of productivity gains and developer happiness we would get by focusing on Kotlin, for example, MORE or LESS impactful than figuring out how to strangle off the functionality currently running the business on the mainframe which utilizes 30 year old code that no one understands and is afraid to change? Resources are finite so we can’t make both a top priority. If the answer is LESS, then IN THIS CASE, this is an incremental benefit not an exponential benefit. Burning your political capital extolling the benefits of Kotlin instead of doing more discovery, although beneficial, is not nearly as useful as it seems at first. In this case, Kotlin is a squirrel. Squirrels are devious little creatures who are fond of distracting dogs like Kotlin Dug and his friends. Cue movie gif #4.
Squirrel!
“Well Kotlin is a language, but Kafka and Kubernetes are PLATFORMS!” mumbles Doubting Tamás dismissively, sounding like a half awake diva being served a glass of iced half double decaffeinated half-caf with a twist of lemon by the pool.
Ah. 2 Ks for the price of one. The pain I have seen with Kafka is really when that solution is mapped to a problem that either doesn’t exist, or isn’t well defined. With Kafka, you have a nice Ferrari. “Exactly! Don’t you want the best?” exclaims Tamás while making vroom, vroom sounds. Yes, I DO want the best. But Ferraris are expensive to maintain. You need a skilled driver and a bunch of mechanics to keep it humming along. Maybe we should make sure we aren’t heading up a dirt road through the mountains in a snowstorm first. It shouldn’t take too long to look at the weather report. I just want to make sure we aren’t trying to fit the whole team into a shiny Ferrari — it’s better than walking (incremental benefit), but looking at the weather report and map would give us exponential benefits.
Finally, Kubernetes. K8s. Don’t you get exponential benefits out of the box by focusing on containerizing first? “Well…”, I say like a true consultant afraid of commitment, “It depends. If the problem you are trying to solve can be solved by the platform and containerizing alone, then awesome! Do that!” “That’s what I’m talking about!” exclaims Doubting Tamás. “BUT…” (another one of my big BUTs), “What if the application or applications are really ugly, ill-behaved, crappy applications? We would be just shoveling in a bunch of (fill in the blank) all over your new Ferrari. You may actually end up making it worse!”
“Alright.”, surrenders Tamás. Let’s look at the weather report (exponential benefit).
References:
Jurassic Park: Copyright Universal Studios and Amblin Entertainment, Inc.
Finding Nemo and Up!: Copyright Pixar
“…white cliffs of the obvious..” quote paraphrased from W. Somerset Maugham
Disturbing udder walking cow: I have no idea, but I am still disturbed.