HACKER Q&A
📣 throwaway12982

Is it normal to feel stretched thin as a young software engineer?


I've been working at a larger but not huge corporate multinational for the past couple of years in an industry that is strong and stable, but not high-growth. I started as an intern in software engineering during my master's in engineering and have progressively gotten more responsibility (along with higher pay) and am now somewhere between a data scientist and a software engineer.

Usually, when people leave the company, their job is not filled and people around them have to pick up the pieces in addition to their existing responsibilities. This has happened to me on multiple occasions, e.g. having to admin multiple servers and databases alongside developing the backend because no-one else in the team really knows how to and the previous guy left without being replaced.

Furthermore, project management is sloppy - there are only rudimentary processes or guidelines about how to document, lead a project, and so on, meaning that every project works slightly differently. Control mechanisms for projects seem very tame, with virtually no consequences for anyone if projects are delayed. Often I've seen people coast along or just be plain unsuited for the work assigned, but no-one does anything about it or tries to improve the situation.

There are no specialists for important tasks that span departments like software/enterprise architecture. These tasks are left to junior engineers and interns to figure out, without mentorship by someone who actually knows what they're doing, because they usually don't have time. Meaning that young engineers need to ask around the company for the current best practices that are used in the company, and figure stuff out on their own. There are no manuals, documentation, everything is just relayed by word of mouth.

I'd imagine, at a healthy company, there is a good balance between peer-to-peer communication and documentation, there is mentorship by more experienced engineers about technical topics like API design and best practices, enabling (guided) growth for younger engineers.

What I'm wondering about: I feel like this is not normal, but I don't have any other place that I can compare it with. Friends from the same and other industries share stories that sound a lot like those from my workplace. I want to grow as an engineer and a person, but I feel like I have to pick up the pieces all the time, having to deal with other people's technical debt when they leave, etc., leaving my day fragmented with countless meetings and projects, not being able to focus on getting better at specific skills as I'd like to. Is this just the way it is when you've got a couple of years in the industry under your belt? Am I expecting too much in terms of mentorship or communication? Is management at fault, or is this the nature of the beast?


  👤 KronisLV Accepted Answer ✓
I'd say that startups sometimes get away with focusing on getting things done over having processes in place, but even then it's not a good choice long term, especially in more established companies.

I've also seen plenty of environments where onboarding and documentation aren't given a high priority, which I'd also suggest are red flags - such environments are more likely to make you struggle with things because someone couldn't be bothered to document their architectural choices, pipelines or anything else, therefore preventing you from delivering results. This sort of technical debt compounds and will make things harder as the project and architecture complexity increase.

At best, you learn a lot and implement a lot of good practices, at worst, you end up underperforming in a dysfunctional environment where an increasing portion of your time is spent fighting fires.

In most cases, if you want to see any actual changes, you have two choices: either change the company, or change the company.

The former could involve encouraging your colleagues to at least write simple Markdown docs and instructions, you or others leading internal seminars or workshops in which you could explore certain tools or development practices.

The latter would involve you updating your CV and seeing what other companies are hiring, while attempting to figure out how good their practices are during research or interviews.

Personal advice: make sure that your efforts and the amount of stuff you do are very visible to both your colleagues and management. Talk about database outages or times you had to administer environments, do post mortems, inquire about possible improvements and back up the need for them with data involving how many hours were needlessly spent on that stuff.