Four Years of Fintech Engineering vs. One Algorithm Question. Guess Who Won.
After four years building backend systems serving millions of users, I got humbled by a spiral matrix traversal problem. Here is my honest take on what that means.
MELVIN LIU
August 17, 2026 · 10 min read
The problem was spiral matrix traversal.
Not a payment processing service struggling under load. Not a Redis cache that had ballooned to 3 GB because someone thought it was a good idea to store serialized objects without thinking too hard about what "serialized" meant in practice. Not a distributed system failing in ways that only make sense after 45 minutes of reading logs at 11pm.
Spiral matrix traversal. A grid of integers you're supposed to read in a spiral order, from the outermost layer inward. A classic. A well-known problem. The kind of thing that shows up on every algorithm practice platform with a "medium" difficulty tag.
And I sat there, staring at it, with the very specific feeling of someone who has just been confidently wrong about something they thought they understood.
I Actually Prepared
Here is what I want to be clear about before anything else: I studied.
Not casually. Not "I skimmed a few articles the night before." I spent my weekends on this. Saturdays and Sundays that could have gone toward other things went toward fintech system design problems instead.
I worked through payment system architecture. Transaction idempotency. How you handle duplicate requests when a client retries after a timeout and you're not sure whether the first request went through. Database bottlenecks and when you reach for a read replica versus when you reach for a cache. Redis eviction policies. SQS visibility timeouts and what happens when a consumer dies mid-processing. Rate limiting strategies. Load balancing. Consistency trade-offs in distributed systems. High availability. Failure modes that only show up at scale.
I was preparing for questions like: "How would you design a payment system that handles millions of transactions per day?" or "What happens when one of your downstream services goes down?" or "How do you prevent duplicate charges?"
Those are questions I actually know how to answer because I've spent years working in environments where getting them wrong has real consequences.
I showed up to that interview genuinely prepared. Just not for what the interview asked.
Four Years of This
Let me give you some context on what my day job looks like.
I'm a backend engineer in fintech. The systems I work on serve millions of users. High request volumes. Production traffic that doesn't care whether you're having a good day or not. The kind of environment where a poorly written query can cascade in ways that take you a while to fully understand, even after you've fixed it.
I've dealt with a Redis cache that grew to roughly 3 GB because it had accumulated years of keys nobody cleaned up and objects nobody thought carefully about serializing. Getting that down to somewhere between 100 and 300 MB involved rethinking the data layout entirely and switching to a more compact serialization format. That's not a dramatic story. It's just the kind of thing that happens when you work on systems long enough.
I've debugged API throughput problems. Worked on database performance under load. Dealt with queues behaving unexpectedly at scale. Thought carefully about distributed system behavior when network conditions aren't ideal. Spent time on observability, because in production you can't just add a print statement and rerun the program. You need to understand what's happening in a system you can't fully pause.
This is the work I know. Incomplete information. Legacy code. Business requirements that change. Production traffic. Customers. Deadlines. Trade-offs everywhere.
I'm not listing these things to sound impressive. I'm listing them because they are the context that made the interview feel so strange.
Then the Spiral Matrix Appeared
The interview started. The problem was spiral matrix traversal. Given an m x n matrix, return all elements in spiral order.
My brain, which has spent years navigating production incidents, distributed system behavior, and the particular chaos of real-world software, did something I didn't expect.
It stopped cooperating.
I won't pretend I approached it gracefully. I didn't. I could feel myself reaching for intuitions that weren't there. The problem looked approachable. It looked like something I should be able to reason through. It's a grid. You go around in a spiral. How hard can it be.
And yet there I was, a person who has spent years thinking about systems serving millions of users, getting tangled up in boundary conditions and layer transitions and the specific question of when exactly you stop.
The irony was not subtle. It hit me in real time.
I can spend an afternoon reasoning about cache consistency in a distributed system. I can think through idempotency edge cases in a transaction processing service. And apparently maintaining four boundary pointers while spiraling inward through a rectangle is where that analytical ability decides to take a break.
Why Does This Happen
This took me a while to think through honestly.
Production engineering and algorithmic problem solving are not the same skill. They're related, in the way that playing chess and being a good military strategist are related. There's overlap. But they train different things, and they atrophy differently when you stop practicing them.
In production work, you're usually navigating an existing system. There's a codebase. There's context. There are constraints the business has already made. Your job is to understand what exists and then make it better or fix what's broken. You develop an instinct for reading systems, not building solutions from scratch on a whiteboard.
Algorithmic interviews ask you to do something different. You get a clean problem statement. No existing code. No business context. No other services to consider. Just a problem and a blank page and a clock. You need to recognize a pattern quickly, apply a technique you've practiced, and produce a clean solution under time pressure.
Those are legitimate skills. Competitive programmers spend years developing them. People who grind algorithm practice platforms develop them. I did not spend years developing them. I spent years developing something else.
Neither skill is fake. They're just different muscles. And apparently I hadn't been going to the gym for one of them.
Here's My Honest Opinion: Algorithm Interviews Are a Scam
I want to be careful about how I say this, because the easy version of this argument is weak and self-serving.
The weak version: "I failed an algorithm question, therefore algorithm interviews are bad."
That's not what I'm saying.
Algorithms are not a scam. Computer science fundamentals matter. Understanding computational complexity matters. Data structures matter. The ability to think through a problem systematically and reason about efficiency is a real skill.
What I think is actually a scam is the way the hiring industry has elevated algorithm interviews into a near-universal proxy for overall engineering ability.
Here's what I think is really happening.
Designing a genuinely good engineering assessment is hard. A company could evaluate candidates by asking them to debug an unfamiliar codebase. Or reason through a realistic system design problem. Or review a piece of code for problems. Or work through a production incident scenario. Or discuss architectural trade-offs in a domain they know.
Those evaluations would be much closer to what experienced engineers actually do.
But they're hard to standardize. They require interviewers who can evaluate nuanced answers. They take more time. They're difficult to score consistently across hundreds of candidates.
An algorithm question is easy to standardize. You give the same problem to 100 candidates. You measure whether they solved it. You compare results. You move on.
And this is where I think the system gets lazy.
Easy to measure does not mean meaningful to measure. These are different things. But we treat them as if they're the same, because "we can score this consistently" starts to feel like "this is a good signal." After a few years, the feedback loop closes: companies use algorithm questions, candidates optimize for algorithm questions, candidates who optimized get hired, companies interpret their performance as validation, and the mechanism continues.
What gets lost in that loop is the question: does being good at algorithm interviews tell you whether someone can actually build and maintain production software?
Sometimes. Partially. Not fully.
A 30-minute algorithm problem can tell you something. It just cannot tell you everything. And the problem isn't that these interviews exist. The problem is when they become a disproportionately important gate for measuring what are ultimately multidimensional engineering skills.
But Am I Just Bitter
Yes, I am aware of how this looks.
I struggled with an algorithm question. I am now writing an essay about why algorithm interviews might be a poor measurement. The timing is suspicious.
Let me acknowledge that directly: maybe I am partly biased. Maybe some of what feels like principled criticism is also frustration looking for intellectual cover.
But here's the thing. Bias doesn't automatically invalidate an argument. The question isn't "am I biased?" The question is "is the argument correct?"
I was thinking about the problems with algorithm interviews before this happened. This experience just made me think about it more concretely. The fact that I failed to demonstrate a skill the interview was testing doesn't automatically mean the measurement itself is good.
I can simultaneously have a weak spot in algorithm problem solving AND have a legitimate criticism of how much weight those interviews carry in evaluating experienced engineers.
Those two things don't cancel each other out.
The Uncomfortable Part
Here's what I'm not going to do, though.
I'm not going to use "algorithm interviews are flawed" as a reason to stay comfortable with the gap I discovered.
The reality is simple. If I want certain opportunities, companies will use algorithm interviews as part of their process. My opinion about whether that's a good measurement doesn't change the fact that I need to perform well enough to get through the gate.
I found a weak muscle. That's useful information. The mature response is not to argue that the weak muscle doesn't matter. The mature response is to train it, while also believing the system could be designed better.
I plan to spend more time on the fundamentals I've neglected. Arrays, matrices, hash maps, sliding windows, binary search, trees, graphs, basic dynamic programming. Pattern recognition under time pressure. The specific mental reflex that algorithm questions are testing.
Not because I think these problems reflect what I'll spend my career doing. But because they're part of the game, and I've been playing the game without working on all of it.
What I Actually Learned
My four years of production experience were not invalidated by one algorithm question. I know that.
But I did learn something I needed to know: I have been developing some engineering muscles very intentionally and others barely at all.
The system design thinking, the production debugging instinct, the understanding of how distributed systems fail in practice. Those I've worked on. Those I understand.
The algorithmic pattern recognition, the ability to look at a spiral matrix problem and immediately know how to track boundaries cleanly. That one I let atrophy.
Both things can be true. I can be a capable backend engineer and be bad at algorithm interviews. The two are not mutually exclusive. They never were.
I went into that interview confident in the wrong things. Spent my weekends preparing for the questions that matched my experience. And then a grid of integers, traversed in spiral order, showed me exactly which part of my preparation I had skipped.
That's it. That's the whole story.
Damn. That was humbling.
Discussion
Sign in to leave a comment.
Loading comments...