DEV Community

Cover image for A Developer’s Identity Crisis
Nigel Dsouza
Nigel Dsouza

Posted on

A Developer’s Identity Crisis

A Developer’s Identity Crisis

Microservices vs Monolith

By Nigel Dsouza


Once, we were the keepers of monoliths — towering codebases that held everything in one place.

They were messy, sure.

But they were whole. Understandable.

Then the industry told us to break them.

Split the monolith. Decouple everything.

The age of microservices arrived.

And suddenly, being a developer wasn’t about understanding the system —

It was about understanding your part in it.


🧩 The Birth of the Fragmented Engineer

In the monolith world, you were a builder of cities.

Now, in microservices, you’re a plumber for a single street.

You own service-accounts-api-v2 — not the domain, not the flow, just the pipe.

And while that’s scalable, it’s also disorienting.

We went from architects to tenants.

From creators to maintainers.

And many of us — whether we admit it or not —

miss the clarity of the monolith.


🧪 The Myth of Autonomy

Microservices promised autonomy.

Teams could own their services end to end.

But in practice?

We’ve traded cross-functional ownership for cross-team dependencies.

Want to change how onboarding works?

  • You need five approvals
  • Three PR merges
  • And a Slack thread with someone named DevOpsDragon420 who hasn’t replied in days

Autonomy, it turns out, is a UX problem.


🧠 Monolith as Memory

A monolith is a system with a story.

You can scroll through a file and see the shape of decisions made over time.

You can feel the evolution — the good, the bad, and the hacks that shipped Friday night.

Microservices?

They’re amnesiacs. Stateless. Isolated.

Designed to forget everything except their job.

They scale beautifully.

But they don’t remember why.


🧭 The Developer’s Dilemma

As engineers, we crave:

  • Clarity
  • Narrative
  • Control

But our tools are increasingly:

  • Modular
  • Distributed
  • AI-assisted

We’re being asked to write symphonies —

while only composing trumpet parts.

So we cling to architecture diagrams like they’re treasure maps.

We over-document.

We invent endless tooling just to reconstruct a view of the system we once held in our heads.


🛠️ Reclaiming Identity in a Distributed World

It’s time to stop pretending this isn’t hard.

It’s time to design systems that are not just decomposed — but discoverable.

That tell their story.

That welcome new developers like tour guides, not gatekeepers.

That let engineers feel whole again.

Because whether we write monoliths or microservices

We are still storytellers.

Still problem-solvers.

Still creators.

And we deserve systems that don’t just scale —

But make us feel like developers again.


👤 About the Author

Nigel Dsouza is a Principal Software Engineer at Fidelity Investments.

He’s built monoliths, broken them, and stitched them into clouds.

He writes not just for the machines,

but for the developers trying to remember why they started.

Top comments (13)

Collapse
 
vijay_dsouza_d1453840477d profile image
VIJAY DSOUZA

This lovely piece of article by Nigel explains how today Developers are at crossroads in todays highly modern automated world and resultant identity crises. It bares the truth that earlier in the monolith era, developers had a holistic understanding and were builders of entire applications. However, with microservices today, that clarity is lost and Developers now only maintain fragmented, isolated services, often disconnected from the broader system. Earlier, Monoliths preserved the history and maintained rationale behind decisions. Today, microservices leads to increased complexity and dependencies and lack narrative. It becomes more of a dull drag world
Nigel urges developers to reclaim their identity — not just as code custodians, but as storytellers, creators, and engineers with a vision.

Collapse
 
david_rasquinha_bebf6bd6e profile image
David Rasquinha

Nigel, how then can we keep sight of the big picture? Being an expert in a niche is fine, but who or what will oversee the various niches working seamlessly together? Or will the weakest link in the chain snap and sink the ship?

Collapse
 
src527 profile image
Shubha bagrodia

While microservices offer advantages in scalability and flexibility, Nigelt highlights the need to address the human element of software development. By designing systems with developer clarity, narrative, and control in mind, organizations can empower their engineers and make working with microservices a more fulfilling experience. Well expressed!

Collapse
 
rajkaimal profile image
Rajendra Kaimal

Really enjoyed reading this. You have put into words something a lot of developers quietly wrestle with. That uncertainty around identity—am I technical enough, creative enough, or in the right space—is so relatable. The way you described your experience at the IBM bootcamp felt very real, especially how asking design questions made you think differently.

It is refreshing to see someone embrace that overlap between design and development without trying to box themselves in. The piece flows nicely and feels honest, not overthought. Just a solid reminder that it is okay to grow in unexpected directions.

Collapse
 
kwnaidoo profile image
Kevin Naidoo • Edited

Great topic! General rule of thumb in my opinion:

  • Microservice for performance reasons. For example, if you have something like an image resizer, it might require significant resources, and therefore it doesn't make sense to buy more compute for your main app. You could save on infrastructure costs by building an on-demand service in Cloudflare or other serverless providers.

  • Microservice for security reasons. You may have a transactions microservice that requires extra layers of security, a separate DB, and that kind of thing.

  • You have an API that will be used by various frontends like mobile, web, and even admin panels. While not exactly a microservice, this should be decoupled from the UI.

  • Microservice for newer tech when you have a legacy codebase. You may have an older codebase that's 3-4 versions behind and too expensive to upgrade, but you need features available in newer versions. Should be last resort though.

  • Microservice if you are using vastly different technologies. For example, you may have a webapp in Laravel, but need to implement some machine learning feature that requires a custom-trained model. Naturally, Python is the go-to language here because PHP is not designed for machine learning. Thus, it makes sense to have a separate service just to handle all the machine learning aspects.

  • Microservice for big teams. If you have large teams of 30+ developers. Sometimes, for practicality, it makes sense to have niche microservices managed by specific teams. This requires careful consideration, though, and shouldn't be done just for the sake of doing so.

  • Monolith for everything else.

Collapse
 
petercr profile image
PETER CR

Imagine the result if 30 Sculptors were allotted different sections of the marble block to create Michaelangelo's David!!
Look forward to engineers reclaiming their lost identity....

Collapse
 
gina_mendonsa_e7e866b1031 profile image
Gina Mendonsa

Thanks for sharing! Would love to connect as I have a few issues that could require your perspective.

Collapse
 
krishna_rajagopal_8c76c0b profile image
Krishnagopal Rajagopal Nair

Nice one!

Collapse
 
nitmala profile image
Nirmala Shetty

Great article Nigel. Very relevant to today's scenario

Collapse
 
gaurang_shetty_7ea695e7a4 profile image
gaurang Shetty

Insightful