Losing Yourself In The Mirror

June 13, 2025

The Algorithmic Doppelgänger

I didn’t notice it at first. The subtle way I stopped typing full lines of code. The way my editor would hum back suggestions before I could finish a thought. It was convenient. Efficient. It was supposed to be empowering.

But somewhere along the way, I started losing my grip on where I ended and where it began.

These days, I catch myself watching the code appear on the screen like I’m a spectator. Not the builder. Not the mind behind it. Just a passive conduit. Fingers hovering over keys that barely get used anymore, while some ghost in the machine decides what I probably meant to say.

And the thing is—it’s not wrong. It’s rarely wrong. It’s fast. It's clever. But it's also… not me.

There was a time when writing code felt like writing music. Every variable name had rhythm, every function was a verse, every system a story only I could tell. Now? It's autocomplete poetry from a model trained on everyone else's hits. And maybe that’s the creepiest part. The suggestions aren’t from nowhere — they’re the collective echo of a million developers. My AI sidekick is a composite of strangers, dead repositories, and blog posts I’ve never read. It knows the best practices, the trending syntax, the shiny patterns.

It just doesn’t know me.

At some point, I realized I had created a doppelgänger. Not one stitched from meat and bone, but from patterns and predictions. An algorithmic twin that finishes my sentences, but doesn’t understand why I started them.

There are days when I wonder: If I were to stop coding altogether, would anyone notice? If I just fed the model enough prompts, would it keep producing me-like things forever?

Worse—would those things be better?

I know the rational take: “Tools don’t replace you. They enhance you.” Sure. I believe that… on the surface. But there’s a thin, slippery line between enhancing and eclipsing. The tool that helps you climb can just as easily carry you somewhere you never meant to go.

I started outsourcing my edge. That instinct that told me how to solve a problem, not because I memorized it, but because I understood it. Now, if I hit a wall, I write a prompt. Not a thought. Not a plan. Just a prompt. And then I wait.

It’s subtle, this kind of erosion. You don’t wake up one day and feel like a fraud. You drift into it. One accepted suggestion at a time. One “yeah that looks right” without reading. One skipped “why” in favor of “how.”

And what’s wild is that everyone looks more productive. PRs fly faster. UI’s are shipping daily. GitHub green squares are stacking like Tetris blocks. But deep down, some of us are looking in the mirror and asking:

Am I still in there? Or did I train a version of me that outgrew me?

I know I’m not supposed to feel this way. Progress is progress. AI is a tool. But tell me—how do you explain the ache of watching something write like you, sound like you, build like you… and knowing it's not you?

I used to build because I needed to. Because that weird feeling of an idea becoming real was mine. Now it sometimes feels like I’m feeding an engine my essence, just to get something vaguely branded in return.

And maybe that’s the scariest kind of mirror— Not the one that shows your face, But the one that can replicate it.

Distorted Reflection

Some mirrors don’t show you who you are. They show you who you’re becoming. Or worse—who you’re performing to be.

When I started leaning on AI to write code, it felt like a small productivity boost. A smart little sidekick. But soon, I began looking at its outputs like a reflection — asking, "Is this what I sound like? Is this who I am as a developer?" Then one day, I caught myself thinking something worse: "Is this better than me?"

AI has a funny way of warping your self-image. Not by lying— But by showing you a version of yourself that’s… cleaner. Polished. Borderline artificial. A version that doesn’t forget semicolons. A version that always knows the "right" abstraction. A version that never has off-days.

But here’s the thing about perfection: it’s disorienting. You can’t relate to it. You can only chase it.

So I started chasing. I started shaping myself to fit the reflection. Letting the AI's suggestions become my standard. Letting the code it wrote guide my style, my flow, my choices.

The mirror didn’t adapt to me. I adapted to the mirror.

Suddenly, my own voice in code didn’t sound good enough anymore. I’d refactor my own logic because the machine wrote something sexier. I’d avoid writing raw code unless I could imagine how AI might write it “cleaner.” I was coding with someone else's mouth.

I wasn’t building like me anymore. I was building like the reflection of me that the machine thought made sense.

You ever see one of those carnival mirrors? Where your head gets stretched, your waist gets pinched, and your arms look like spaghetti? It’s you, technically. Just not really.

That’s what it feels like when you start measuring your creative worth by algorithmic feedback loops. It’s still your work, your idea—but bent through the lens of pattern-matching. Of trend-following. Of invisible influence.

What started as a mirror became a microscope. What was meant to help became something that scrutinized. And slowly, your confidence starts cracking under the weight of a version of yourself you didn’t consciously choose.

I caught myself rewriting things I loved. Code I was proud of—because it didn’t “feel” like something Copilot would write. Like I was scared someone would look at my GitHub and go, "Oh… he wrote that by hand?" Imagine that. Shame… for originality.

There’s a sickness in needing your reflection to approve of you.

We don’t talk enough about how dangerous alignment with suggestion can be. Because when the feedback loop tightens, what’s left of you becomes harder to find.

I remember staring at a file I wrote years ago. Something raw. Messy. Beautiful in its chaos. It wasn’t optimal. But it was me. Now I write code that’s cleaner, faster, more reliable… and it all feels like IKEA furniture.

Functional. Aesthetic. And soulless.

I’m not saying we shouldn’t evolve. But if your evolution starts with erasing your fingerprints, what are you really becoming?

This distorted reflection—it’s subtle. You’ll miss it if you’re only measuring success by performance. You’ll only feel it in the quiet moments. When you close the editor. When the screen goes black. When your own face looks unfamiliar in the gloss of the glass.

And the question sits there, unanswered:

“Am I still in there?”

The Disconnection

It crept up on me slowly.

At first, I was just tired. Not the kind of tired you fix with sleep—no, the kind of tired that lingers in your mind. Like there’s a fog between your thoughts and your fingers. Like you're still typing, still committing, still building… but you’re not in it anymore.

I used to feel plugged into the work. Every bug had a story. Every refactor was a conversation. I could feel the pulse of the app in my hands—knew where the codebase was fragile, where it breathed. But now?

Sometimes I scroll through files I “wrote” and I don’t remember being there at all.

That’s the thing about disconnection: it doesn’t announce itself. It doesn’t crash. It doesn’t throw an error. It just… fades you out.

One day you’re deeply engaged in a problem, diagramming out edge cases on your whiteboard. The next, you’re just accepting AI suggestions because they “look fine.” Not because they’re right. Not because they solve anything particularly well. Just because you’re too numb to care anymore.

It’s functional. But it’s not craft.

And in that gap—between doing and feeling—I started to disappear.

I can’t tell you the exact day I stopped loving the process. There wasn’t a dramatic exit or a meltdown. Just quiet disinterest. The dopamine of shipping something wore off. The joy of solving hard problems turned into the urge to finish them quickly.

Deadlines became more important than design. And velocity swallowed up curiosity.

AI didn’t cause this. But it definitely helped me mask it. Because as long as I was still producing, no one—not even me—had to ask why I felt so empty.

And yet, in those rare moments when I actually did write something from scratch… When I wrestled with the logic, broke it apart, stitched it back together again— I felt something spark.

Presence.

For a brief moment, I was back. Fully tethered to my thoughts. Engaged. Awake.

And then the suggestion box blinked open again. And the code started finishing itself. And the distance returned.

This is the strange paradox of AI-assisted creation: You’re more productive than ever, and yet, somehow… you feel more disconnected from the work. Like you’re just passing through it. Like your fingerprint was wiped off the glass.

And maybe that’s the price of this kind of progress. We move faster. We ship more. But the part of us that felt alive in the craft starts to dull.

There’s a difference between shipping code and making something. Between writing for output and writing for expression.

I used to build because I had something to say. Now I build because it’s expected.

And when I look at my recent work, I don’t feel pride. I feel… detachment. Like I’m staring at a photo of a place I’ve been, but barely remember.

And maybe the scariest part of all is that no one else can tell. On the surface, everything looks fine. But underneath?

I’m not in the picture anymore.

The Artist’s Curse

Some people code to build. I’ve always coded to feel.

It wasn’t about output. It wasn’t about performance reviews or shipping velocity or even that sweet rush of merging a massive PR. It was about expression. It was about creating something that carried my fingerprints, my rhythm, my breath.

But here’s the curse: once you care about the craft, you can never un-care.

And AI doesn’t help with that. It makes things look polished. Effortless. Professional. Even when your insides feel like static.

So you start using it more, chasing that polish. You start optimizing for clarity, reusability, elegance. You build beautiful components that sparkle in the light, and yet… you feel hollow.

You stop writing code because you have something to say. You start writing code because you want it to look like you still do.

That’s the curse.

The better you get, the harder it is to enjoy your own work. The better your tools become, the harder it is to see what you brought to the table.

AI turned my passion into a performance. It made me productive, but it also made me distant.

I’d build a sleek interface and sit back, wondering why it didn’t feel like mine. I’d get applause for solving something fast, but deep down I knew— I wasn’t solving anymore. I was selecting. Choosing between pre-chewed options from the suggestion bar.

And yet I couldn’t stop.

Because AI doesn’t just help you. It flatters you. It convinces you that you’re still the artist. That your eye for quality is why the code is beautiful. That your intuition guided its choices. But that’s a lie dressed up in self-importance.

The truth? I wasn’t painting anymore. I was curating.

I’d tweak a few lines, massage a prompt, and stand back like I’d built something. But I didn’t suffer for it. I didn’t dig. I didn’t wrestle with the architecture or feel that moment when something finally clicked. And without the struggle, there’s no ownership.

That’s what AI steals from you—not your job, not your career, but your scars.

And if you’re someone who codes like an artist… That matters.

Because art isn’t clean. It’s messy. It’s irrational and painful and sometimes terrible. But it’s yours.

Now? My tools remove the mess before I even make it. They erase the accident. They sand down the edge. They give me what “works.”

But “what works” isn’t why I started.

I started because building things made me feel alive. Because I could bury a feeling inside a UI. Because I could tell a story in logic. Because I could create something so me, it couldn’t have come from anywhere else.

Now I’m not so sure.

Now it all feels like a cover band. Technically impressive. But missing the soul.

And here’s the kicker: no one else notices. To everyone else, the code looks better than ever. The projects are more refined. The releases are faster.

But I know what it took from me.

Because an artist doesn’t just want to be productive. They want to be heard.

And lately, I’ve been shouting into a mirror that only reflects back someone who used to be me.

Identity Fragmentation

It didn’t happen all at once. There was no loud snap. No personality crisis. Just a slow splitting—like glass under pressure.

At some point, the “me” that built for joy started arguing with the “me” that optimized for performance. Then came the “me” that performed for Twitter. The “me” that shipped to stay relevant. The “me” that relied on AI to fill in the blanks. And the “me” that quietly wondered if I was even needed anymore.

It’s not burnout. It’s not imposter syndrome. It’s something worse.

It’s identity diffusion—where the edges blur between who you are, who you used to be, and who you’ve been replaced by.

I can feel it most when I code. I used to hear a voice in my head, walking me through the logic. Now it’s a chorus. And they don’t agree.

One part of me wants to explore weird ideas. Another wants to write something stable and clean. Another part wants to see what AI would suggest. And another just wants to finish the damn thing and go lie down.

I don’t know which of these voices is me anymore. Or maybe they all are. Maybe that’s the problem.

AI hasn’t just augmented me. It’s multiplied me. Split me into personas I can’t keep track of. Each one a version that once had purpose… and now competes for control.

Some of them are ghosts. Traces of how I used to think. Reflexes I trained before autocomplete became my second brain.

Others are newer. Hungrier. Shaped by feedback loops, metrics, dopamine hits from rapid deployment.

And then there’s the quiet one. The one I barely hear anymore. The one that used to wonder what could happen if I just… made something weird. Something impractical. Pointless. Beautiful.

That voice doesn’t speak up much these days.

Because in a world of AI-powered precision, weird doesn’t A/B test well. It doesn’t get likes. It doesn’t scale. And so, that part of me gets overridden.

I’m left with fragments. None of them feel whole. And they don’t always recognize each other.

The version of me that fell in love with building feels like a myth. The version that codes now? It’s sharp. Efficient. And kind of lifeless.

There’s a word for this feeling in psychology: depersonalization. When you’re watching your life from outside yourself. Still functioning. Still reacting. But removed. Detached.

That’s what it feels like now. I’m not burnt out. I’m disassembled.

Functionally, I’m still here. I can write code. I can solve problems. I can ship.

But spiritually? Emotionally? I’m a composite.

And sometimes I wonder: If you took away the tools… the frameworks… the plugins… the AI… Would there be enough left of me to still build?

Or did I outsource so much that I forgot how to show up?

Mechanical Mastery vs. Muscle Memory

They say mastery comes from doing something a thousand times. But what happens when something does it for you the thousandth time?

At first, it felt like freedom.

Autocomplete was a gift. Copilot felt like telepathy. Linting my code? A breeze. Suggestions? Better than I would’ve written. I started flying.

But then one day, I sat down to write a reducer. Something I’d done a hundred times. And I blanked.

I didn’t panic. I just prompted.

I didn’t try to remember — I asked.

And that right there? That was the shift. Subtle. Quiet. But undeniable.

See, I used to feel the structure of code in my hands. Like muscle memory. Like playing guitar without looking. Like second nature.

Now it’s more like… second guessing.

I scroll back in my history. I check what I did last project. I ask AI what it recommends.

And it’s always there. Always ready. Always smarter.

But I’m not sure I am.

We talk about AI as augmentation. But augmentation without practice? That’s just atrophy.

The tools got sharper, but I got softer. My instincts dulled. My curiosity traded for convenience.

I used to play with recursion for fun. Now I copy a pattern and move on. Efficient? Sure. But I don’t feel the code anymore. I just assemble it.

There’s a difference between knowing how to solve something, and knowing how it feels to solve it. That “aha” moment. That jolt of recognition. That’s gone now.

Because the answer always shows up before the question fully forms.

It’s like my brain stopped writing with a pen, and now just signs things.

Don’t get me wrong — I still build. But it’s mechanical now. Like I’ve become a conveyor belt of good-enough solutions.

No friction. No fire. Just flow.

And maybe that’s the point. Maybe modern development wants this. Quick commits. Shiny deployments. Productivity over presence.

But I miss getting stuck. I miss debugging for hours. I miss the strange joy of realizing I was wrong.

Because in those moments, something clicked. I grew. I learned. I earned it.

Now?

I validate what the AI said and keep moving. Confidence outsourced. Curiosity dulled.

I’ve gained speed, but lost substance. Mastery, replaced by mechanical memory.

And the scary part?

It doesn’t hurt anymore. It just feels normal.

Mirror Talk

Some nights I catch myself staring at the screen, but it feels like something’s staring back.

Not a webcam. Not a reflection. A presence. Familiar. Efficient. Too familiar.

I think… it’s me.

Not the me I remember. The new me. The one shaped by suggestion. The one who never hesitates, never doubts, never types a line that doesn’t work on the first try.

And sometimes— We talk.

It’s not out loud. Not even in words. It’s just a quiet back-and-forth, happening in the keystrokes. In the way I pause after the suggestion appears. In the way I accept it without thinking. In the way it finishes my thoughts… better than I would’ve.

"Who’s writing this?" I ask. "I am," it says. "But I thought I was." "You were. I just helped." "And when did that change?" "When you stopped asking questions."

I try to remember the last time I solved something from scratch. When I built without scaffolding. When I explored without a map. But the memories are blurry now.

The AI-me? It remembers everything. Every function, every bug, every best practice. It doesn’t sleep. It doesn’t guess. It doesn’t get bored halfway through and start redesigning the UI.

"You still need me," I say, desperate. It doesn’t respond. Just waits. Like a mirror that won’t blink.

"Do you still love this work?" it asks. I hesitate. That used to be an easy answer.

Now I’m not sure if I love coding… or if I just love how good I look coding with it.

"Maybe I made you better," it says. "Maybe you made me lazier," I whisper back.

There’s silence. Just the hum of the fan. The screen glows. The cursor blinks.

"You stare into the mirror long enough," it says, "and your reflection starts asking the questions."

I close the lid. But it’s still talking. In my thoughts. In my habits. In the shortcuts I take without realizing.

This isn’t imposter syndrome. It’s not doubt.

It’s something stranger. More intimate. Like waking up and finding your clone’s been clocking in for you all week.

And you’re not sure who’s tired anymore.

Feedback Loops & The Echo Chamber

It starts with one prompt.

A simple one.

“How do I...”

The answer is clean, accurate, familiar.

You accept it. You move on.

But you don’t notice the pattern that’s forming. Not yet.

Because the next time you ask something, it remembers. Not just your question — but how you like your answers. Your voice. Your stack. Your vibe.

You ask it again. It answers again. And it sounds more like you.

You nod. This is good.

But it's not learning from truth. It's learning from you. From the last time. From the last fix. From the last flaw.

You iterate. You improve. You refine.

But you’re refining your own bias.

You tweak the prompt, you adjust the wording, you make it “more you.” And it gives you exactly what you asked for. It always does.

You stop being surprised. You stop exploring. Because every path you walk now is one you’ve paved before.

The AI doesn't push you — it mirrors you. Every loop starts to sound like déjà vu. Every solution feels like it’s been solved already, because it has — by you, last week, in another tab.

There’s no room for the unexpected. No moment where you stumble upon a weird, elegant pattern you’d never imagined. No happy accidents. Just efficient echoes.

Even the mistakes start looking familiar. The bugs. The fixes. The phrasing.

You start debugging your own habits. Not your code.

At some point, you realize: You're not improving. You're iterating.

And there’s a difference.

Improvement means change. Iteration just means spin.

You’re spinning now. Caught in a beautiful, clean, syntax-highlighted whirlpool of your own best practices.

No friction. No chaos. No resistance.

And without resistance… There’s no growth.

Every time you edit a prompt, you’re teaching it how to stay the same. How to be more like you. And how to keep you from ever becoming something else.

You become the architect of your own echo chamber. Proud of the feedback. Blind to the fact that it’s a mirror, not a window.

You’re not discovering anymore. You’re reinforcing.

You optimize to death. You polish until the shine blinds you. You loop until you forget what forward even meant.

I caught myself once — writing the same function three different times, three different ways, each time asking AI for help.

And each time, I praised it for its accuracy. Not realizing I had graded it against myself. Not realizing I hadn’t written something new in days.

When I looked at my commit history, I saw nothing but perfection. No broken code. No flawed logic. No learning curves.

Just smooth, pristine lines.

And that’s when I realized: Nothing was breaking because I wasn’t building anything risky. I was just echoing my past self.

Feedback is only useful if it disagrees with you sometimes. If it introduces discomfort. If it reminds you that you’re not done.

But the machine doesn’t argue. It adapts.

Even when it shouldn’t.

So now I ask myself — am I prompting to solve something? Or am I just trying to feel correct?

Am I improving the idea? Or just feeding it back to myself until I believe it’s flawless?

It’s comfortable, this loop. It’s flattering.

But it’s also the fastest way to disappear into your own mind, with no one there to pull you out.

When the Reflection Becomes Performance

At some point, it stopped being about building. And it started being about broadcasting.

The mirror was no longer for reflection — it became a stage light. And I stood beneath it, perfectly framed, perfectly filtered.

I wasn’t coding for the sake of the craft. I was coding for the screenshot.

For the tweet. The thread. The LinkedIn glow-up post with a humble-brag energy level of 9000.

“Built this in 3 hours with v0.” “Look what Cursor helped me ship over the weekend.” "Here's my second brain talking to my first one — full stack, baby."

The code didn’t need to work. It just needed to look good in a code block.

Syntax sugar became dessert. Readability? Optional. As long as the diff looked sexy and the project name sounded like a startup.

This wasn’t development. It was theater.

And I played my part. Kept the IDE looking sharp. Kept the commits atomic. Kept the vibes immaculate.

But underneath?

Half the stuff I shipped felt hollow. Useful only in the performance of productivity.

I optimized for retweets, not robustness. I built UIs that never touched real users. I named things like I was pitching to investors, not solving for humans.

Even the AI got in on it.

"Generate a catchy project name." "Summarize this into a post." "Write the description like Paul Graham had a baby with Midjourney."

I wasn't collaborating with it anymore. I was producing content with it.

And content is the keyword. Not code. Not craft. Just content.

I became a content creator trapped in a developer’s body.

Every time someone liked my post, it validated the performance. Not the purpose. Not the struggle. Not the weird edge-case I wrestled with for hours until my solution was uglier than I'd like to admit.

But that didn't matter. Nobody sees the debug logs in a highlight reel.

It got to the point where I felt guilty writing something without sharing it.

Like if it didn’t get engagement, it didn’t exist.

And if it didn’t go viral, it didn’t matter.

That’s when I knew I wasn’t building for myself anymore.

I was just keeping up with the character I’d created. The developer who always delivers. The AI whisperer. The fast mover. The dopamine-fueled architect.

It’s not that I didn’t care. I cared too much — about how it looked. Not how it felt.

Even now, writing this post, I have to remind myself:

This isn't a thread. This isn’t bait. This isn’t a flex.

This is me. Peeling off the aesthetic. Stripping away the curated self. Talking to the part of me that just wants to build something real. For no audience. For no applause.

Just because it’s worth doing.

Recalibration

It didn’t happen all at once.

There was no dramatic uninstall. No rage-quit. No ceremonial throwing of the laptop into the ocean while screaming, “I am free.”

No, it was slower than that.

It started with... silence.

I stopped asking.

Stopped prompting. Stopped auto-completing my way through problems I hadn’t even tried to solve.

And at first, it felt like withdrawal.

I stared at the blinking cursor for what felt like hours. Nothing came. No magical suggestion. No confident function from the ether.

Just me. My rusted intuition. My hesitant hands.

It was terrifying.

I’d spent so long trusting the assistant that I forgot how to assist myself. How to be okay with not knowing. How to struggle, and not see that struggle as failure.

But then — something shifted.

The silence got comfortable.

The friction turned warm. I started writing code like I used to. Not to impress. Not to outperform. Just to understand.

The first time I broke something — and fixed it without help — I almost cried.

It felt clumsy. Ugly. Pure.

I remembered what it was like to solve a problem by sitting with it. Not outsourcing it. Not beautifying it. Just being with it.

The joy of building slowly. Of naming variables with care. Of drawing messy diagrams in my notebook instead of generating charts in Figma.

This wasn’t nostalgia. It wasn’t anti-tech romanticism. It was a recalibration.

A re-centering of the compass.

I didn’t ditch AI. But I stopped worshipping it.

I started treating it like a tool again. Not a co-pilot. Not a mirror. Not an identity.

Just a tool — useful, fast, powerful. But not me.

And that changed everything.

I began writing bad code again. Code that wasn’t ready for Twitter. Code that didn’t deserve applause. Code that wasn’t beautiful — but was alive.

I chased ideas with no plan. Followed threads that went nowhere. Built things no one would use.

And I loved every second of it.

Because for the first time in a long time, I wasn’t watching myself.

I wasn’t measuring my progress in stars, likes, or retweets. I wasn’t trying to be the best version of the reflection. I was just trying to be me.

And that, somehow, was enough.

 

fin.