I work at a large, non-software company in the US as an entry-level software engineer, where I’ve been working for a little over a year, now. This has been my first job out of college, though I did do freelance work for a few years prior. I’m very unhappy at my company, and I’m wondering whether this is due to the company, or instead due to my own unrealistic expectations.
In my organization at this company, each team is assigned one senior engineer, one or more non-senior engineers, and one or more offshore engineers. On my team, I am the only non-senior engineer, in addition to half a dozen offshore engineers. In the ~12 months that I’ve been on my team, 3 senior engineers have joined and subsequently quit, which has left me to learn the ropes of our (unnecessarily large and often undocumented) application and manage all of our offshore engineers on my own.
This means that I usually work significantly more than 8 hours per day (8 hours is the norm at my company). Lately, this also means that I’m usually quite a bit more familiar with our application than the senior engineer on my team. This has led to a number of hilarious situations in which I am at my desk, IM’ing the senior engineer what he needs to say at meetings, as those meetings are happening. I can’t attend these meetings, because they’re only for senior engineers!
Because I generally have no time to write code or do anything other than write e-mails and put out fires during the work week, I spend a large part of my weekends writing code for prototypes and projects, thinking about the designs of various parts of the company’s application, improving our documentation, writing code quality guides, and coming up with various process improvements (e.g. ways to improve our source control policies, ways that we can improve our interview process, etc). When I show other people (engineers on other teams, management, etc) what I’ve worked on, I generally don’t get any response whatsoever. This is problematic, because I need management to sign off on any changes that I make to our code-base or any of our processes, and without their sign-off, my work basically goes to waste. It’s alright if none of my ideas get implemented — they might be bad ideas (in hindsight, I know that some of them are!) — but it would at least be nice to get some feedback, and I never get any.
To make matters worse, management doesn’t seem to be aware of any of this. My manager has suggested that I try to take on more tasks at the next job-level up from mine, when by the company’s own guidelines, I’ve been doing the job of a senior engineer for some time now (though I probably haven’t been doing as well at it as an actual senior engineer would). I will admit that I haven’t been doing an great job of making myself "visible" to management, but I think that I’ve been doing enough that they should have more awareness than they seem to have.
Other than that, I just can’t seem to connect with anyone at work. I try to have conversations with other engineers about software (I’ve tried a wide variety of topics), and am generally greeted with head-nodding and a blank stare — sometimes other engineers even make impolite comments about my interest in software. I’ve tried to organize meetings where we can discuss computer science topics, but management, while supportive of the idea, has warned me that there might not be enough interest to warrant having such meetings.
The general M.O. here seems to be to do just enough work to shift responsibility to someone else, to be Agile (with a capital "A") even though our organization is anything but, to schedule meetings (never try to solve a problem using automation — meetings are the only way), and to basically maintain the status quo, even when doing so means making bad decisions that will cost the company big time in the future. By the way, it’s not cool to think or converse in terms of abstractions — only speak in terms of APIs, please (paraphrased advice that I’ve been given by management).
I’ve been trying to make the best of things: the attitude I’ve tried to have over the past year has been that if I can identify various things that we do wrong at work, and can come up with better ways to do them, then it’s almost as good as working somewhere where things actually get done in the right way. Still, I’m unhappy. For the first time in my life, I feel like I might be depressed. I don’t like waking up for work in the morning, and on the weekend, all I can think about is how much the next week is going to suck.
It seems like this should be a really sweet job — after all, you can do what is essentially bad work and still get paid, the environment is laid back, and people are friendly, for the most part. But it’s actually really frustrating. It feels like no matter how hard I try, I’ll never make any improvements to the company’s situation, because our organization in the company is structured in such a way that one single person (at my job-level, at least) can’t really affect any change by him/herself. Thus it feels like the only way to proceed is to knowingly do bad work.
Am I expecting too much? Is this just how software engineering is? I’m grateful to have a job, and don’t mean to be a know-it-all. I know that my company doesn’t owe me anything more than a paycheck, but I just don’t feel like this is a good situation. I’ve talked about some of this with management, and the response has basically been "That must be frustrating." I don’t know many other software engineers, and didn’t do CS in college, so can’t reach out to classmates or professors for advice.
Please, HN, set me straight!