At one point in my career, I genuinely questioned whether I had chosen the wrong path. After months of harsh interactions with colleagues, being met with raised voices and visible frustration whenever I asked questions, I had started to believe I wasn’t cut out for software engineering. Today, I’m a Senior Software Engineer working on complex distributed systems for a financial platform. This is the story of how I got here.

The Job That Changed Everything (For Better and Worse)
After being made redundant from my previous role, I found myself with two opportunities. One was with a major UK tech company, a household name that would have looked impressive on any CV. The other was another large company where a former colleague had recommended me. The role would involve working with technologies I had barely touched: event-driven architectures, Domain-Driven Design, containerisation, Pub/Sub messaging, and CQRS patterns.
I had a decision to make. The safe choice was obvious, but something about the other company intrigued me. Yes, there were red flags. The team would only have three people. I’d be thrown in the deep end with technologies I didn’t know. My former colleague’s partner would be my manager, which raised concerns about workplace dynamics. But I made what seemed like the brave choice at the time: I accepted the role that would challenge me the most.
In hindsight, that decision was both the best and worst thing I could have done.
When Learning Becomes a Battlefield

The team structure was simple: me, my manager (let’s call them Daisy), and an exceptionally gifted senior engineer (let’s call them Adam). On paper, this should have been an incredible learning opportunity. Adam was a brilliant engineer who had created many of the tools and practices the company relied on. Daisy had deep domain knowledge, having built much of the system I’d be working on. I was excited to learn from them both.
What I didn’t anticipate was the environment this would create.
Adam lived and breathed code. He was technically exceptional, but that technical excellence came with expectations that everyone around him operated at the same level. Over the following months, a pattern emerged that would fundamentally change how I viewed myself as an engineer.
During code reviews, I’d ask questions about concepts or terminology I wasn’t familiar with. Rather than explanations, I was often met with raised voices and visible frustration. The response would be to repeat the question, louder, as if the problem was that I simply hadn’t heard them the first time. The implicit message was always the same: I should have known this already.
I remember one particular incident vividly. I had asked a question about something in my code, genuinely trying to understand. The frustration in Adam’s response was palpable. He raised his voice, repeated the exact same question, and I could see the disappointment written across his face.
I held myself together in the moment and asked for clarification as calmly as I could. But later, the weight of it hit me. Nobody had ever treated me like this in my professional career. This wasn’t an isolated incident; it was becoming the norm. Asking for clarification was seen as a failure, not a learning opportunity.
The Vicious Cycle of Self-Doubt
The culture on the team was paradoxical. I was frequently told “it’s okay that you don’t know things” and encouraged to “ask questions whenever you need to.” But the reality didn’t match the words.
During pair programming sessions, the pattern continued. I’d ask a question, and I could hear the audible sighs, the frustration building in their responses. The body language screamed what the words wouldn’t say: you should know this already. These weren’t one-off bad days; this became the consistent dynamic over months of working together.
I felt like I was in an impossible situation. I was working with two people who had either created the systems or had years of experience with them. They had context I couldn’t possibly have. Yet every time I asked for that context, I was made to feel incompetent. Week after week, code review after code review, pair programming session after pair programming session.
The worst part? I started to internalise it.
I spent months after passing my probation period feeling utterly depressed about my career. The impostor syndrome that had crept in during those early months took full hold. I went from being someone who was eager to learn and improve to someone who believed they were fundamentally not good enough for this industry. Each interaction chipped away a little more at my confidence until there was barely anything left.
And here’s where I have to be honest: it wasn’t entirely their fault.
Becoming the Impostor
When you’re constantly made to feel like you’re not good enough, something shifts. I became unreliable. My performance suffered. I stopped trying as hard because I genuinely believed that nothing I did would meet their standards anyway. Why put in the effort when it would inevitably be met with disappointment?
Years later, I received an official ADHD diagnosis that explained a lot about why I struggled so much during this period, but that’s a story for another time. What mattered in that moment was that I had entered a vicious cycle: I felt inadequate, so I performed inadequately, which reinforced the belief that I was inadequate.
I became the impostor I feared I was.
The irony is devastating. Impostor syndrome is the feeling that you’re not as competent as others perceive you to be. But in my case, I actively became less competent because I believed I already was. The environment had eroded my confidence to such an extent that I couldn’t function effectively.
Eventually, I was let go. In many ways, I saw it coming. But I left that role believing something that would take me a long time to unlearn: I thought I was genuinely bad at programming.
The Turning Point

After leaving that role, I did two things: I took time to properly study the concepts I’d been exposed to (event-driven architectures, Domain-Driven Design, system design patterns, microservices architecture), and more importantly, I started rebuilding my confidence.
What I didn’t realise at the time was that much of the technical knowledge was already there, locked away by anxiety. The studying helped, but what really mattered was regaining the confidence to access and apply what I’d already learnt.
My next role was a revelation. Within weeks, I realised something crucial: I had actually learnt an enormous amount during that difficult period. The technologies and patterns I’d struggled with before suddenly made sense. The concepts I thought I’d failed to grasp were now part of my mental toolkit.
The difference? I was in an environment where questions were genuinely welcomed. Where not knowing something wasn’t treated as a character flaw. Where learning was expected, not merely tolerated.
I applied for more senior positions. I studied system design intensively. I worked on side projects that demonstrated the advanced concepts I’d learnt. And eventually, I landed my first Senior Software Engineer position at a financial startup.
Today, I’m the sole senior engineer controlling the entire backend infrastructure for a financial platform. I architect and maintain 13 microservices implementing Domain-Driven Design principles. I work with event-driven architectures using Pub/Sub. I design complex domain models for financial products. I’ve achieved 99.9% uptime for critical financial operations. I’ve led platform modernisation initiatives and mentored other engineers. The responsibility is mine, and I handle it with the confidence I once thought I’d never have.
I became the engineer I always believed I could be.
What I learnt About Impostor Syndrome

Looking back, I’ve learnt several crucial things about impostor syndrome and toxic work environments. Here’s the quick version:
-
The Environment Matters More Than You Think: Your environment shapes your confidence far more than you realize. The same person can thrive in one team and struggle in another.
-
“It’s Okay to Ask Questions” Means Nothing Without Follow-Through: Words are cheap. Real psychological safety is demonstrated in daily interactions, not onboarding documents.
-
You Can Become the Impostor: When you internalize the belief that you’re not good enough, you can actually start performing below your capabilities, creating a self-fulfilling prophecy.
-
Experience and Knowledge Gaps Are Different Things: Not knowing institutional context is a knowledge gap, not a competence gap. A toxic team confuses the two.
-
Sometimes You Need to Walk Away: Your mental health and career trajectory are more valuable than any single job. Toxic environments are structural problems you can’t fix individually.
-
You Learn More Than You Realise: Even in difficult situations, your brain is absorbing information. The knowledge might just be locked away behind anxiety until you change environments.
See full breakdown
1. The Environment Matters More Than You Think
You can be a competent engineer in one setting and feel completely inadequate in another, not because your skills changed, but because the environment changed how you perceive your skills. I went from feeling incompetent to landing a senior position in a short time, not because I became a different engineer, but because I was finally in an environment that allowed me to demonstrate what I already knew.
A toxic environment doesn’t just make you feel bad; it actively impairs your ability to function at your best. Conversely, a supportive environment can unlock potential you didn’t even know you had.
When you’re constantly bracing for negative feedback, your brain shifts into defensive mode. Instead of focusing on problem-solving and learning, you’re focused on avoiding criticism. This cognitive load is enormous, leaving little mental bandwidth for actual engineering work. Always factor in context when evaluating your skills. Are you truly struggling, or is your environment making it impossible to succeed?
2. “It’s Okay to Ask Questions” Means Nothing Without Follow-Through
Words are cheap. If a team says it’s okay to ask questions but responds with frustration and sighs when you do, they’re not creating a psychologically safe environment. The toxicity exists in the subtext: the sighs, tone of voice, and body language that communicate something entirely different from what’s being said.
Real psychological safety isn’t demonstrated in onboarding documents or team charters. It’s demonstrated in daily interactions: How do people respond when you don’t understand something? Is there patience in their explanations?
In a truly healthy team, when someone asks a question, the first response is curiosity, not judgement. “That’s a great question, let me explain…” instead of “You should know this…” Questions are treated as opportunities to improve documentation and strengthen the team’s shared understanding. If your gut tells you that asking questions is dangerous, trust that instinct. Your nervous system is picking up on signals your conscious mind might be rationalising away.
3. You Can Become the Impostor
When you internalise the belief that you’re not good enough, you can actually start performing below your capabilities. It becomes a self-fulfilling prophecy. I became unreliable, stopped caring, procrastinated on challenging work, and avoided sharing ideas. Not because I was inherently bad, but because constant negative feedback had eroded my motivation to the point where self-sabotage felt like self-preservation.
When you believe you’re going to fail anyway, your brain starts to protect you by reducing effort. This creates a vicious cycle: reduced effort leads to poorer results, which confirms your belief that you’re not good enough.
The tragic irony is this: impostor syndrome is supposed to be feeling like a fraud despite being competent. But if left unchecked, it can actually make you less competent. You start with the feeling of being an impostor, but through this cycle, you can actually become one. Toxic environments don’t just make you feel bad. They alter your behaviour in ways that confirm the negative beliefs you’ve developed.
If you notice your performance declining with your confidence, you’re likely in this cycle. The solution isn’t to try harder in the same environment; it’s to change something fundamental. Sometimes that’s therapy, a new team, or a new job entirely.
4. Experience and Knowledge Gaps Are Different Things
Someone who built a system will always have more context than someone new to it. This is a knowledge gap, not a competence gap. A good team understands this distinction; a toxic team treats knowledge gaps as if they’re competence gaps.
A knowledge gap is about context you haven’t had access to. A competence gap is about fundamental skills. These are different problems requiring completely different approaches.
If you don’t understand your team’s custom infrastructure or domain-specific terminology, that’s not incompetence. It’s inexperience with that domain. Knowledge gaps close with time and documentation; competence gaps require fundamental skill development. A healthy team actively works to close knowledge gaps through documentation and patient explanations. A toxic team uses knowledge gaps as weapons, making you feel stupid for not knowing things you couldn’t possibly know.
If you’re being made to feel incompetent for lacking context you’ve never had access to, that’s a red flag about the team, not about you. If you’re expected to intuit decisions made before you joined or understand undocumented systems through osmosis, that’s a failure of knowledge management, not your intelligence.
5. Sometimes You Need to Walk Away
We’re often told to persevere and prove ourselves. But staying in a toxic environment isn’t brave. It’s self-destructive. There’s a difference between a challenging role that stretches your abilities and a toxic role that destroys your confidence.
Walking away isn’t failure. It’s recognizing that your mental health, your confidence, and your career trajectory are more valuable than any single job. Toxic environments are structural problems you can’t fix individually.
I stayed far longer than I should have, believing that if I worked harder things would improve. But toxic environments don’t improve just because you try harder. Watch for the signs: Are you dreading work every day? Have you stopped learning because you’re too anxious to try new things? Are you experiencing physical stress symptoms?
Your career is long. One toxic job is a blip. Sometimes the most professional thing you can do is recognise when a situation is untenable and make a strategic exit.
6. You Learn More Than You Realise
Even in difficult situations, you’re learning. Your brain absorbs information even when you feel like you’re drowning, even when you think you’re failing. I genuinely believed I’d wasted months learning nothing. I was wrong.
Your brain was learning, but the environment was preventing you from accessing that learning effectively. It’s like having files on your computer that you can’t open because the application is corrupted. The data is intact, but you can’t access it.
Within weeks of starting my next role in an environment where I could apply knowledge confidently, I found myself architecting event-driven systems and applying CQRS patterns without constantly second-guessing myself. The knowledge was there. It had just been locked away behind anxiety and self-doubt.
Trust that even in the worst situations, you’re growing. Your struggle wasn’t wasted. Every code review, every difficult conversation, every technical challenge was building your skills. The learning happened; it just couldn’t flourish until the conditions were right.
To Anyone Currently Struggling
If you’re reading this and you’re currently in a situation where you feel like an impostor, where you question whether you’re good enough for this industry, I want you to know something: it might not be you.
There may be things you don’t know that someone at your level “should”, and maybe there are skills you need to develop. But if you’re in an environment where asking questions is met with frustration, where your attempts are dismissed, where you constantly feel inadequate despite your efforts, the problem might not be your competence. It might be your environment.
I’m not saying you’re perfect. I’m not saying you don’t have things to learn. What I am saying is that learning requires psychological safety. It requires an environment where mistakes are treated as opportunities, not failures. Where questions are genuinely welcomed, not merely tolerated.
If you’re not in that environment, consider whether it’s worth staying.
The Path Forward

Here’s what helped me break free:
-
Find Your People: Seek out colleagues, communities, and mentors who genuinely support your growth. Not people who pay lip service to learning, but people who actively create environments where it’s safe to not know things. Look for communities where questions are met with enthusiasm rather than judgement: tech meetups, online developer communities, mentorship programs, or even just colleagues who make you feel energised rather than drained. Pay attention to how people respond when you’re vulnerable about not knowing something. That response tells you everything you need to know about whether they’re your people.
-
Invest in Yourself: Build confidence through deliberate learning and challenging projects. When I left that toxic environment, I spent months deliberately learning. Not because I was fundamentally incompetent, but because I wanted to build confidence in my abilities. I studied system design, worked on side projects that challenged me, and took time to truly understand the concepts I’d been exposed to. The key difference from my previous experience was that I was learning for myself, not to prove anything to anyone else. That shift in motivation made all the difference.
-
Recognise Your Growth: Keep tangible records of what you’ve learnt and accomplished. When impostor syndrome strikes (and it will, even years later), you’ll have concrete evidence of your capabilities. This could be a “brag document” where you note your wins, a personal log of technical challenges you’ve overcome, or even just a folder of positive feedback. When self-doubt creeps in, you can look back and see objective evidence of your growth.
-
Set Boundaries: Your mental health is more important than proving yourself to any employer. You don’t owe any job your mental health. If an environment is making you question your fundamental worth as an engineer, it’s time to set boundaries or leave. This might mean refusing to work excessive hours, pushing back on unreasonable expectations, or being willing to say “I don’t know” without apologising profusely. Sometimes boundaries are enough to improve a difficult situation. But if you find yourself constantly fighting to maintain basic respect and psychological safety, that’s a sign the environment itself is the problem, and it’s time to consider leaving.
-
Therapy and Professional Support: Seek help to process the experience and rebuild your confidence. If possible, seek professional help. Therapy helped me separate what was my responsibility from what was the environment’s failure, and gave me tools to rebuild my confidence. My ADHD diagnosis also helped me understand why I struggled so much in certain environments, and why I was particularly vulnerable to the toxic dynamics I experienced. There’s no shame in seeking help; in fact, it’s one of the most professional things you can do for your career.
Looking Back
As painful as that experience was, it taught me invaluable lessons. It taught me resilience. It taught me what kind of engineer I want to be and what kind of environments I want to work in. Most importantly, it taught me that impostor syndrome isn’t always an internal battle. Sometimes it’s a reflection of an external reality that needs to change.
Today, when I work with junior engineers, I remember how I felt in those code reviews. I remember the shame of asking questions. I remember the fear of not knowing something. And I make damn sure that nobody on my team ever feels the way I felt.
Because the difference between an impostor and a competent engineer isn’t always technical knowledge. Sometimes it’s just the environment they’re in and the support they receive.
If you’re struggling with impostor syndrome right now, please know: you might not be the impostor you think you are. You might just need a better environment to prove it to yourself.
If this story resonated with you, I’d love to hear about it. Feel free to connect with me on LinkedIn.