My story goes something like this: I accepted my first full time position in May of last year with a large-ish company (1000+ employees). Because of some mitigating circumstances I didn't actually start until around this time of August last year. Now that I've been working for a year though, I've become rather dismayed about my employer. As a result I've resolved to look for a new job, but I'm worried that even if I move somewhere else it'll be more of the same.
So let me describe a few things that bother me:
- When I started the position my manager was on vacation for three weeks, along with his usual delegate. About three weeks after he returned he then took a job elsewhere. When that happened my team was split with three other members going to another group along with the custom software products they were the experts for. The remaining members, myself included, were spun into our own new team.
- Feeding off of item 1, my first task was to write unit tests (of which, by the way, there were almost none of in the first place). As it turns out the product I was writing these tests for moved to the other team and that manager chose to reject my unit tests because no one in their team could vouch for them.
- Shortly after my team split I was reassigned to a major project under the leadership of a much more senior developer. As I learned later he wanted to do the entire project on his own in the first place, so it's no surprise in hindsight that during this time his mentorship was quite limited. A couple of months later he was transitioned to a different team, but not before leaving me with a very limited proof of concept, but no real design, and ensuring that code was developed using tools that were still being piloted within the organization. This created all sorts of problems later because of the intricacies of our very custom build environment. It's also ensured I'm the only one on the team, and potentially my department even, who now understands the technologies and frameworks in use well enough to really work on the product.
- So only maybe four or five months into my first job hired at the lowest developer position, I became the technical lead for the project and honestly I've been terrible at it the whole time. The project was run in a waterfall manner, which ended up meaning we were required to start development well before requirements were finalised and that the high level design was essentially a bunch of interconnected black boxes without enough specificity to be useful and were not very grounded. Thus I was asked to lead other team members when I myself could barely keep afloat writing the features (and as a consequence I readily admit the code is terrible). Not long ago then, the product became important enough to make its success part of the company performance metrics. This frightens me to death because I know intimately how poorly written it is, let alone how robust it was designed to be. Not to mention the two "experts" on the product, myself and one other, have less than eighteen months total working experience.
- Regarding my organization... It is ludicrously risk averse and slow to adopt "new" tools. Our build tool is custom, our testing teams write very limited amounts of automated tests, and code reviews are often done by passing around spreadsheets. This concerns me because it means much of what I learn is useless outside this organization.
So on some levels I've got immense job security, but ultimately I've become so stressed by my position I often hope I'll screw up badly enough I'll get fired. Many days I go into work solely out of a self imposed duty and obligation to keep my co-workers from having to make sense of and extend my awful code and keep the product progressing.
Are any if these experiences at all common? Is it fair of me to treat them as the kind of red flags that I have been?
Edit: Understandably this question was put on hold since I didn't ask a question with a real answer. Before I add a few more substantive questions, I'd like to thank Cameron and Walfrat for helping me anyway. I think there are already some valuable pieces of advice there about ways I can improve the current software development practices, but I do have another follow-up since I am trying to leave: What can I do to lessen the blow to the people I work with? I'd imagine improving the code comments for a start. And I was thinking about creating some write up for improvements on the current design. Is there anything else I can do? Anything better than what I've thought of so far?