You were hired to build a new startup from the ground.
This is your first day.
In 10 minutes you will have a meeting at Zoom, where you will discuss which technologies to choose.
You want to offer the team to try “fun” technology instead of “boring” one. Something new, fancy, and trending on Github.
And everything seems to be fine, there’s nothing unusual about it.
There’s a big problem that only experienced engineers know about it.
The Unknown Universe
When choosing “fun” technology you’re faced with “The Unknown Universe”
- “This fancy database suddenly shut down and we don’t know why. We can’t see any error logs or find a similar problem on their Github”
- “We didn’t even know that this fancy Frontend framework uses LocalStorage for internal system, it looks like that’s why memory is full and we can’t keep our values”
- “The iPhone hit a 100% CPU usage when the app started in battery saving mode. We can’t find anything about it in this fancy framework documentation”
And this is the problem.
Your job is keeping the company in the business, a few engineers understand that. When you pick “fun” technologies you can’t predict what could happen in critical moments. You can’t calculate the cost of maintaining. You’ve faced “The Unknown Universe.”
That’s why “boring” technologies are great.
The nice thing about boringness is that the capabilities of these things are well understood. And more importantly, their failure modes are well understood.
Proven by The Time
One critical advantage that boring technologies have is “proven by the time”
- When you are stuck you can go to the StackOverflow or GitHub issues
- When you want to learn best practice you can go to the development blogs
- When you need to hire, you can find a lot of great developers with decent experience.
And “The Unknown Universe” becomes not such unknown. It has already been researched by other people. So you can rely on it.
But not get me wrong and choose “boring” technologies every time.
Using new technologies is fine if you deeply understand why you need it.
There can be many motives for using “fun” technology. Someone from the team read about it in a blog post. Someone has been using it on a previous project for 1 month and says it’s great.
You need to find the root cause, why you need it.
You need to ask 3 “hard” questions.
- Ask what’s wrong with the current tech stack.
- Ask why you really need to use “this one fun” technology.
- Ask what your expectations are for using new technologies instead of the old ones.
If the team is not convinced that “fun” technology will be better than an “old” stable solution after these 3 questions, drop it.
If someone in the team convinces others to use only “this one fancy framework” it can be a red flag to use new technology. Ask him questions until all the team is satisfied with the answers.
Developer: “We need to use this new fun technology”
Developer: “It’s faster”
Developer: “I read about it”
Developer: “In some blog post”
Team: “Who wrote it?”
Developer: “Some random guy”
Team: “How it was measured?”
Developer: “Synthetic tests, I think…”
Team: “What about maintaining?”
Developer: “Mmm…I don’t think about it”
Team: “Ok, if we say that the cost of maintaining is almost zero and it’s faster by 10% than our old solution. How long it will take to implement this?”
Developer: “Maybe a couple of months…I don’t know”
Team: “How will the business benefit from this new technology?”
Developer: “Hmm, I think we could earn more somehow. I don't know”
This process is not daunting. It’s a handful of questions to fill out as homework, followed by a meeting to talk about it.
In the End…
You can’t explore all “The Unkown Universe” before you start. That’s why it’s the Universe. And business doesn’t have time for exploring the whole universe.
Use critical thinking and ask hard questions when you want to choose “fun” technologies. You need to deeply understand why you really need “this new fancy framework”. Good luck!
🔴 If you like this article share it with your friends and check me on Twitter.
🔴 🔴 Every week, I send out my “3-2-1” newsletter with 3 tech news, 2 articles, 1 advice, and 1 Secret BONUS for you. Join my 3-2-1 Newsletter
Top comments (4)
Yup! Boring technology gets the job done 100% of the time. You only need two things: A compiled language that can get close to the metal like C or C++ for the really high performance stuff and access to system level hardware and access to hundreds of millions of lines of well-debugged code in C/C++ libraries. And a CLI scripting language like PHP for cranking out code for everything else that needs to be done and can be extended via custom-built extensions (e.g. PECL).
If you mostly build your own tech, then you generally won't need to use anyone else's.
There's a fine middle-ground to this approach you are describing.. the reason why new methodologies and frameworks and methods come out is to make it easier for all types of specialized users (UX, front-end, back-end) to collaborate with ease in building a product.
Over time, the scalability and performance of the project are the success factors, not just getting things done.
That being said, it's all about the project type and it can vary from something that will never need much scalability in the first place to an enterprise solution which will become difficult to maintain and the experience will suffer
Yes, that's why I said "Use critical thinking and ask hard questions when you want to choose “fun” technologies. You need to deeply understand why you really need “this new fancy framework”. "