I work for a startup which was acquired by a much larger company. My official job title is "Software Engineer" (SE) and I am a junior. I have been working at this company for three years. We have a distributed backup and recovery system which was written to no standard whatsoever and eventually the individual who built it could no longer maintain it (because she did not focus on scalability) and she burned out and quit. I immediately inherited the system because I had a bit of experience working with distributed systems and was very familiar with some distributed paradigms (HA, load balancing, fault tolerance, etc.). Over time, I "survived" and I built several new recovery systems, many of which are being used on clients. I am the only person in the company who knows how this system works. Now, a day-to-day for me involves:
- Architecting and designing new systems from scratch
- Maintaining existing systems I have architected
- I have written 100% of the documentation for all the systems I have built. I write documentation every day (and I happen to enjoy writing documentation)
- I have written 100% of the tests for all the systems I have built. I write unit tests for my work almost every day (I also happen to enjoy writing unit tests)
- I review and merge pull requests from junior employees
- I occasionally interview new recruits alongside my manager
- I mentor new employees that myself and my manager have hired
- At least twice a week I take phone calls from clients to troubleshoot any issues they may be having with my products
- I do all of this with almost no oversight from my manager (or anyone)
All in all, I love it and I wouldn't change a thing about my current arrangement. Here's the problem though... I am still a junior SE... and recently, the new VP of our company stated something along the lines of "I'm not working hard enough." What's worse is that even my manager agreed that I am long overdue for a promotion.
Is it normal for a junior SE to be doing this amount of work? This is my first job out of college and three years is not a long time. Although, at this point, I can't help but feel like I am getting taken advantage of. When I think of "junior", I think of someone who is very new, doesn't know much about best practices, and focuses on work like bug fixes, as an example.
I should also note that I am strongly considering leaving the company. This company is having a serious issue with turnover, morale is down, and personally I am getting sick of people not caring about certain things such as code cleanliness and documentation, for example. The news that apparently I am not working hard enough is the straw that broke the camel's back for me. At the same time though, the pay is decent and I am largely free to do as I please - a privilege that I don't want to lose. So I really don't know what to do here.