Blog

Neon threads woven into one organized cable over a dark concurrency diagram
May 5, 2026

Master Structured Concurrency In Java 25

Old Java concurrency often looks like someone spilled threads on floor and called it architecture.

Java 25 continues the structured concurrency preview with JEP 505 and finalizes scoped values in JEP 506. Together they make concurrent work easier to reason about: subtasks start together, finish together, and context has clear lifetime.

Broken mock mannequins in a graveyard with a real glowing database engine descending
May 3, 2026

Why I Ban Mockito In My Teams

Mockito is useful library. I still ban heavy Mockito culture in teams.

Because once developers discover mock everything, tests stop checking behavior and start checking choreography. Then every refactor breaks tests while production bugs walk through front door.

Red rejected stamp over a dark code review screen with failing test indicators
May 2, 2026

No Tests, No Merge: Why I Reject Half of PRs

A pull request without tests is not almost done. It is a story with missing ending, and usually the ending is production incident.

I reject many PRs for this reason. Not because I enjoy being difficult. Because code without executable proof is just opinion with syntax. In fintech this opinion can move money, duplicate money, lose money, or block customer from his own money. Very romantic, yes.

Dark-mode IDE on ultrawide monitor with minimal desk and precise terminal panels
May 1, 2026

My Developer Setup 2026: Tools That Actually Matter

Developer setup is not desk aesthetics competition. If tool does not reduce friction, improve feedback, or protect focus, it is decoration.

My 2026 setup is boring on purpose: strong IDE, fast terminal, good keyboard, reliable tests, and AI where it actually helps.

Crumbling golden 100 percent coverage trophy with rusty gears inside
April 29, 2026

Your 100% Test Coverage Is A Lie

100% test coverage can be a beautiful lie. It looks serious in dashboard. It gives manager nice green number. It says almost nothing about whether your system works.

Coverage tells you which lines executed. It does not tell you whether behavior was verified, SQL was correct, dependencies were real, or business rule survived production data.

Ancient glowing tablet decoded by a high-tech laser scanner with code symbols
April 27, 2026

How To Read Documentation Like A Senior Engineer

Some developers panic when there is no ten-minute video for their exact bug, framework version, and operating system. This is fragile way to live.

Senior engineers read documentation. Not because docs are always good. Because official source is where assumptions go to be checked.

Glowing node map where one red failed node causes data pulse to reverse safely
April 24, 2026

The Anatomy Of A Distributed Transaction

Distributed transaction is where architecture stops being diagram and starts asking what happens when third service fails after first two succeeded.

If your answer is “it should not fail”, please leave design meeting.

Glowing brain hologram above a keyboard with blue testing cycle lines
April 21, 2026

Stop Coding, Start Thinking: The True TDD Mindset

Most developers learn TDD as “write tests before code” and stop there. This is shallow version. Real Test-Driven Development is not QA ritual. It is system design with executable feedback.

If you write the test after the code, you have missed the point. You already designed solution in your head, maybe badly, and now you ask test to applaud.

Black null void swallowing a glowing line of code while red alarms flash
April 18, 2026

Null Is Not An Option: Use Optional Or Fail

Null is billion-dollar footgun with tiny syntax. Modern Java gives better options, and still teams return null like it is 2006.

If absence is valid, model it. If absence is invalid, fail loudly. Do not leave trap on floor for next developer.

Tiny glowing digital wrench jamming a giant steel vault door with sparks
April 8, 2026

Database Locks: The Silent Killer Of High-Load Systems

High-load systems often die quietly inside database lock queue.

Application logs say request timed out. Database knows truth: transactions waited, rows locked, deadlocks formed, and nobody designed concurrency.

Blindfolded developer crossing a tightrope over a dark abyss with a laptop
April 4, 2026

Refactoring Without Tests Is Just Guessing

Junior developer opens legacy payment module and says: “This code is ugly. I will clean it.” Famous last words.

By evening code is prettier. By morning settlement numbers are wrong. This is how refactoring without tests becomes guessing with confidence.

Luxury skyscraper at sunset reflecting a stormy stressful sky
March 29, 2026

10 Years In Big Tech: The Ugly Truth About Fintech

Fintech is sold like prestige: modern office, high salary, clever people, important systems. All true.

Also true: your bug can block salary payment for real person. Your alert can wake you at night. Your “small change” can become regulatory incident. Welcome to adult backend engineering.

Second duplicate glowing credit card shattering above a cyberpunk checkout terminal
March 22, 2026

Idempotency: How Not To Charge A Client Twice

If your payment API cannot handle retry, it is not payment API. It is roulette with JSON.

Networks fail. Clients timeout. Gateways return 502 after processing. Users double-click. Job runners retry. If your system charges twice because request arrived twice, architecture is guilty.

Beautiful organized toolbox beside a greasy chaotic high-performance race engine
March 18, 2026

Clean Code Is Overrated When You Need Performance

Clean Code is good advice for most business logic. Most.

There is remaining 5% where pretty abstraction burns CPU, allocates garbage, and loses money. In hot path, performance is feature.

Frustrated developer near a burning laptop while an organized server rack stays calm
March 14, 2026

The Works On My Machine Excuse Ends Here

“Works on my machine” is not explanation. It is confession.

It means your delivery unit is incomplete. You shipped code but not environment. You tested behavior but not runtime assumptions. Then you blame ops when production refuses your fantasy.

Red alarm server rack with a glowing insect-like bug emerging from cracked hardware
March 6, 2026

The $1 Million Bug: A Junior's Nightmare

A junior ships small change in transaction flow. Tests pass because tests are weak. Production receives rare input. Null appears. Retry logic fires. Balance updates twice.

Now small bug has business number attached. Maybe not exactly $1 million. Maybe more. Enough that nobody cares how clean your code looked.

PagerDuty alert at 3 AM lighting a stressed engineer in a dark bedroom
March 2, 2026

How To Survive Your First On-Call Shift

First on-call shift teaches one thing fast: production is real and does not care that you are junior.

Do not panic. Panic wastes glucose. Collect signal.

Developer in Spring Boot shirt trying to fix a complex engine with one bent screwdriver
February 27, 2026

Why I Do Not Hire Framework Developers

I do not hire framework developers. I hire engineers who can use frameworks.

Difference is large. Framework developer knows which annotation to paste. Engineer knows what problem annotation hides.

Two modern office chairs under glowing signs reading ten years and responsibility
February 18, 2026

Seniority Is Not About Years Of Experience

Some developers have ten years of experience. Some have first year repeated ten times with better salary.

Seniority is not calendar. Seniority is responsibility accepted before someone forces it.

High-tech hamster wheel shaped like a binary tree glowing neon green
February 11, 2026

The Truth About LeetCode: It's Just An IQ Test

LeetCode is not useless. It is also not engineering interview in full.

It is closer to IQ test with syntax. It measures pattern recognition, speed, edge-case discipline, and stress handling. Useful signals. Incomplete signals.

Messy whiteboard architecture diagram stamped with a giant red rejected mark
February 8, 2026

Why You Failed The System Design Interview

You failed system design interview because you drew load balancer, cache, database, and queue like sacred icons. Then you stopped thinking.

Boxes are not design. Trade-offs are design.

Digital data streams compressed into a tiny glowing diamond on a dark circuit field
February 3, 2026

String Theory: Optimizing Memory In High-Load Systems

Strings look innocent because they are everywhere. That is exactly why they become expensive.

In high-load Java systems, one careless string operation inside hot path can create ocean of short-lived garbage. Garbage collector will clean it, yes. Then you will clean incident channel.

Futuristic bridge rebuilt while high-speed cars continue driving over it
January 31, 2026

Your API Is A Mess: 5 Rules For Backward Compatibility

Breaking API clients because you renamed field is not innovation. It is vandalism with release notes.

Public API and internal shared API need backward compatibility discipline. Otherwise every deploy becomes coordination meeting.

Solid stone pyramid beside chaotic glass microservice spheres connected by wires
January 27, 2026

Microservices Are Not A Silver Bullet: You Probably Need A Monolith

Microservices are not architecture maturity badge. They are distributed systems. Distributed systems are where simple bugs wear expensive clothes.

Most startups asking for microservices need modular monolith, one database, strong tests, and fewer meetings.

Rusty REST steam train being overtaken by a glowing gRPC bullet train
January 22, 2026

REST Is Lazy. Use gRPC For Real Systems

REST is fine for many public APIs. For internal high-throughput service-to-service calls, JSON over HTTP often becomes lazy default, not deliberate choice.

If your fintech platform moves serious traffic between services, gRPC deserves attention.

Sterile surgical tray with glowing chips and code snippets under magnifying glass
January 16, 2026

The Anatomy Of A Perfect Code Review

Code review is not ceremony, not ego arena, and not rubber stamp. It is last human checkpoint before code joins production story.

Perfect code review protects system, author, and users. In that order.

Toy snake made of tape facing a polished steel bank vault with a Java emblem
January 9, 2026

Python Is For Scripts, Java Is For Business

Python is excellent language for scripts, data exploration, automation, notebooks, glue, and fast ideas. I like it there.

But if you ask me to move millions of dollars through high-load backend, I want Java. Boring compiled Java. Static types. JVM. Mature observability. Predictable failure modes. The bank vault, not duct-tape snake.

Zombie office worker moving sticky notes on a Kanban board in abandoned office
January 3, 2026

Agile Is Dead, And You Killed It

Agile is dead in many companies. Not because manifesto was wrong. Because people replaced engineering with calendar rituals and Jira choreography.

Now teams move tickets with priestly seriousness while codebase rots. Very agile. Very dead.

Energy shield blocking sticky notes and urgent stamps from shadowy figures
December 30, 2025

Don't Be A Yes Man: How To Push Back On Product Managers

Your job is not to make product manager happy by saying yes. Your job is to help company ship useful software without destroying system.

If requirement is unsafe, deadline fake, or scope impossible, silence is not professionalism. It is negligence with polite face.

Heavy steel door painted NO holding back a storm of tickets and emails
December 22, 2025

Burnout Is For Those Who Cannot Say No

Burnout is complex. Companies exploit people, managers overpromise, systems are understaffed. All true.

Also true: many engineers help build their own burnout by saying yes when professional answer is no.

Bloated ORM machine crushing a sleek server rack under heavy gears
December 14, 2025

Stop Using ORMs Like A Junior

ORM is useful tool. Used like a junior, it becomes production tax collector.

Hibernate does not remove SQL. It hides SQL until your endpoint creates 900 queries and memory graph looks like crime scene.

Esports coding arena split with calm architectural blueprint of a software system
December 7, 2025

Competitive Programming: Superpower Or Waste Of Time?

Competitive programming made me faster at thinking. It also taught many people habits that are terrible in production.

So is it superpower or waste of time? Like many engineering answers: depends what you extract.

Financial chart plunging into red on a monitor with somber reflective lighting
December 3, 2025

My $100K Mistake: A Post-Mortem

This story is anonymized, but lesson is real: tiny database oversight can create invoice with too many zeros.

We shipped feature. It worked in staging. It passed happy-path tests. Then production traffic arrived and one missing index turned simple query into financial bruise.

Programming books and certificates burning to power a glowing server engine
November 29, 2025

Your Roadmap Is Wrong: Stop Learning Syntax, Start Building

Your roadmap with twenty courses, eight certificates, and zero deployed projects is procrastination wearing productivity costume.

Stop learning syntax in isolation. Start building systems that embarrass you, then improve them.

Junior developer facing empty chair while glowing open-source code library floats behind
November 24, 2025

Stop Asking For Mentors, Start Reading Code

Beginners often say: “I need mentor.” Maybe. But many use this sentence to avoid doing hard independent work.

The best engineers in world already left lessons in public code. You are ignoring free university.

Old Java 8 tombstone beside a bright Java 25 monolith in a futuristic graveyard
November 18, 2025

Java 25 Is Here: Why Your Java 8 Code Is an Embarrassment

Java 25 is here, and some teams still write Java like it is 2014. At some point legacy stops being stability and starts being professional laziness.

Yes, Java 8 was important. Also Windows XP was important. You still should not run your serious fintech platform like museum exhibit.