I was out for a Saturday morning jog, headphones in, doing my usual loop through the park.
There was this group of kids messing around with those cheap plastic bow-and-arrow toys. One kid (maybe nine) got a bit too excited, yanked the string back hard, and let it rip. The arrow went way off course and smacked me right in the eye.
Man, the pain was instant. I went down on the path, hand over my face. By the time I got to the hospital, things were already going blurry. The plastic tip had torn my cornea pretty bad, swelling kicked in fast, and it messed up both optic nerves. A few days later, nothing. Complete blackness.
Doctors called it traumatic optic neuropathy. They didn’t sugarcoat it. Maybe some vision would come back in one eye eventually, but the other one definitely wasn’t going to make it.
I’m a software engineer. My passion, my entire world lived on screens. Overnight, those screens disappeared.
At first I was furious. How does one stupid accident take everything away?
Then I found out more about the kid. Poor family, barely making ends meet. That toy bow was probably one of the only cool things he had. He didn’t aim at me, didn’t mean anything by it. Just a kid being a kid.
His mom called a couple weeks later, sounding scared, asking if she could bring him over to say sorry in person. My conscience wouldn’t let me pursue anything that might financially crush a struggling family. I never even considered it.
I didn’t even hesitate. Of course.
He stood there in my living room. I couldn’t see him, but I could tell he was tiny and terrified. His voice cracked right away: “I’m really, really sorry. I didn’t mean to hurt you.(translated)”
He started crying halfway through.
I felt around, grabbed his little hand, and told him it was okay. I meant it. Accident, pure and simple. No hard feelings.
Something loosened in me right then. The anger just drained out.
Didn’t fix my eyes, but it let me breathe again. And it let me get back to work(a million thanks to the people who believed in me).
I jumped back into building things pretty quick, probably just too stubborn to sit around doing nothing.
Early days were rough. I’d be at my desk with headphones on, NVDA reading every character I typed, and I’d still feel totally lost in code I used to know inside out. Finding one function in a big file and getting to the exact position next to a character? Felt impossible, like trying to find a single page in a book in a pitch-black room. Jumping between services, keeping the whole flow in my head without any visual cues. My brain hurt.
I started on Mac with VoiceOver because that’s what I’d always used. It was fine for email and browsing, but the second I opened a terminal full of logs or a huge codebase, it fell apart. Laggy, focus jumping all over. Just couldn’t keep up. I switched to Windows and NVDA and it was like someone turned the lights on (ironically). NVDA was quick, accurate, and I could tweak it however I wanted.
I also dropped a bunch of money on a fancy braille display. Everyone online said it was the best thing ever for coding blind. What a waste. It lagged, disconnected randomly, the cursor routing barely worked, drivers were a nightmare. I spent more time fighting the thing than writing code. After about a week I gave up and shoved it in a drawer.
The stuff that actually worked was way simpler.
NVDA, free and rock solid. I even wrote a couple tiny scripts so it would announce things the way I liked.
VS Code on keyboard only. Command palette and the outline view became my best friends.
Windows Cmd(Yes that abomination). Output was clean, no weird formatting that tripped up the reader.
I went overboard on tests. Unit, integration, everything. If the tests were green and the logs looked good, I opened a PR..
Tons of verbose logging locally. I’d tail -f and let NVDA read it live.
Pairing with teammates almost every day. They were absolute legends, reading traces out loud, describing graphs, telling me if a spike was real or not.
Dictation for longer comments. Wasn’t flawless, but better than stopping to type.
Good thing I only did backend. No UI stuff, no browser dev tools, no staring at pixels. Everything that matters is just text, JSON, logs, metrics.
Still, I was slow as hell at first. Stuff that used to take an hour took half a day. I’d lose my spot in a file, forget which microservice I was in, waste twenty minutes hunting one log line. Some days I barely closed a tiny ticket and felt useless.
But I kept at it. Every day.
Little by little it got better. My hands remembered the shortcuts. My head started mapping the codebase through sound(yes sounds!) and structure instead of sight. Around month three or four I could feel the pace coming back. Not quite like before, but good enough. Eventually I was taking on real features again, running design talks over voice, shipping stuff that mattered.
About six months in, I started noticing faint light in my left eye. Blurry shapes, then clearer, until it was basically normal.
The right eye took way longer. But somehow, against everything the doctors said, it healed too. The tear closed up clean, how? I have no clue and neither did the doctors. Vision came back 100% in both eyes. Never needed glasses.
I wasn’t big on miracles back then. Doctors definitely weren’t. My parents, though? They prayed every single day.
Still, every year at my eye exam the Optometrist spots that little scar on my cornea, checks the chart, looks confused, and asks how the hell I’m seeing so well. I end up telling the whole story again.
And every time I leave that office I think the same thing.
That stretch was hands-down the toughest technical challenge I’ve ever had. Not because the bugs were the trickiest, but because I had to fix them without the one sense I’d always counted on.
But man, I learned more about stubbornness, about trusting people, about what actually matters when you strip away the easy parts… more than in all the years before combined.
I hate that it happened. But I’m quietly glad for what it taught me.