25

I'm going to start applying to software developer jobs. I have a fear that if I can't solve a bug I'll get fired.

There was this port bug for a personal project I spent hours on and couldn't figure out, so I felt so stupid and worthless. I see people who in a split second solve bugs and honestly I'm worried about being replaceable. I would describe myself as capable, but I am needing help every now and then.

I know that if I can't solve simple bugs then I should get fired, but I don't know if I should call it "impostor syndrome".

4
  • 10
    Why would work fire you for something you did or didn't do on a personal project? Mar 3, 2023 at 14:52
  • 14
    @DJClayworth I don't think they're worried about that personal bug causing them to be fired, but that it's indicative of their general inability to solve problems, which will come up on the job as well.
    – Barmar
    Mar 4, 2023 at 18:05
  • 2
    Before you post a comment, please check the announcement. We appreciate people explaining bugfixing, but please do so in an answer. Comments are meant to help improve the post, not answer it.
    – nvoigt
    Mar 6, 2023 at 6:13
  • What is a "port bug"? Something involving a TCP port? Can you elaborate, preferably by updating the question (but *** *** *** without *** *** *** "Edit:", "Update:", or similar - the question should appear as if it was written right now)) Mar 6, 2023 at 8:58

11 Answers 11

72

Generally speaking no - sure there's a chance it could happen but this is usually only going to be the case where either the workplace was a trainwreck or the bug was an incredibly simple one where the dev put zero effort into it - and even then a one-and-done situation wouldn't be an indicator of a particularly healthy workplace!

It would usually take a pattern of the dev not being able to do the job that would put them at risk.

So try to be kind to yourself - we've all had those bugs that it's taken us hours of frustration, going nowhere before either solving it or a colleague stepping in to help. I've been developing professionally for ~20 years and it still happens to me!

6
  • 34
    In a healthy workplace, juniors are encouraged and expected to work closely with more senior contributors, and to ask for help early and often. In my experience, junior devs only get fired if they don't ask for help and people think they're a slacker. More senior devs can be fired or laid off for not knowing how to solve problems, but even that would have to be a recurring issue where it seemed like they oversold their skills, or the problems they are responsible for are outside their abilities or expertise. Even then, it's very rare to be "fired" as such, as opposed to generally "let go". Mar 3, 2023 at 21:45
  • 2
    I also think it's worth noting that good managers will find ways to put employees in successful situations. If that means you need some mentorship at the beginning, then hopefully that's what you'll get. Just make sure to communicate what will help you be successful.
    – aaaaaa
    Mar 4, 2023 at 16:04
  • 4
    If the bug caused a catastrophe, there's also quite a bit of blame in the system, not just the individual coder. Code review and testing is supposed to mitigate simple mistakes.
    – Barmar
    Mar 4, 2023 at 18:07
  • 1
    As a young child, I watched my father spend hours each day for weeks searching for an obscure bug. It was a mis-cased variable ("CountOfPfargleNuts" vs "countOfPfargleNuts" or something). It was a good lesson: sometimes you just need to put in the time to grind through the problem very finely. Also, try to avoid needing to do that.
    – fectin
    Mar 4, 2023 at 19:43
  • @fectin You can get code blind. Modern languages and IDE's help with things like this. Such a simple thing as an identifier having the wrong color may indicate a misspelling. Mar 5, 2023 at 13:39
34

In short, yes, you can get fired for not fixing a bug...

But (before you stress out), not being able to fix a bug, is not why you would get fired.

Not fixing the bug, wasting time spinning your wheels, and not asking your mentor, or a senior engineer for help before the bug blocks progress, is what will get you fired. As a new graduate, you are not expected to know everything. Frankly, you are not expected to be an expert at anything.

Generally speaking, employers expect new graduates to have some knowledge, be willing to work hard, and be smart enough to ask for help.

The workplace is not school. You are allowed (and encouraged) to collaborate with fellow employees. Your peers are on the same team. They want you to succeed, because your success is their success (except in toxic river-like companies).

Note: This isn't to say that you should run to your team members for help every time you get stuck on a problem... Spend some time trying to solve the problem first, and put in the research... And don't ask for help on something that can be answered with a minute of googling (it takes 15 minutes to get back on task after an interruption for the average programmer).

2
  • 4
    To put it in other words - unless you were hired as a lone subject matter expert (unlikely, and that would have been communicated clearly in the interview already), coordinating and supporting the team (asking around, getting help and helping everyone see it through) IS fixing the bug. Yes, sounds a bit like management, but that level of management tends to be expected in IT of everyone nowadays. Mar 4, 2023 at 15:40
  • 6
    +1 for "The workplace is not school." Another important point: All those things your professors called "cheating," like looking up answers on Google? Yeah, you're now expected to do those things pretty much all the time.
    – Kevin
    Mar 5, 2023 at 20:43
15

First off, you need to understand that anyone in any job is replaceable.

With that out of the way, whether or not a new dev will be fired for being unable to solve a bug is company specific. Some companies may behave this way, but probably most do not.

Any reasonable company would not expect a dev at any level to not struggle with any specific bug. If it is a pattern of being unable to fix bugs then that is a different story.

Regardless, working for a company on a team is very different than working on a personal project. On your team, you presumably can ask other members for help or at the very least a second set of eyes. That is not to say that you shouldn't try to figure out things on your own, but collaboration is one of the benefits of working at a company.

17
  • 19
    "cemeteries are full of people once considered indispensable" used to say my old man...
    – OldPadawan
    Mar 3, 2023 at 13:45
  • 5
    @strateeg32 "There are plenty of individuals that could never be replaced. They have skills and knowledge that no one else has" So are they going to somehow live and work at their company forever?
    – sf02
    Mar 3, 2023 at 13:55
  • 8
    "There are plenty of individuals that could never be replaced." Strongly Agree, with a minor note, "...until they are replaced." :) Mar 3, 2023 at 14:39
  • 4
    @strateeg32, when that happens, it means someone failed at their job. Personal experience: I left a job as lead for a product, and the next few years of planned work for that product didn't happen at all other than unavoidable maintenance. That means I didn't do an adequate job of training/preparing the junior staff for the job, and it also means that my former management didn't hire senior backfill early enough for adequate knowledge transfer. But, despite those failures, the product does still exist, and it is still sold to customers. Mar 3, 2023 at 20:47
  • 2
    @strateeg32, ...building a contingency plan to handle one's departure is part of doing a job well; fail at it, and you've locked yourself out from being able to do internal transfers or start new projects -- one can end up being chained to one's own success, unable to leave to start something new without leaving a mess behind (and thus unable to get approval from any layers that would be responsible for both the new project and the old one). But eventually, folks get hit by a bus, or retire, or otherwise end up exiting a position unavoidably, and the mess gets made regardless. Mar 3, 2023 at 20:53
10

For a certain bug? No

This sounds like you haven't had a dev job yet, so any company that hired you should know that you don't have professional experience. Generally, the expectation for new devs is that they can demonstrate some capacity to work with code and maybe particular tools, not already know how to fix anything and everything. You should be able to read a stack trace and attempt to research and understand problems, but not to succeed without help.

Expect to spend time working with others on the team who know the codebase and language better, and who can teach you its idiosyncrasies, as well as best practices and how best to respond to being stuck.

You'd be expected to work well with others, to take help that people offer, to be open to making mistakes and admitting when you don't know (that's the big one), to reach out and not spin your wheels for a long time - as others have mentioned - and show improvement over time.

There will be bugs you won't be able to solve

Part of the debugging process, as mentioned before, is asking for help after a reasonable time (say half an hour of no real progress). Expect to receive real help when you ask, and expect the person helping to also help you learn while debugging.

The only time people will be worried you can't solve a particular bug is:

When you've been stuck on very similar bugs before and don't seem to have learned anything from it e.g. You're stuck on Bug 1 and you've hit this bug a few times in the last few weeks and each time with the help of a colleague resolved it, now Bug 1 is here again and you're stuck for all of the same reasons.

When you get a job, I recommend tracking every bug you hit and don't know, write the error name in your notes, the file it was pointing to, and what you had to do to fix it. For the first x months, check every bug you hit against your notes. Keeping a record is good practice, and shows others that you're learning.

I see people who in a split second solve bugs...

Experience is how people do this, and it looks like wizardry but it's not. Once you've come across a certain error 100 times you'll at least have a rough idea what's up. Yesterday I did something similar, I instantly knew exactly what was causing the bug someone else was seeing because I'd seen it a couple of times recently and happened to remember the solution.

The same thing happens over time but in more contexts, the more you already know the easier it is to grow your knowledge.

I'm worried about being replaceable...

What I'm hearing here is that you're new, and the idea of working professionally and having others judge you is intimidating. I've been there, and so have so many people I've worked with. It's very common. But you're doing the right thing in moving forwards, and confidence comes not with knowing that you know everything, but with knowing that you're in an environment that will support you while you make mistakes.

Imposter syndrome sounds right here, sure everyone's replaceable, but understand that companies and colleagues want you to succeed. Your success is their success, to varying degrees, and it's expensive to replace someone.

I know that if I can't solve simple bugs then I should get fired

This is all about expectations. A company should have an idea of your capabilities when they hire you. If they feel you exaggurated your abilities then they will understandably be upset, since you would have led them to expect more than you could deliver.

However, if you are open and honest at every stage then they will have reasonable expectations, and should provide appropriate support that you can meet expectations as you progress.

'New devs' are more likely to be fired because of a misunderstanding like a bad culture fit than a particular bug being an issue.

I would describe myself as capable, but needing help every now and then

This is very reasonable, and if you say this in interview it will show self-awareness and set expectations.

Nobody expects you to start, be given a computer, and 'figure it out'. New programmers don't ask for help enough because they're worried about looking inept, so ask a bit more than you think you should.

Summary

I've had to extrapolate a lot here based on the information given, but know that most companies hiring 'new devs' know what they're in for and support your growth and success, and that demonstrating a learning attitude will get you further than anything else.

4
  • Welcome to the community, Jules! That may be the best first post I've ever seen.
    – keshlam
    Mar 4, 2023 at 5:10
  • 1
    This is a great answer; the only thing I can think of to make this more comprehensive is to note in the "I know that if I can't solve simple bugs then I should get fired" section that....humans introduce bugs into the codebase. If someone else introduced the bug in question, and hasn't been fired for it, the person assigned to fix the bug won't be fired for not being able to easily fix it. Mar 5, 2023 at 1:28
  • 1
    “In a split second” - An employer of mine got reports of strange misbehaviour. A usually excellent employee couldn’t find it or reproduce it. Someone else figured it out in a split second. It turned out the bug only started to show itself at 18:12 in the evening. One developer worked nine to five, the other worked twelve to whatever.
    – gnasher729
    Mar 6, 2023 at 9:53
  • Much appreciated keshlam! And good points both, there are too many factors for it to be a case of 'always get it quickly'.
    – Jules
    Mar 6, 2023 at 15:56
4

Unless you were being hired to specifically solve this one issue, then failure to struggle with a particular bug will not mean you will be fired.

There is a learning curve that has to be addressed before you can be efficient fixing bugs. You have to learn the code base, which can take months. You have to learn how bugs are assigned, found, fixed, and approved. Some are easy to fix, others are hard just to understand let alone solve.

Some bugs can be fixed with the change of a single character, plus other characters for a comment and documentation. Others will take thousands of lines of code to address. The number of lines of code may not reflect how hard it was to find the cause of the problem.

Remember all new employees consume more resources than they contribute. The first weeks or months can be painful as you are learning. Most organizations know this before they even decide to start the process of hiring a new person.

3
  • It took me a week once to find that someone had changed "if (pointer != NULL)" to "if (! pointer)". He loved that the latter looked more clever. It didn't have any side affect for some reason until an important and large subsystem was replaced six months later. Took me over a week to make that subsystem the most thourougly reviewed part of our code.
    – gnasher729
    Mar 3, 2023 at 15:59
  • 2
    some bugs can be fixed with the change of a single character, but finding that character in a sea of thousands of lines of code can take hours or weeks.
    – stannius
    Mar 4, 2023 at 2:26
2

Summary of answers - generally no.

I can't think of any reasonably likely position where you walk in, get a bug to fix, can't solve it, and then get fired. Since the world is full of endless potential - I'm sure that that terrible outcome happened once, but it's substantially unlikely.

I can say from experience that there are MANY bugs I've been unable to fix, and not only did I not get fired, sometimes I even got promoted. In fact, you may really enjoy the number of times engineering social discussions drift towards - "there was this time there was this insane bug and .... I couldn't fix it/took forever fixing it/put it aside and many years later figured out the fix..." for the hard stuff is the stuff worth talking about.

That said, when you join a reasonable team/company you should be getting a mentor and bugs that the company thinks fit within your skill set. They expect you to try, thoughtfully and diligently every day, and to reach out and ask for help along the way. It will go a long way if you can ask specific questions that give an indication both of what you have tried so far, and what you need answers for (other than "how do you fix this bug?") if possible. The better and clearer you can communicate this, the more they will appreciate it. That said, figuring out how to do that is a learning curve, and no one expects you to be fantastic on day 1. Many people still work on this years into their career.

The place to generally be aware/worried is if after a standard onboarding period (many companies can communicate what that is, IME it's 6-12 months in most engineering roles), you are taking a longer time to finish most assignments (bugs, features, etc), and are not able to relay a clear reason why and improve upon it - then you may want to search out additional support, mentoring, or instruction on the technologies you are using. It's often REALLY hard to sort out what "longer than others" is, so it's also useful to ask your supervisor for feedback on this one. Not every week, but every month or so is not unreasonable. And if the feedback isn't clear, ask again, you deserve an answer you understand.

A big difference in most engineering work is that the assignment doesn't have as harsh a deadline as school work. In school, you're working against a fixed deadline, and presumably the teacher has baselined the project to make sure that it's reasonable within the time you've been given. So there's not a lot of wiggle room in that deadline - if you can't fix the bug, you have to move on. In an engineering team, the priorities and the environment change over time, and nothing really gets repeated. No one compares two people solving the exact same bug (once the bug is solved, it's hopefully solved), the goal is to keep fixing and producing great products with new stuff in them. So the goal is to fix most bugs, build the features in the best way that you can think of, and keep revising the product to suit the needs of it's users, and keep communicating and growing and getting better at doing that.

2
  • 1
    I can back this up. I have spent months solving bugs, many, to find bugs in runtime and OSs. Bugs I did not directly cause, and cannot directly fix. Along with a great many I caused myself, out of haste or just sheer complexity. Now to temper that, I can also say ANY employer that does not understand this has the wrong development hierarchy. It is part of the development process, and anyone that says they write flawless code is being far less than truthful with you and or themselves. depending on the project, their is likely people whose job is to do nothing but bug hunt.
    – Sabre
    Mar 3, 2023 at 23:40
  • Exactly. I wrestled with "solve more problems than you cause" as a good metric -- but honestly, even that is a falsehood. There's plenty of times where a prototype is WAY buggy, and that's OK. Or you try something, it goes VERY badly, and you learn and try again. That's not failure, that's learning. Mar 8, 2023 at 16:32
2

There are easy bugs and hard bugs. An easy one: A button has a title "Cancle" instead of "Cancel". A hard one: Your app stops working on the morning of the first day of the month when run in Australia. (Since I had the joy of fixing the second bug once, I would know exactly where to look and could fix it in ten minutes. For most people it would be hard. Although the knowledge that you can fix it in ten minutes if you've run into it before would help).

Easy bugs you should be able to fix. Hard bugs, you need experience. You will get it over time. You can't do it now, and nobody will expect it.

1

No. And it's unlikely that you will be assigned to bugs you can't solve.

The first few months, junior devs get assigned very small tasks. These tasks accomplish nothing of significance for the company, the entire point is to teach the new dev how the team works and also figure out their level of competence and how they handle feedback. The last bit is important - as a junior dev, you're hired for growth potential not current ability. How fast you learn, what sort of things you like to learn, is much more important than what you know.

Anyways, after this "introduction" period, you will get assigned tasks matched to your ability. And if the task involves something you can't do, someone will be assigned to help you. Working on a team is very different than a personal project like you describe, because there's a very experienced, knowledgeable person whose job it is to make sure only tasks of appropriate difficulty are directed to you. The bugs you can't do will be assigned to someone else.

As far as getting fired, it probably won't be because you couldn't solve a bug. At the junior level, the most important thing is how you respond to feedback. When people teach you how to do things if you resist too much, or if you become a help vampire, or you generally annoy someone important, that would be the more likely reason for you to be fired.

1

I feel this is one of those questions where the ‘more the merrier’ applies when answering it.

To answer your question; no, you will not be fired for being unable to solve a bug, and certainly not as a junior developer. The journey of a developer is one of learning. Nobody will penalise you for getting things wrong; we all do. The worst thing you can do is not ask for help once you’ve truly hit a brick wall.

It’s good to research independently and try to diagnose an issue, first; but when you aren’t making any headway, just ask. Every developer once started as a junior, and we all remember our first role.

As a software engineer, you are always learning, and that applies to every level of engineer, from junior all the way to most senior; nobody knows everything.

I’m a lead engineer now, but I still remember when I was an intern. We all suffer from a bit of imposter syndrome at times; it’s completely normal. I will come across an issue some days where even I’m stumped.

However, you’ll quickly discover that with every bug you fix and every project you work on, you gain knowledge. When you pair program with a colleague, you gain knowledge. You may fix a bug while at one company that a team in your next may not have experienced. In that instance, you become the guru. Every developer’s journey is unique and every developer’s experience is different. As a team, you learn from one another.

Never be afraid to ask questions, even when you think they’re “stupid” - 99% of the time, they’re not. When you land your first role as a junior engineer, you will not be expected to perform like a mid-level or a senior engineer. Your team will automatically assume you know very little, so use that to your advantage. Equally, you should use every role as an opportunity to pick at the brains of those experienced. You’ll be surprised how much you can learn from your colleagues.

Lastly, the knowledge you gain from every piece of code you write, every feature you deliver and every bug you fix, is the only thing separating a senior from a junior - experience. You may feel like you know little now, but one day you’ll similarly go on to progress to a senior position.

We all start somewhere :)

1
  • Welcome to the community, Matt!
    – keshlam
    Mar 4, 2023 at 5:11
1

In the medical device company I work at, we have invested a lot of time in training you (like standard operating procedures, as well as ISO and FDA requirements). We just have to find what level of tasks you can complete on your own or with the assistance of a mentor. You may get transferred to different groups; but you have to do something drastic to get fired; we'd like to keep people.

Also, we may start throwing more resources or transfer the issue to other people if you can't resolve the bug. There have been cases where four or more developers were assigned to the same bug.

0

Maybe. BUT if that were to happen you not being able to fix the bug will just be an excuse. The real reason would be that the company is looking for a scapegoat to take the blame for larger failings of the project and has chosen you, a cheap, easy to replace junior, to be that scapegoat.

Such actions on part of management are sadly somewhat common and I've seen cases where people were indeed specifically hired (usually juniors or contractors on short term contracts) for the purpose (though of course not stated, they were placed in positions where they were known to be useless) of failing and then being kicked out before being blamed in internal reports for the entire failing of the project team.

This is however, despite being somewhat common, isn't that common that you should fear to encounter it in every job you're applying for, just take care to not apply for things where you'd clearly be in over your head based on the specified requirements but get called in for an interview anyway.

2
  • It also happens at the opposite end. Company in trouble hires a new CEO who sorts out the mess, makes himself deeply unpopular in the process, gets fired, company is in much better state, CEO has his pockets full of money.
    – gnasher729
    Mar 6, 2023 at 11:46
  • @gnasher729 more often that's an "interim manager" who gets pulled in deliberately to take the heat (knowingly) for making those decisions and gets a very fat paycheck for it as well, not some poor guy who gets saddled with the blame for failings not his own without any intent on his behalf
    – jwenting
    Mar 6, 2023 at 12:43

Not the answer you're looking for? Browse other questions tagged .