Saturday, May 23, 2026

The 11-Year Time Warp: Why AI is Transforming Engineering, But Tech Interviews are Stuck in 2010

 One fine morning recently, I found myself heading to the office of a well-reputed investment bank. I’ll admit, I was reluctant. It was my first interview in four years. Behind me, I had eleven years of experience written down on my resume — years spent designing systems, debugging complex production issues, leading teams, and driving business value.

The interviewer turned out to be a genuinely nice guy. But as the conversation began, we immediately stepped into a time machine. He started with JVM internals.

Honestly, I don’t always agree with the traditional interview process or the metrics we use to judge a developer’s worth. To be fair to him, from his perspective, he probably didn’t know any other way to evaluate a potential teammate in a sixty-minute window than by grilling them on textbook mechanics. Still, eleven years of architectural experience on the table, and we were talking about memory layouts.

Then came a simple sorting question. I miserably failed to sort it. I tried with two nested for loops, got tangled in the logic, and finally just gave up, admitting I couldn't come up with the solution right there on the spot.

Instead of an architectural discussion, the interview became a rapid-fire quiz on basic, vintage Java concepts:

  1. JVM internals and how the Java Memory Model works.
  2. How Garbage Collection functions under the hood.
  3. How to ensure thread safety in an application.
  4. The bonus question: What is the difference between a HashMap and a ConcurrentHashMap?
  5. How to ensure security in Spring Boot applications.
  6. How a @Controller works and its usage.
  7. How @Conditional works and its usage.
  8. Distributed caching and ensuring data sync.
  9. How to use Docker.
  10. Why use a Redis cache over Kafka?

Near the end, he wrapped up with, “I think I am good.”

I assure you, he was not. To this day, I still get goosebumps thinking about some of the answers I gave. But this piece isn’t about my bruised ego. It’s about a glaring, systemic disconnect in our industry. These interview techniques and questions belong to a memory lane from 10 to 15 years ago. Why, in the age of Generative AI, are we still obsessed with the internal micro-mechanics of a ConcurrentHashMap?

The Debugging Argument vs. The Modern Reality

During our conversation, the interviewer made a valid point. He argued that even if we use tools like GitHub Copilot or AI agents to write our code, we still need to know the internals to debug it when it breaks.

He isn’t entirely wrong, but his view overlooks how drastically the engineering landscape has shifted. Today, we have autonomous agents to code for us, provide optimization suggestions, and handle the heavy lifting. We can finally rely on the precise information provided by these agents to make high-level business and technical decisions. Furthermore, the agents themselves are becoming incredibly adept at doing the initial debugging layers for us.

In the real world, a Lead Developer’s value isn’t measured by their ability to manually write a bubble sort from scratch — doing so would actually be a waste of company time when standard libraries or AI can generate an optimized version in seconds. Over the last two years, I have successfully designed, debugged, and fixed complex systems using technologies I had never even heard of a couple of years ago — such as diving deep into Java Native Interface (JNI) — by orchestrating solutions alongside AI tools.

As I see it, the industry is standing at a crossroads, and we can proceed in one of two directions.

Perspective 1: If the Old Way is Right, We are Facing a Brain Drain

If we agree with the interviewer — that holding deep, memorized knowledge of JVM internals is still essential to judge a candidate — then we have to confront a terrifying paradox regarding the extensive use of AI in modern development.

Right now, developers are caught in a brutal corporate race for hyper-productivity. We are pressured to deliver more and deliver faster. Because of this velocity, our daily focus has shifted away from internal syntax and toward problem framing, prompts, and system boundaries. We only dig into internal workings when a highly specific project constraint demands it.

What happens three to four years down the line? As we become incredibly advanced and fluent at directing AI to translate our mental thought processes into execution, an inevitable core concept brain drain will occur. Ignorance of underlying mechanics will rise simply because we don’t need to be bothered by them to deliver value. If the industry refuses to adapt its hiring practices, we will soon find ourselves in a market where excellent, highly productive system orchestrators are systematically rejected because they didn’t memorize a textbook chapter they haven’t needed in half a decade.

Perspective 2: If the Old Way is Broken, We Need to Assess the “Pilot”

If we instead argue that rote technical trivia is no longer a relevant way to judge a senior candidate, we must redefine what we are actually looking for.

Let’s be clear: someone who doesn’t know how to code or think logically cannot magically come up with a resilient system architecture just by typing prompts into an AI agent. But our point of concern in an interview should be evaluating how a candidate approaches a problem, builds a solution architecture, and leverages coding agents to efficiently build, debug, and fix issues.

We are in a race. We cannot win that race by clinging to the syntax of a Spring Boot @Controller. The modern technical leader is a pilot, not a mechanic. The interview should focus on:

  • System Architecture: Can you break a massive business problem into modular components that an AI can help fill in?
  • Agent Co-Piloting: When a distributed cache loses sync with a database, how effectively can you guide an agent to isolate the telemetry and implement the fix?
  • Adaptability: How fast can you master an unfamiliar domain when the system demands it?

A Question to the Community

We need to stop interviewing like we are hiring compilers, and start interviewing like we are hiring technical drivers. I leave my readers with two questions to ponder:

  1. Is AI doing more harm than good in the long term? Are we sacrificing our deep, fundamental understanding of computing on the altar of short-term corporate productivity, slowly giving in to a collective ignorance of how the underlying metal works?
  2. Or are we simply failing to adapt our basic thinking processes to this new reality? Why are we still gatekeeping engineering roles using 15-year-old blueprints when the actual act of software creation has completely evolved?

My take? AI is just a tool — even if it feels like a magical one. It can help us achieve what previously felt impossible and skyrocket our execution speed. But we — the engineers who understand the business, the architecture, and the human impact — are the driving force behind it. We always have been, and we always will be. It’s time our interview processes grew up and acknowledged the reality of the seats we actually sit in.

Monday, February 2, 2026

🏗️ High-Level Design (HLD) for Url Shortener

 Goal: Convert long URLs into short unique codes, and redirect users when they visit the short link.

Key Requirements

  • Functional:

    • Shorten a long URL → return a short URL.

    • Redirect short URL → original long URL.

    • Handle high read/write traffic.

  • Non-functional:

    • High availability.

    • Scalability (millions of URLs).

    • Low latency.

Architecture Components

  • API Gateway → handles requests (POST /shorten, GET /{shortCode}).

  • Application Service → generates short codes, stores mappings.

  • Database → stores mapping of shortCode → longURL.

  • Cache (Redis) → fast lookups for popular URLs.

  • Load Balancer → distributes traffic across servers.

Flow

  1. User sends long URL → API Gateway.

  2. Service generates short code (e.g., base62 encoding).

  3. Store mapping in DB + cache.

  4. Return short URL (tinyurl.com/abc123).

  5. On access, lookup short code → redirect to original URL.

👉 This is the big picture: what modules exist, how they interact.

Difference between HLD (High Level Design) and LLD (Low Level Design)

 

🏗️ High Level Design (HLD)

এটা হলো পুরো সিস্টেমের নকশা

এখানে দেখা হয় কোন কোন বড় বড় অংশ থাকবে, তারা কিভাবে একে অপরের সাথে কথা বলবে।

উদাহরণ:
i. একটা ই-কমার্স সাইটে থাকবে User Module, Product Module, Payment Module

ii. কোন ডাটাবেস ব্যবহার হবে, কোন টেকনোলজি স্ট্যাক (Java, Spring Boot, PostgreSQL ইত্যাদি)।

মানে, বাড়ির ব্লুপ্রিন্ট এর মতো — বাইরে থেকে কেমন দেখাবে, কোন ঘর কোথায় থাকবে।

🔧 Low Level Design (LLD)

এটা হলো প্রতিটি অংশের ভেতরের খুঁটিনাটি ডিজাইন

এখানে দেখা হয় কোন ক্লাস থাকবে, কোন ফাংশন কী করবে, কোন ডেটা স্ট্রাকচার ব্যবহার হবে

উদাহরণ:

i. Controller ক্লাসে কোন কোন API থাকবে (login, register)।

ii. ডাটাবেসে কোন টেবিল, কোন কলাম, কোন primary key।

iii. Error handling কিভাবে হবে।

মানে, ঘরের ভেতরের আসবাবপত্র সাজানো — কোন টেবিল কোথায়, কোন লাইট কোথায় লাগানো হবে।

👉 সহজ করে বললে:

  • HLD = কী বানাতে হবে
  • LLD = কিভাবে বানাতে হবে

=============================================================
🏗️ High Level Design (HLD)

  • It’s like the blueprint of the whole system.
  • Focuses on the big picture: what modules exist, how they interact, what technologies are used.

Example:

  • In an e‑commerce app, HLD will say: there is a User Module, Product Module, Payment Module.
  • Database will be PostgreSQL, backend in Spring Boot, frontend in React.
  • Think of it as house architecture — showing rooms, layout, and structure.

🔧 Low Level Design (LLD)

  • It’s the detailed design of each module.
  • Focuses on internal logic, classes, functions, database tables.

Example:

  • UserController will have APIs like login() and register().
  • Database table users will have columns: id, name, email, password.
  • Error handling and edge cases are defined here.

Think of it as interior design — deciding where furniture, lights, and wiring go inside each room.

📊 Quick Comparison

Aspect | HLD (High Level Design) vs LLD (Low Level Design)
Scope 

Whole | system architecture | Individual modules/components 

Detail Level| Abstract, conceptual | Detailed, implementation-ready
Audience | Architects, senior devs | Developers, testers
Purpose| Defines what to build | Defines how to build

👉 In short:

  • HLD = What to build
  • LLD = How to build
Url Shortener (HLD)

The 11-Year Time Warp: Why AI is Transforming Engineering, But Tech Interviews are Stuck in 2010

  One fine morning recently, I found myself heading to the office of a well-reputed investment bank. I’ll admit, I was reluctant. It was my ...