Ask HN: Am I expecting too much?

87 points by throwawaypotato ↗ HN
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 -- ...

67 comments

[ 3.2 ms ] story [ 135 ms ] thread
I think I can comment on what people might be thinking when you show them your prototype: "will I have to maintain this?"

The only advice I can give is keep yourself available and keep looking for a job even if you want to work where you are at. It can't hurt to shop around.

It is easy to feel oppressed in software development. I don't mean to say that people in software development are oppressed, just that it's easy to feel that way. One of the goals of software development is to create a product that people don't notice or think about (something intuitive). I have found that it is common for developers to feel that their work goes unnoticed at times.

That being said, I would recommend three things:

1) Try to focus a little less on whether or not you've been treated as fairly as possible and look for ways you can improve things for everyone in the company. If you leave, someone else is going to have to deal with the same crap. Is there a way you can make it better?

2) Talk to higher management. Try to be objective and avoid blaming. Just identify things in the process that are causing you to feel unappreciated and ineffective. Could they involve you in more planning meetings? Could you start holding trainings to share knowledge among other developers?

3) Remember that you don't owe the company anything. You should absolutely be professional in all your dealings, but a job is a means to an end. If you aren't getting the pay, recognition, or satisfaction you're looking for, just look for another job. Companies live and die. Employees come and go. Don't get too emotionally tied to it.

Every situation is unique and every person is different. But I share my thoughts.

- The right place is the one that helps you achieve your life goals. It sounds like you may be in the wrong place but that doesn't mean you should quit just yet.

- Its probably a good time to start making friends at other companies. Its fine if its casual. You just need to start building your network. If you do this right you may never have to apply for a job or draft a resume again (I haven't).

- You are getting a lot of tasks thrown your way (which is great) but don't make the mistake of thinking doing most the work means you should be recognised as a senior. Thats not at all how it works. Especially in a corporate culture.

- Keep making your seniors look good. You don't want to be a threat to them. If their career advances they will take you with them. You want every to feel that they are more likely to succeed with you around.

- You probably have a lot of energy and motivation at this point in your career so it worth finding a place where you can better thrive. Before you leave your current position however I would be sure you have learned everything you want to learn there. You don't want to be a noob walking into your second position.

Hope this helps.

x10 this:

> - Keep making your seniors look good. You don't want to be a threat to them. If their career advances they will take you with them. You want every to feel that they are more likely to succeed with you around.

I've been in your exact situation- very nice, laid back people, but who are boring and have no desire to really improve or change things. It sucks, I feel for you.

Remember to respect the balance. What if you were on the opposite team? One that charged ahead, worked like crazy and valued only the smartest? That might be nice for a bit, but eventually it would wear on you in other ways, you'd be tired, stressed and feel undervalued.

But even after respecting the perks, you're restless. You want to be on a higher functioning team. I say quit, and quit right now. Because right now you're in a place in your life where you want to work hard, study and grow. So go find those people, they are out there. But leave on good terms, because in 5 years when you want to focus on your family, or take up a hobby, or just chill out, you'll want this type of job, and you'll be glad it's something you can come back to. And then 5 years after that, who knows, you'll get that itch again, and once more your off to the races.

It depends. What are you willing to risk to get what you may want?

You have only been there a year and you are eager and motivated. This is great to hear. It also sounds like you enjoy writing software, also great.

Here is what you do not want to do: become a PITA.

Stop talking to management so much (at least for now), they probably are getting tired of it.

Also try to fit into the culture where you work (at least for now).

And absolutely always ALWAYS be a team player. Even if the senior doesn't know as much about the product as you do right now. Offer your help and be nice about it. Don't take things personally, even if someone is being rude to you. Also try to look for people who you admire professionally and help them whenever you can.

In the mean time focus on your skills and keep improving your corner of the world.

What will happen, sooner than later, is that those people you helped will remember you. And when they are in a position to affect positive change, they may return the favor.

While you are doing this, make mental notes of where you want to be and definitely do shop around. By being aware of the real world situations, you'll be better equipped to recognize a better situation.

Best of luck to you!

This. Every (good) job I've gotten has been from networking.

Finding good developers is hard, and companies love referrals. Those 3 senior devs that have quit likely found a job somewhere else, and that somewhere else will be hiring.

If they remember you as the passionate helpful developer who was putting in a good effort at a terrible company, they'll probably want to throw potential job opportunities your way.

And make sure they have a way to contact you, even if you are just making a connection on LinkedIn or something.

Hi, I made an account just to respond to your essay. Congrats, you made me get out my laptop ;)

- Feedback is hard to come by. I don't know your company, but I've known several managers over the years who are excellent people, fantastic engineers in their own right, and decent at organizing projects... but they have no idea how to give constructive feedback. Sometimes this is a personality defect - software isn't known for attracting folks with high EQ - and also it's easier to not risk pissing people off. Sometimes they're guilty of apathy or oversubscription. I think you need a mentor, someone senior who will actually provide this feedback, and ideally who has visibility into the work you and your team perform. They will certainly have insight and perspective. I didn't realize how valuable this was until I started with my current manager, who gives excellent feedback, and I can't thank her enough for it.

- Work expands to fill the time allotted, but work also shifts to the person most willing. If you're pulling those kinds of hours and your team is not, then hey congrats, you're the kid in school who does all the work in group projects... so, presuming you're not okay with being that person... "Why would I promote you when you're carrying the team on your back?"

- "How tall you are depends on who you're standing next to." It's sadly common for a dev to have ten years' experience and not hold a candle to another with two years' experience. It depends on what they did in those years! Folks who aren't still hungry to learn, while still competent, cease to grow. So for evaluating your peers, do respect their years of seniority, but take it with a grain of salt that those years were well spent.

- "One must imagine Sisyphus happy." Camus said that, and while depressing, the quote sums up most of software development in a nutshell to me. You have to value the process - which it sounds like you do - but with the knowledge that your efforts will never make the problems go away. At best there will be new problems. At worst you'll be hamstrung by the situation around you, which leads to the next paragraph...

- "Every group of friends has That Guy. If yours doesn't, then congrats: YOU are That Guy." No matter the context, don't be That Guy. If your senior engineers are so amazing, you wouldn't be asking these questions: it would be painfully obvious to you that you can learn a ton from their experience and example. That is, unless you're very self-centered and narcissistic, which isn't meant as a dig so much as a "know thyself" moment. About the time that everyone learns from you, but you don't learn from them, and you're not just there for the money/etc... it's time to go.

- Culture comes from the top. ICs can't change the culture. At least not much, and likely not outside their team. It's just not how big orgs work. This should be part of the reason directors and VPs are so well compensated: it's on them to set the tone, establish the expectations, and conduct the hiring to enforce those. I personally know five ICs, off the top of my head, who all tried to change the culture, were unsuccessful, burned out, and quit. Find the serenity to accept that from your perspective the culture is immutable, and either accept it or change gigs.

- Yeah, final point: It's time to go. The usual career building advice applies, but I'd also focus on meetup groups. Everyone at a Golang meetup group, for instance, likes Go so much that they sacrifice personal time to hang with others who feel the same.

Feel free to reply if you'd like any further clarity. Good luck!

I like the rule of thumb when there's no one left to learn from in your job, time to move on.

Obviously don't quit, but you could start looking. Even if it's not implemented you have created new systems for your company ;)

But remember what you want is not necessarily what others in the org you are in wants.

Some people just want a easy job. It's not a crazy idea, if the company is not benefiting those who go the extra mile, why do it? Some people value life outside work more. And this certainly shifts a lot as you get older. Why work hard to make widget company A better than competition widget company B?

Level up jobwise, put you energy into a side project(part time self employment) or keep trying if it's important to you, maybe it's more complicated than it seems.

We moved the text from http://pastebin.com/raw/8sdGRra3 to the text field above. It's longer than Ask HN texts are usually supposed to be, but given that there's an active discussion it seems more convenient to have it here. If there are objections, we can put it back the way it was.
Find another job, but don't quit, as it makes salary negotiation much harder. Do the interviews in the background. Also if some engineer you worked with has left the company, ask him to help find job for you.
Just copy paste this to the CEO and see what happens. (minus the self-deprecation)
Bad idea IMO, he's still very inexperienced and thus likely to not be taken seriously even if he's right.
> I'm very unhappy at my company

> Am I expecting too much?

> Is this just how software engineering is?

> my own unrealistic expectations

> I generally don't get any response whatsoever

> it would at least be nice to get some feedback, and I never get any

> I just can't seem to connect with anyone at work

> there might not be enough interest to warrant having such meetings

> you can do what is essentially bad work and still get paid

> the response has basically been "That must be frustrating"

> I'm wondering whether this is due to the company

All company outside a few small areas is exactly like this, the exceptions being:

* Startups

* Open-source

There is nothing wrong with this company. This is how pretty much all companies are. This kind of environment is suitable for 85% of software engineers. They like it that way, and they want it that way. Companies do not want to be dependent on heroics. They want a predictable process.

> I spend a large part of my weekends writing code for prototypes and projects

* Be on the outlook for a sufficently-funded startup where you could be the CTO or technical co-founder

* Join an open source project

Do not talk about this to other people in the company. In the meanwhile, until you have landed your new role, avoid disturbing other people, or make them feel inadequate. Companies fundamentally cannot use people like you. It is contrary to their desire to keep things predictable, both good and bad things.

By the way, personality-wise, I am pretty much like you. I am a co-founder in 3 startups and 2 open-source projects. It may be annoying for you that you are not suitable for working in most companies around, but at the same time, if you find the right place to work at, you will have much, much more fun and make much, much more money than in a "normal" job.

Good advice. I work for a company like he describes and I can vouch for everything you said. You can't rock the boat too much at a company that see tech as a means to an end. If you're passionate about tech Acme megacorp is the wrong place to be.
How would one find such a place?
Quit, join a small company. I did five long years at a multinational megacorp without realizing that life could be better. It was like prison for programmers. When I finally quit to be employee #5 at a bootstrapped startup it was a revelation. After I had been at the startup for a month it still didn't feel real - it felt like I was on vacation from my previous job. It took a long time for it to sink in that I didn't have to go back. Ever!

It's possible to enjoy work! Don't make my mistake and waste years in an environment you hate - I should have left after 3 months instead of 5 years. I will never work for a large corporation again.

Except these things could be preventing such a transition:

* Moving expenses to $EXPENSIVE_TECH_CITY

* Student loan debt

* Credit card debt

* Car loan + auto insurance

* Severe pay cut

* No experience building CRUD apps

Or MSCCSN for short.

Indeed, better to find another job before quitting. Less pressure.
* A family to support.

It's a hard decision to fall in love before you've found what kind of job you liked.

"Severe pay cut"

That is my experience too. About 50% off when you start and if you are really good and they like you and... 10% off.

That was not my experience at all. I didn't take a pay cut moving to a small company. My salary stayed about the same, I had similar benefits, and I got a little equity which a few years later was worth a nice bonus. Staying at a large company all you're going to get is the standard 3 to 5 percent cost of living increase every year.

Generally I do not think it's true that large companies pay better than small ones - if anything the opposite.

Re: moving to an expensive tech city, perhaps that might be an issue, but there are smaller companies in lots of places, not just Silicon Valley.

> Generally I do not think it's true that large companies pay better than small ones - if anything the opposite.

Anecdotal data point: I recently made the switch from startup to Megacorp, and my base salary remained the same, but my equity compensation went from being made of unicorn farts and fairy dust to something a little more real. Meaning if I stay the year, my total comp'll jump roughly 50%.

And my base salary at the startup was pretty good compared to some of my friends working at smaller places.

Every place is different but what you are experiencing sounds somewhat typical of a large organization. It sounds like you would be much happier somewhere smaller! Small startups tend to have the opposite sorts of problems, where each person needs to take on lots of responsibility but consequently everyone gets to have a big impact on the company and product. And as long as they practice code reviews for all changes you're guaranteed to get feedback even if sometimes that feedback is just "that's gross, don't do that". Anyway at a smaller startup it should be way less likely for there to be the kind of disconnect between dev and management as you are describing.
A couple random thoughts: You've freelanced before, you're not happy with your current job, so consider getting back into that, at least on the side.

3 seniors quitting in a year does sound a bit like a red flag. Hopefully you're keeping in contact with them? Maybe you can find out why they left and where they went (and whether you can come along).

It's often unnecessarily large and undocumented. Sorry.

Consider running your ideas by some higher-ups before you spend your weekends on them. If they're not interested, maybe they could help you figure out things to work on that would get traction. This might be one of those trite old things where you make the person belivee it's their own good idea, but even then they'll at least know you were the one to implement it.

Things like code quality guidelines and interview processes involve some subjectivity- they're commendable things to want to improve but it may not be as simple as "boom, now it's better."

Not everyone loves talking about software for the sake of software. Maybe connect over biking or frisbee or movies or something. Also, "software" is a vast, vast space of topics. If someone doesn't happen to be in the right frame of mind when you bring up some otherwise-interesting topic, you probably will get blank stares. If you do want to chat about software, find a way to ask people about something you know they're working on.

I do hate the getting-things-done-in-meetings approach. You could try short-circuiting them with emails like "Here's problem X, here's my solution Y, please email me thoughts otherwise I'll go ahead and implemnt it." (YMMV)

In the end, though, it does sound like you're looking to leave. So, keep a list of your accomplishments (even if nobody there appreciates them), the responsibilites you have, positive feedback you've gotten, and things you've learned. Brush up your resume and look around. If you're financially stable, maybe just bail and go back to freelancing. Or, if you're feeling gutsy, maybe apply for a Sr role at your current place- that might be a way to gain some recognition.

It seems to me like you try to make your job better, and outshine on all areas, but you are not trying to do it in a corporate way.

Your bosses only care for 2 things, and those things are the only things that you can use to get their attention and implement change.

1) Does the change make more money You have to show them, prove them that the change you try to implement will make more money down the hill. Will it attract more customers, will it make customers spend even more, how can you quantify this idea into money.

2) Does the change save money spent If you can prove them that the change will save them money that they are currently losing, then you have to show them how. Show statistics, show numbers.

This is the only thing that works with almost any corporate company and almost every work occupation that I have seen, talked to with other people, and learned all the way.

You either make more money, or you save money, everything else noone cares about.

Especially as a developer, you might know that changing a codebase MIGHT be easier down the road, but unless it is quantifiable by numbers and money, noone cares.

As someone said, it's time to move on but take it easy. Try to reduce your "extra working hours", at least try to get enough free time and make sure weekends "are weekends". You need time for you.

Now it's time to start thinking "what would you like to do next" and invest some time in a daily basis looking for companies and positions that you will feel motivated to apply. That research and process may take some time.

Ah, don't get into the "Engineer -> Senior Engineer -> Manager" thinking, titles are not important, what really matters is what you do and how much you enjoy it. If you enjoy what you do, you will succeed.

Create a 'plan B', another job that you have lined up or a launching customer for your freelance career. Then, ask your current employer to be promoted, pronto to the function of senior engineer with associated pay-raise, citing the first couple of paragraphs of what you wrote above.

If they bite, give them a chance. If not, execute 'plan B'.

It sounds like the perfect place for you is to work for a funded/profitable startup that has less than 20 people working in it. Preferably smaller.

It's really the only way you get to wear all the hats and solve lots of different problems in lots of technology domains and IMHO the best way to become a true full stack developer.

I can't tell you exactly how to find those types jobs, but I can tell you I've managed to over spend half of my 25 year career working in those types of companies.

Well maybe I do have some hints. I guess in the early days I did a lot of networking and going to events and meetups and such.

Then within the past 10 years I have started blogging and podcasting which exponentially increased my luck surface area and as a result a lot more opportunities come my way.

Anyway, best of luck with it!

> exponentially increased my luck surface area

I love this expression. Coincidentally I owe my current job to a blog post I made a few years ago, and I'm not even a prolific blogger.

Unless you really care about the product (technically challenging or high impact on society), find a smaller company or even a startup to work with.

If you're in PDT or MDT timezone, interested in working remote for a startup (higher risk, below-market-value pay, great mission, small team, challenging work), feel free to contact me and we can see what happens.

You name two reasons that always should result in you finding another job: A) You do the job one level up and don't get recognized. B) You can't connect to your colleagues.

Look for a company that is quite different from your current one (e.g. a major software company, another size, another location) and then try again. If you recognize that these two points are still the same you definitely need to change something about your style. But for now changing the company seems the most reasonable choice.

Just because someone cannot connect with colleagues in two consecutive companies mean the person has to change something in him/her self. In the current working scenario, it will not be a surprise at all when a person with great attitude is not able to connect with this colleagues/work in most of the places.
What you say sounds a lot like looking for excuses. It doesn't matter if there are reasons for why it may not be you. The thing that matters is that you should always try to improve yourself and if you have two consecutive, independent experiences with the same outcome, then it's a good hint that you can start to work on yourself there (instead of improving your coding skills or updating your vimrc file, for instance).
Peter Thiel has this funny law that states "A startup fucked at its foundation cannot be fixed". I think we can generalise that and say that a company fixed its foundation also cannot be fixed. Your post is the hallmark of a toxic work environment and no amount of work from you can fix that. Get out as soon as possible.
Hi Throwawaypotato,

I was in a similar position. Non-software company, basically one of two developers in a group whose focus was business. We would occasionally interact with other software teams in other departments to integrate our systems, and I would cherish those moments; but it was clear that across the organization overall view of software was that of a necessary evil.

I tried to convince the group about taking a new approach to how we developed software, to perhaps have more communication between the sparsely distributed software team, I even made a presentation over software processes, how we could improve... nothing ever changed anything. All they really cared was that we made the wishes of the sales team real...

After a year of firefighting, dealing with poor processes, and feeling overall undervalued I resigned to resume my PhD. My advice is that you change to a software company, and in general that you join a company where your role is a first class citizen (I've heard similar complains of friends who are, in say, a finance position within a structural engineering firm).

On the other hand, I left with a strong impression that these type of non-software or software adverse companies are great candidates for companies to either sell services or to directly compete against with more efficient services... perhaps a route I'll one day take.

Cheers!

One thing that stands out for me is the ratio of onshore to offshore engineers. I have only worked in a few organizations with offshore teams but the experience has always been frustrating.

First, if you're working in an organization like this, it means they value cost management over product. I know that's a sweeping generalization because it's possible to build good products with offshore teams, but it takes tremendous effort, or unusual coordination at the offshore location. This brings me to the second point.

If the product work is being driven by the onshore team, at the ratios mentioned, then a large portion of your time will be coordinating with the offshore team. This can be a demoralizing process. I've often found that it would take me an hour to do what it took me 30 minutes to coordinate and the offshore team 3 hours to implement, for example. The response from management is that this is still a force multiplier and so it's worthwhile.

So as a rule, I avoid companies that do this and I walk away when the offshore cost savings buzz is in the air.

If you actually enjoy building software, then that's a special gift. Many people you'll come across in the profession regard it as a job. You should seek an environment where the people seem to have an active interest in these things.

I don't know where you live, but you might look into an HN meetup or something similar. As others have said, work on building up an informal network. It only takes one good connection to make a great difference in your professional life. Good luck!