4

I have recently joined a new job as a Software Engineer with experience of 1.2 years. I have my graduation from a different branch, and I am a self-taught developer. I joined this company because of its culture and all the good things I have heard so far.

In my first month, I received codebase access and the next day I was assigned two tickets. I started working on those and in the first week, I got to realize those tickets are not good examples of first or introductory tickets. So, I tried to connect with my colleagues for doubts in the first two weeks, but they either didn't reply or kept referring to one another forming a deadlock. I made code changes as per my understanding but have to wait for 2 to 4 days to get the review. In 3rd week, my manager started asking for ETA for both tickets. I did mention that I am waiting for the review. But then, the review comes with 30+ comments, and before giving approval they kept asking to check with another developer. The same cycle went on for another week. I kept resolving them and my manager kept asking for ETA again and again almost every day. Then, I did the deployment after testing and it cause the live issue. I was held accountable for not doing proper testing. So, I went through the process and wanted to connect with the engineer who handed over the ticket to me to confirm certain things. I haven't heard from 1.5 days which is delaying the reports and emails that I need to send. I have been assigned to write another doc that involves complex flows when I connected with the senior engineer I was told that I have to go through the codebase but had no hints on where, how, or what else I needed to write down.

I am also struggling with failing tests that are being run using docker locally. Due to the Apple silicon M1 chip laptop, tests keep failing. They have suggested workarounds but those workarounds consume many hours and laptop battery/resources just to bring up the service and I am finding debugging on a new big codebase very difficult. I brought up this issue but they didn't take it seriously until a senior engineer raised it. Even after that, they give out the workaround which works after hours of trying, and expect that this will resolve the issue. I had no one-on-one to discuss my problems with the manager since I joined. This one-on-one culture is not followed in my team. I also noticed that some colleagues didn't reply back to me but when another person approached them, they came to have a meeting with them.

Unconsciously, I have developed an unliking to company and colleagues, due to the nature of colleagues and daily checks on ETA. I haven't completed my second month yet. I am not sure if I am overthinking or if it's how software engineering works or if it's me who is not competent enough for this industry.

7
  • 4
    We can't say if you should quit or not. That's a personal decision. You might get a more useful answer if you pick an issue, like the daily check-ins or lack of support, and ask how to solve it.
    – Kat
    Commented Oct 13, 2022 at 14:29
  • 2
    Also if individuals are not replying to your request for help, include your manager in the email chain, and keep following up every 24-36 hours. This way your manager can follow your progress, and isn't annoyed, they have to come to you for a progress report.
    – Donald
    Commented Oct 13, 2022 at 14:31
  • 2
    @Donald I merged after resolving all the comments and tested it thoroughly. I didn't deploy to 100% load but did a canary deployment. Reverted back my changes as well when I came to know that the issue timing matched my deployment to make sure it didn't cause any further issues. My manager didn't say anything about it but a colleague discussed it in the meeting as if I was doing it incorrectly but I verified with other testers as well. Also, I keep following up with colleagues but their delay in response or no response creates delays in my flow too.
    – Zen
    Commented Oct 13, 2022 at 14:54
  • 2
    @Zen - Have you told your manager about the delays caused by this delay in responses? What is their response and their suggested solution to that problem? Since you don't have a lot of experience, you making mistakes is expected, you should talk to your manager what the accepted way forward (for your company) to prevent future mistakes is. If you are not getting responses by email, visit these individual's desk, might be an acceptable solution. If you are having delays caused by a lack of response, you really should, include your manager in all email chains. They are paid to solve problems.
    – Donald
    Commented Oct 13, 2022 at 16:59
  • 4
    Struggling with the code base is completely normal. Also, because everyone is working remotely right now, it means most new junior developers are not getting the kind of support they were getting pre-pandemic. Do not beat yourself up. And do not quit without lining up another job first. Also if you quit, you won't receive unemployment. Commented Oct 14, 2022 at 0:26

4 Answers 4

7

I'll have to disagree with some of the other answers here, which I'll be reductive and say the general theme of which are "suck it up, this is common."

Maybe it is, but here are some big red flags to me, if we can take you at your word:

In my first month, I received codebase access and the next day I was assigned two tickets. I started working on those and in the first week, I got to realize those tickets are not good examples of first or introductory tickets.

Any individual contributor, especially a junior, should be far away from meaningful work during the first month in a new codebase—let alone production. You should be having so much onboarding that it's difficult to get anything done at all, to say nothing of the nature of work you are assigned. Typically, first steps I've seen are things like "add X to the readme" or "marginally improve this crusty behavior on a low-impact part of the product". To throw you to the wolves and give you proper tasks this early seems like nobody in a management position has even thought about setting you up for success.

So, I tried to connect with my colleagues for doubts in the first two weeks, but they either didn't reply or kept referring to one another forming a deadlock. I made code changes as per my understanding but have to wait for 2 to 4 days to get the review.

Again, an example of poor management and leadership at this organization. You should have a senior assigned as your "buddy," someone on the front lines accountable for ensuring your success and empathizing with your situation.

It's also ridiculous that code review takes longer than a day to get feedback on for anybody for any reason. If this were happening outside of exceptional circumstances at my organization, I'd make it priority number one to fix, as it greatly impacts broader team velocity. A healthy team is tripping over themselves to provide constructive feedback on proposed code. An unhealthy team views it as a distracting obligation.

The assignment I mentioned is helpful here, but the team should also be autonomous enough where seniors will think to themselves, "this person is new, I should make some time to support them in their first month," without a grown-up explaining this to them.

I kept resolving them and my manager kept asking for ETA again and again almost every day. Then, I did the deployment after testing and it cause the live issue. I was held accountable for not doing proper testing.

When a manager is telling you what you did wrong instead of asking you, that person is a poor manager and worse leader. Clearly they don't think they have anything to learn from you about their shipping lifecycle, which explains a lot already about how poor it seems to be. Healthy engineering teams view new recruits as opportunities to improve their process, being unburdened from bias and groupthink. To not even have this cross their mind speaks volumes about their culture and values.

I am also struggling with failing tests that are being run using docker locally. Due to the Apple silicon M1 chip laptop, tests keep failing. They have suggested workarounds but those workarounds consume many hours and laptop battery/resources just to bring up the service and I am finding debugging on a new big codebase very difficult. I brought up this issue but they didn't take it seriously until a senior engineer raised it.

I've experienced this myself a few times as the transition to Apple silicon has gotten more pronounced. The fact that the engineering team hasn't anticipated this after the announcement several years ago alone is enough to tell me that they are unaccountable, low-quality, and not forward-thinking. In my own experience, even if platform teams were slow on the uptake, there was communication around expectations and warnings to employees about premature adoption. The fact that this was a surprise to this organization is, to put it bluntly, shocking to me.

To summarize, this would be an uphill battle to fix as a junior engineer at any organization. This one seems dysfunctional enough that someone in a position of much higher authority would still struggle, due to compacting cultural issues.

They did you a favor, I'd recommend seeking work elsewhere ASAP, if what you're saying is true. Your manager ought to be your number one hype-man (or hype-person), doing everything in their power to set you and the team up for success. Yours seems completely out to lunch at best, and in my opinion, an immovable obstacle to your professional development.

It's up to you what to do next, but I want to be very clear in telling you to put little stock in what they say to you between now and then. You could be the worst engineer in the world, and they'd still be in the wrong.

13

Struggling with the codebase is totally normal. Depending on the size of the codebase you may be struggling with it for a year that it would still be OK so long as you deepen your understanding of it gradually and become knowledgeable about some part of it.

Struggling with some technology or infrastructure issue is ok too. Docker is not easy and as you said, you raised a legitimate issue that was picked by some senior engineer later.

However it seems the environment is not what you are looking for and from your description quite hostile, with a "every man for himself" attitude. At least it's definitely not a usual way of operating in the industry. With less than 2 year of experience you're still quite junior and still need guidance or at least good-willed feedbacks.

You won't be able to change the culture, and we can't tell you to stay or leave, it's your choice. There are still a few things you can do that may help.

  • When you get tasked with something ask your manager for the priority compared to task of other people.
  • When you get tasked with something ask your manager or technical leader who you can ask help
  • Send a summary of the previous point by email with your manager and the person involved in copy.
  • Book a 1 on 1 with your manager. The intent is to provide solutions in how to do better next time, not just go with issues and wait for solutions.
    • Tell him that you think you lost too much time waiting for your colleague help or inputs and that you are unsure how to proceed.
    • Ask how you must communicate with them and how long you need to wait if you don't get an answer. Also ask if you need to direct your question to some people more than the others. Also ask if there is a process to follow for code review.
    • Awaiting several days to get dozens of comments is bad practice. You may suggest doing the review with someone more senior at your desk next time, be sure to add that it will help keeping delay short but also help you get familiar with the team practices.
    • You introduced a bug in production, ask what is the proper process to follow. Is there a QA team ? Is there a staging area ?

In case it is still not clear you are not incompetent (at least not what we can read), you are inexperienced and that is ok. If anything some of your colleagues may be incompetent is they can't take some time to help newcomer and juniors

2
  • 2
    I think you've outlined some great steps for making the best of a bad situation. However, I want to really underscore how unacceptable it is for a junior to be explaining any of this to a manager. I'm skeptical of this person's future success at this company if things like "who can I ask for help?" aren't already defined in excruciating detail.
    – Eee
    Commented Oct 19, 2022 at 20:33
  • Been there, done that. I'm near to retirement, so I got lent to a dept who wanted a C++ person. When I got there, no hardware, order your own. No tools, order your own. No support, they are in home office and too busy. Use this version, no, use that one. No access to server, organise it yourself. After 3 weeks I went to my real boss in despair - I can't do this, help. He listened, told me I was right, and if I couldn't do it then no-one could. Then he sent me home - it was Friday - and on Monday I had a different task. We love our boss.
    – RedSonja
    Commented Oct 25, 2022 at 9:13
2

To struggle with something is the definition of "work". Otherwise, it would not be work. It can be a code base, a medical emergency room, a construction site. There are struggles everywhere.

About not getting feedback, there is a lot of information you did not give us. Possibly, even you do not know it,since you are new there.

You basically made two or three mistakes:

  • you waited a long time until something happened. You practically did nothing on the job for several days. That cannot be beneficial. Never wait for more than 2 days before you escalate.
  • you did not talk with your manager.You do not have to complain about your colleagues. Just mention that you did your part of the job, and you cannot continue before someone does their thing about your tasks (review, in this case). Ask your manager to prioritize. Keep him informed every day about the progress.
  • you presume that your colleagues are bad people who do not want to help you. Maybe they are just very busy with their tasks. Maybe they do not tell you the details to keep your hopes up. Just talk to them ask them when they can do the review, so you can advance with your work. One common / nice way to ask about the progress would be "Hey, what is the status on those reviews? When can I expect some feedback?" If you drop some "Please" here and there, it takes you a long way.

Another thing is that reviews take time. I have no idea what work you did, but reviewing it might indeed take hours or days.

1

It seems that your company's automatic build system doesnt work well with your "new" computer. That is a problem that needs fixing, before one of the older computers used by your colleagues breaks, gets replaced with a new one, and has the exact same problems.

In a one-2-one with your manager, you could point this out, and suggest that instead of trying to fix bugs with a broken build system, you might fix this first. So no workarounds anymore. You will have to do some deep learning though, but it will come useful, whatever you do next.

You must log in to answer this question.

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