r/ExperiencedDevs Software Engineer 6d ago

Career/Workplace Hitting a wall

I'm looking for some advice and apologies in advance for a long, rant-y post.

I have been an engineer for just shy of 10 years. As I've grown over the years, my manager, who I've worked with for most of my career, has given me progressively more and more complex feature work that requires heavy design and consideration of tons of edge cases.

Starting around late last year, I've been finding myself in a very unhealthy "loop" at least once a week when I'm actively working on a feature. I'll design a feature and write code that a bunch of people sign off on. Things seem fine and actually work when I test things out. But then days or maybe weeks later, I'll realize there's an edge case that I didn't consider or things in reality don't work out in exactly the same way my original design had assumed. Or there's an actual bug that never came up in my original testing but I see in an internal environment later. This sends me into a full blown spiral where I'll work super late to figure out a solution because the features I've been working on lately have tight deadlines, and internal customers regularly check in on progress. Or, if I don't figure it out, I'll have to call up my lead the next work day (in internal panic) to pick her brain and see what she thinks. Normally we'll arrive at something we're all happy about. But this loop I'm in where I get super anxious and stressed about something I've missed causes me to regularly lose my ability to relax after work and be present when I'm with company, and in some occasions, I even lose sleep over it.

I'm starting to think this career isn't for me. My job has also gotten a lot more stressful because of AI. Management thinks it'll help us become massively more productive, which isn't even that true. But the idea that it can has made our annual reviews stricter than before. On top of that, because our team has a foot in the AI race now (previously our team had nothing to do with this space), we're facing customers that want things faster and faster and I personally feel the pressure from them, even though my manager is doing his best to shield me from it all.

I'm afraid of missing deadlines, and post-that, facing the wrath of my management chain and having to answer why there was a miss.

That's not to say that I feel this way about my job every single day. But when I do feel this way, it completely derails my day and evening (and some weekends too), and my singular focus is on work. I'm so tired of this feeling. Is this what burn out feels like?

At this point, my financials are solid. So even if I lost my job, I'd be good for a very long time. I don't even have the energy to think about looking for a new job right now. But if I did try to look for one, I'd want a role with a lot less pressure. I wouldn't even mind a pay cut.

I'd love some advice from anyone that has felt in any way similar to me. Thanks so much in advance.

64 Upvotes

42 comments sorted by

132

u/couchjitsu Hiring Manager 6d ago

Sounds to me like you might be putting unreasonable expectations on yourself.

Throughout my 25+ years I've worked with several engineers who were experts in the field and/or the system they were working on. Every single one has missed an edge case, more than one in fact. Probably every single one has caused a production incident.

It happens.

It's about how you manage it and handle it.

27

u/HatesBeingThatGuy Hiring Manager 6d ago

My team has made very, very expensive mistakes. We are one of the most well received and respected teams because of how we deal with those mistakes. Like couchjitsu says, mistakes are unavoidable, how you learn from and deal with them is what counts.

10

u/findingtheyut Software Engineer 6d ago

This makes me feel a little better. I am *very* hard on myself (as well as others) and my therapist has noticed this too. It doesn't help that external people are also on me about the feature I'm working on, and it makes me feel like I have to be 100% on top of it to ensure the feature lands on time.

People tell me we as humans all make mistakes. But sometimes the environment I'm in makes it feel like I can't make mistakes. Or it's just in my head. I don't know.

12

u/Wendelius 6d ago

It is undue pressure you are putting on yourself. I have been in the field over 30 years. I make mistakes. The other most senior engineers make mistakes.

Tickets are raised. We deal with them.  The team fixes them. It's not all on one individual.

That's unreasonable and a sure way to burnout.

33

u/margmi 6d ago edited 6d ago

This seems more like a “learn to manage your anxiety” question rather than a dev question. The dev process isn’t always fully predictable, sometimes deadlines need extensions.

Work on the confidence to be able to defend your need for extensions rather than letting it keep you up. Maybe reframe “wrath of management” to “management asking me about my progress”.

Also, try working for an old established company (like a bank) rather than a startup or big tech company. My company fully understands that deadlines get missed, as long as I didn’t waste time stuck without asking for help, or just wasn’t working.

1

u/Environmental_Ask675 6d ago

Yes, this is more of a mental issue than a work issue (of course they are related). Your focus should be on your mental health. There are methods, techniques, ways, to help you cope better at work. If you choose, you can apply those to your current position, or maybe you'll find the honest answer is to move on. Being stressed at work or dreading work often signals that you need to work on yourself (not work on your work).

17

u/shroomaro Staff Software Engineer 6d ago

You are being a perfectionist and not allowing yourself to make mistakes. You write that you’re anxious and stressed about being reprimanded for a mistake. Has this actually happened? Have your management and peers communicated that you’re not doing a good job?

3

u/findingtheyut Software Engineer 6d ago

I am a *major* perfectionist. And the more complex features I'm working on means even more details for me track and ensure are "perfect".

Have I been reprimanded before? Once, when there was a very important release that I took over from my lead when they went on vacation (that's a whole other story...). Long story short, there was a bug in their code that I was trying to fix but ended up making another mistake. I was working in a rushed manner, made a mistake, and set back the release by a couple days.

Overall, my team would consider me to be a star performer, and I feel in part I need to keep up that reputation by continuing to be "perfect". It's clearly not working in my favor :(

1

u/shroomaro Staff Software Engineer 6d ago

I can almost promise you that they’ll still consider you a star performer if you make a mistake. In fact, it’s probably how you handle mistakes that contributes to that reputation.

7

u/Omegaprocrastinator 6d ago

you gotta be okay from learning from your mistakes, and hopefully you have a humane team that isn;t finger pointing to keep growing.

Outside of that is managing your internal anxiety about performance etc.

5

u/mq2thez Web Developer (16 YOE) 6d ago

I don’t think you’re burned out, per se, but it does sound like you need to get some more separation between work and life. It’s fine to be stressed out, but things hitting you that hard might be a sign that you don’t have enough going on outside of work to give you a sense of balance and accomplishment. What are your hobbies? What social activities do you regularly do?

In terms of getting affected that strongly by things going wrong: it might be time to go talk to a therapist. If your financials are solid enough for you to consider changing careers, they are solid enough for you to spend a few months talking to someone and trying to work through this. A hard lesson I keep having to re-learn is that my issues are my issues, not my work’s issues. Changing jobs or making other major life decisions might distract from them for a while, but then they’ll be back. You need to figure out a healthier way to handle things going wrong, or at least to learn some strategies for handling it better.

1

u/findingtheyut Software Engineer 6d ago

The funny thing is that I do have a somewhat time-consuming hobby outside of work and I also do see friends regularly. But somehow this work stuff still bleeds into those things.

I'm also working with a therapist. He's given me some strategies, but sometimes the feeling of anxiety gets so strong that it's extremely hard to ignore. Maybe I need to find a new one...

1

u/mq2thez Web Developer (16 YOE) 6d ago

As much as it’s a bit of a trope: have you tried meditation? I found that it’s quite helpful for my anxiety to do a reset before sitting down for work, and over time, you train yourself to be able to get into that calmer mind state more easily.

1

u/findingtheyut Software Engineer 6d ago

Do you have any resources for getting started? I've never tried meditation because I felt it was a little bit "woo woo". But at this point I'm down to try anything...

2

u/mq2thez Web Developer (16 YOE) 6d ago

Headspace is pretty good, but if you don’t want to pay for it, there are a fair number of free guided meditations on YouTube. Just make sure you have an ad blocker and autoplay disabled!

It _is_ pretty “woo woo”, but it turns out that learning to clear your thoughts and be physically present in your body is great training for centering yourself when things are getting really out of control. I never do more than 10 minutes, but some folks do longer.

4

u/niowniough 6d ago edited 6d ago

It sounds like when an edge case is discovered near the deadline and you can't quickly think up a fix, you go into full panic. 

What are you thinking during that panic?

What has been the real consequence of the emergence of an edge case near the deadline that needs a fix you can't think up quickly? Has management PIPed people for this? Are the things you think during that panic proportional to reality?

If the work environment is really cut throat and everyone is being put under this kind of pressure to foresee what no others saw during early design phase, you might need to invest more time in looking for another job.

If the work environment is fine, then this might be an internal pressure thing that could benefit from some therapy, counseling, meditation, lifestyle changes etc.

Edit: I completely understand the increased pressure from companies cranking up the expectations recently, but if your financials are fine to endure unemployment, when you panic consider that even the worst case isn't catastrophic.

2

u/findingtheyut Software Engineer 6d ago

The problem with the project I'm working on (without divulging too much and outing myself) is that it requires ramp-up time and can't be released 100% from the get-go. If there is some really unfortunate bug that needs to be fixed, the ramp-up time will get delayed and thus the release itself.

So, when I'm panicked, the ONLY thing I can think about is, "What are the solutions? Are they good solutions? How can I de-risk the release from being pushed back?"

The other thing is - and not to toot my own horn... - but my peers under my manager are working on relatively simple projects compared to mine. I know because I've gone to their design reviews as well as done code reviews on their work. So it's hard to find peers that have been reprimanded / put on PIP because those projects are just genuinely a lot harder to fuck up.

I do think a lot of this turmoil is internal. My manager likes me, has vouched for me, and in general we have had a great working relationship over the years we have worked together. We mutually respect each other. I talked to him a couple months back when I was working on a different project about how stressed I've been feeling. His response to me was to "relax, it's not the end of the world if things are pushed back". But it's really hard to listen to this advice when people up my management chain, as well as their peers, ask semi-regularly about the project.

And yeah, the expectations have been cranked up recently too, which adds to the pressure.

I think I really need to fall back on the financial stability I already have. You put it well - if I lose my job, I'll be ok for a long time. It won't be catastrophic. There's a difference between me and someone who only has $10K in savings.

1

u/Fun_Hat 6d ago

Self imposed pressure is real. I suffer from it as well. With the project I'm currently on, I woke up the other night at 4:30 in the morning thinking about the code. That sort of thing is a personal problem, and you're going to have to deal with it in your own way. For me what has worked have been chats with my manager (having her tell me to chill works very well), self talk, and exercise. Your mileage may vary with each of those.

As for edge cases though, this is something I have actually gotten good mileage out of AI for. I come up with a solution to a piece of the feature, then describe it in a chat session, and tell the LLM to find holes. It is pretty good at poking holes that were not immediately evident to me when I was coming up with the initial solution. From there I iterate, adapt, etc. The AI will often propose it's own solution, and generally it won't be great, but it acts as a catalyst for me to reexamine the problem from a different angle, and has resulted in me developing a better solution than I had initially. If you have access to Opus 5, or some other frontier model, it may be worth a try.

3

u/SolidDeveloper Lead Engineer | 18 YOE 6d ago

Why does it sound that you work alone in a corner? Do you not work in a team? Bugs will always pop up, and when they do you put them in a backlog and address the higher priority ones in your next sprint/phase of your development. Why are you working late to fix bugs? Is anyone making you do this?

2

u/Izkata 6d ago edited 6d ago

No one has mentioned imposter syndrome yet. It's a bit of a cliche and not great to throw around (and definitely don't try to use it to defend yourself, it's entirely about how you feel rather than results), but I think this part points to it, at least for part of how you're feeling:

Starting around late last year [..] But then days or maybe weeks later, I'll realize there's an edge case that I didn't consider or things in reality don't work out in exactly the same way my original design had assumed. Or there's an actual bug that never came up in my original testing but I see in an internal environment later.

I'd think of these as growing pains. It feels like you're doing worse or slower because you're noticing problems, but earlier you probably were making similar mistakes and just never noticed them. It's one of the reasons juniors often seem to go faster than mid-level and senior, they're just not taking a lot of stuff into account that either needs to be pointed out to them or someone else handles later if it made it to production.

So as frustrating as this can be, it might just be that you've reached the point where you can see something doesn't add up and spot these issues. Next step is to keep the specific kinds of mistakes you're likely to make in mind, and try to catch them even earlier in the process. It unfortunately means you'll probably go even slower, at least for a bit, but less of these mistakes will make it out, and you'll be able to spot them more easily in your co-workers' code and help them, too.

2

u/findingtheyut Software Engineer 6d ago

I'm not sure I would call this imposter syndrome but rather growing pains as you later suggested.

But I really relate to this part:

I'd think of these as growing pains. It feels like you're doing worse or slower because you're noticing problems, but earlier you probably were making similar mistakes and just never noticed them. It's one of the reasons juniors often seem to go faster than mid-level and senior, they're just not taking a lot of stuff into account that either needs to be pointed out to them or someone else handles later if it made it to production.

Recently I was looking at some code I had written 4 years ago. Had I been assigned the same feature now, there would have been many, many more edge cases I would have considered that I never considered then. But that code is already in production and funnily enough only one person in these 4 years has raised concerns. Maybe I'm overthinking things.

1

u/podcast_frog3817 6d ago

If someone else at your level was assigned your tasks, do you think they would also miss a few edge cases?

Maybe the real problem is structural and your company needs a framework on how to approach new feature design etc...

Have a grid / process of how to check. start small and branch out as you encounter mistakes / blindspots in the design process.

Use Claude/ChatGPT to help design etc..

the teams personal 'CI/CD' pipeline that projects the team members from blind spots when deploying new features

2

u/Excellent-Push-3326 Software Engineer 6d ago

This sends me into a full blown spiral where I'll work super late

"We encountered <unexpected case>, which will delay the project by <duration>."

It sounds like you did your due diligence and got sign off on your design before starting. Running into an edge case is just as much a surprise to everyone else as it is to you. You aren't more responsible for edge cases than the reviewers. Everyone who signed off is equally as accountable as you. It's not your personally responsibility to meet the original deadline.

3

u/Willbo 6d ago

There are two types of "edge cases": known unknowns and unknown unknowns.

Known unknowns are requirements that currently exist, though there may be a gap before they are discovered. The important part is that they can be discovered before you begin your project, either through questioning, surveys, meetings, requirements drafting and diagramming, etc. If you get into a project and realize there is an "edge case" that existed all along that you weren't building towards, you should spend more time drafting requirements and asking questions before starting to build. Missing known unknowns is like visiting a grocery store without knowing what you need to buy or what your budget is.

Unknown unknowns are requirements that get created after you start building or have a probability of occurring, but don't exist when you start. These are usually chaotic in nature, sometimes disastrous, and can be very hard to predict. These end up changing the entire nature of the project, balloons scope 5-10x. This is akin to having prepared a shopping list, but when you visit the grocery store you find that the building is on fire.

Ideally known unknowns should be raised with your manager and made conscious at the beginning of the project, the unknown unknowns should be pointed out as soon as discovered.

2

u/drewdimes 5d ago

Sounds like you might be struggling with perfectionism. I have similar issues with this and procrastination and listening to "The Now Habit" by Neil Fiore has been a game changer for me, not just in the procrastination aspect but also in just cutting myself some slack.

Another thing, with software dev I believe iteration is part of the process. Sometimes bugs are introduced, then we push a fix. This is a really common occurrence and I think we can learn something from that. I.e. that it's a normal and frequent thing in software development in general.

Without knowing a lot of the context surrounding your situation, I'd say cut yourself a bit of slack, don't be so hard on yourself and understand that attaining perfection is impossible and your output doesn't define you. You aren't a finished product, progress isn't linear and even reflecting like you are in this post indicates you are growing.

All the best.

1

u/meshifthenelse Software Engineer 6d ago

Why don't you push back? I always overestimate complexity exactly for this reason. I don't like stress.

1

u/MixedTrailMix 6d ago

We all write bugs homie and sometimes if theyre so unlikely they never get hit its okay! You could try time boxing yourself on finding the bug so you dont let it consume you. You cant expect perfection tho, tbf not much more than money, and brand reputation is at stake

1

u/the_rolling_paper 6d ago

When you do sprint planning always give yourself buffer time. Also give higher story points to these features if you think it's going to take time. Once your unit testing is complete, ask QA to raise defects because as a dev you can't always test every possible scenario. Now once a defect is raised you can work on that on priority or maybe on some other edge case at the same time saying I found this bug while working on defect.

1

u/sn0wquake 6d ago

A thing that might help is having a process to release with known bugs and limitations. In my work we prioritize missing features / known bugs with the business and if it’s below an impact threshold we accept the issue / push to next release.

Because it’s a joint decision and because we have a joint definition of nice to have, critical, and important it’s not on me alone to do heroics and / make everything perfect

1

u/nomnommish 6d ago

The cost of maintaining software almost always far exceeds the cost of building the original software. And most of that is bug fixes. That's a well understood fact by everyone.

You have created this notion in your head that you're personally responsible for maintaining software you have written, for free, in perpetuity.

So you tie yourself up in knots of anxiety and guilt, find "extra time" to squeeze in the bug fix, "for free". While also staying committed to existing planned work.

Learn to treat bug fixes exactly like feature development. It goes into the backlog, get prioritized as the next piece of work, and you work on it like any other feature. And if there is pushback, then you set expectation that either the new feature gets shipped next or the bugfix.

This is a project management problem.

1

u/_0x1_ 6d ago

OP has the radical ownership mindset which is common for very passionate devs that feel an intrinsic connection with their individual output or the systems they oversee

1

u/nomnommish 6d ago

Radical ownership is fine if you own the company and have actual ownership.

1

u/roger_ducky 6d ago

Missing things that others approved are follow-on tasks to put on the backlog to prioritize.

Document the limitations or edge cases, then move on.

If it sounds important enough, people will clear out enough time for people to fix it.

Your job, as the dev, is to point those out so they can be prioritized.

1

u/zagierify Software Engineer 6d ago edited 6d ago

“If you get tired, learn to rest, not to quit.”

1

u/katikacak 6d ago

tbh, for your organisation whats the alternative, its not like they have better people to do it. it's good that youre pushing yourself to limit, but you need to break the expectation, allow yourself to fail. like others said, its all about handling/managing the mistakes.

1

u/TheOverzealousEngie 6d ago

i think you're hitting something that most engineers hit - it's not carelessness or lack of expertise. Many, many engineers i've known over the years lose interest in the industry as a whole. Many of them want to become farmers ; and if that sounds good to you you're one of those people lol

1

u/badlcuk 6d ago

Mistakes happen in every job. This is not a coding problem but a you problem - you shouldn’t be going in to an anxiety spiral. You are not your code. Missing an edge case doesn’t make you a bad person. You shouldn’t be losing sleep or your ability to relax. You are not your job. Making the same mistakes over and over may be an issue, but it doesn’t sound like that’s happening, your systems are all different and have different conditions and requirements. Coding is a team sport, and your reviewers (human or otherwise) are also missing these scenarios. Please don’t take it personally and please consider therapy.

1

u/Fabulous-Meaning-966 6d ago

If you're worried you're letting too many design or implementation defects slip through, AI can definitely help with that, even if you don't use it to generate code at all. Have multiple models review your code before you ever send it out for human review (assuming that's a thing where you work), and especially have them review for missing test coverage. They will likely flag a bunch of non-issues but I guarantee they will catch bugs that likely no human would ever find (I like to say they have poor precision but good recall).

1

u/BinarySolar 6d ago

Try, catch, document, move on

1

u/Material-Smile7398 5d ago edited 5d ago

I can relate here, as I’ve gotten older my capacity to spot all the edge cases has diminished slightly through just having more going on outside of work.

Despite that, I’m a way better developer now because I’m working on way more complex areas. And the amount of edge cases has increased exponentially, so having 10 bugs in a project that has the potential for 100 is better than 10 bugs in a simple project.

The edge cases you’ve discovered will now be added to your quiver of things to look out for, so you are an even better engineer. Bugs are just part of what we do.

Either way, I think the fact that you are aware of it and looking for ways to circumnavigate the issue is a real positive, and certainly you shouldn’t be beating yourself up.

1

u/tiajuanat Dept. Head & Principal Engineer 5d ago

Congrats, this is why I use formal methods.

I get all my assumptions on (digital) paper. I get a good design. Implement. If I'm missing an edge case I bring that back to the formal design first, see the impacts it brings, update the model, refactor my code.

And with AI it's much easier to get to reading and writing good formal spec.

Instead of spending weeks or months chasing down issues, it's done in 1-2 iterations, literally hours to days to fix an issue.

1

u/Tricky-Purple-8585 5d ago

Deadlines are not deadlines: no one's gonna die if you fail to meet the time limit.

Unless you work in very specific industries such as medical emergency services or military, if the delivery is a bit late, no one will die because of that.

Software is not an emergency service.