Ask HN: My boss doesn't think I'm doing good work, how to proceed?

384 points by dazeandconfuse ↗ HN
Dear HN,

I'm working my first job out of college and I really enjoy it. I get to do fun computer vision stuff, write Rust, great pay, great benefits, short commute, etc. And my manager and her boss are both super smart.

However I'm a bit frustrated. I thought I was doing well - I'm working hard on the project I was assigned to, and it's coming along nicely. The deadline was pushed back once (which that seems to be very common at this company), and the new deadline is still in the future.

Two weeks ago, my manager's boss schedules a meeting with me and my manager. My manager is busy putting out a fire so it's just me and the boss, and the boss made a some of criticisms of me. I've been thinking about them and I can't shake the feeling that some of them were kind of unfair. (To be clear, I absolutely did make some mistakes on this project that contributed to it taking longer than it had to.)

First, he basically tells me this project should have been finished a long time ago and he can't believe it's taken this long etc. I had no idea that he felt this way before the meeting - I've mostly just been working to get it done before the revised deadline my manager gave me.

He looks at the code and criticizes design decisions, some of which were made largely on my manager's explicit suggestions. (When I bring this up, he says I probably just misinterpreted an offhand comment of hers as a hard requirement.)

Part of the reason it had taken so long is because I put a substantial amount of work into a part of the project that's no longer necessary due to changing requirements, which I don't think I could have forseen. I don't think the boss appreciates that and just sees that the amount of usable output is low for the amount of time I'd been working.

He did also make some criticisms that I thought were fair. For instance he said I should have looked at other projects to see how they accomplished what I'm trying to do. That definitely would have been a good idea.

After our meeting, my manager and my boss had a meeting with just the two of them to discuss the status of our project. I have no clue what happened in that meeting and I haven't heard anything about it from either of them since.

As of today the project is pretty much done (save for some procedural details). I'm happy, but I can't stop thinking about that meeting. I really did work hard, so it's demotivating that it feels like the result of me working hard is unappreciated.

I'm not thinking of quitting over this or anything, but it seriously bums me out. I don't know if I have a future at this company if the boss thinks I'm not a good dev, and I really like it here. A month or so ago they added someone else to my project and I trained him on my code, and he's super smart and capable, and I'm thinking that now they probably feel that they could fire me if they wanted and not lose much.

But the saddest part is that I really admire my manager and my boss, and I wanted to make them happy to have hired me, and now I feel like they probably aren't. I guess I can try to learn from my mistakes and get over it, but at the very least it feels like an inauspicious start.

How should I proceed?

505 comments

[ 4.5 ms ] story [ 317 ms ] thread
Shrug it off and keep your head down. Keep on producing good work. Your manager should of deflected this sort of stuff and you are a junior developer. The responsibility doesn't really fall on you.

Take some notes about what you can do better on future projects and try and improve. Rinse and repeat.

Gj on delivering.

DONT keep your head down though. That's part of the problem. Get out of your bubble/headspace/etc and talk to other devs. Compare approaches. Reach out to others to see how they're solving problems. Even problems you're not having. Especially those actually, for when the time inevitably comes when you have to deal with those issues.

As a new person you can't possibly know everything. If you dont have someone showing you the ropes then you have to take initiative and talk to others.

Especially in larger orgs, this is invaluable.

It really seems they isolated him and / or he's working solo on a project. Dangerous place to be in a mismanaged org.
Be slightly wary of taking advice from people that use 'of', instead of 'have'.
Or, take the opportunity to teach them the real phrase and explain that because of people's verbal speech patterns it confuses younger generations...
>Your manager should of deflected this sort of stuff

Also keep in mind that there is a good chance the manager might have had OPs back in all this, maybe it's just the managers boss who has unreasonable expectations (maybe due to poor communication from the manager about changing requirements etc).

Unlikely because she left him alone
Agreed. No reason to panic. Your experience is not at all unusual. The further up the management hierarchy you go the more results oriented they become. At a certain level of management profit & loss, delivering faster at less cost become the focus of attention. Your immediate manager might be coping some flak from his manager. But that is not for you to be concerned about.

Simply continue to produce good work. Learn from the more senior devs and remain respectfully accepting of comments from your manager's manager and anybody further up. Remembering that they do not have sufficiently detailed knowledge about what you do but they like to think that they do. Being diplomatic means that you never debate with them. If they make any substantial suggestions, discuss them with your immediate manager and ask them for advice on how to proceed.

>but it seriously bums me out

Talk to your manager. If you don't have 1:1s, ask to have routine meetings. If your manager can't help you, alleviate your stress, or guide you forward, look for a new job.

It's hard to really say anecdotally if things were fair or unfair, but your manager's job is to help you (and selfishly, for you, they should help you grow in your career).

(comment deleted)
Yes, you should be able to tell your direct manager basically what you told us. Copy and paste into an email if that’s easier. (Your tone here is fine.)

It does sound like your manager’s manager has poor people skills / favors a more confrontational management style. If you have a good direct manager that can be tolerable, up to you to decide how much it bothers you.

You should switch managers. In this job market, no reason to keep working with them if they aren't working for you.
Talk to your manager about it, 1-1.
This is the first advice I agree with.

See how your actual manager describes what you just went through. If they're supportive, write them an email thanking them for their defense of the aspects where you felt attacked by your super-manager. Having it in writing will make sure it's _real_ and you're not being gas-lit.

If you don't get it in writing, or if your manager isn't supportive during a 1 on 1, then it's time to start looking for another job.

Indeed, this is what you should do. Proceed a bit carefully if you don't have a good relationship yet with your manager: by good relationship, I mean knowing them enough to figure out how much you trust them.

You would also benefit from talking to other engineers who have more experience, especially in that company. It is easier to talk casually to people you don't report to.

It is difficult to give more concrete advice w/o more context:

* a "best case" scenario is that the senior manager (your manager's manager) was having a bad day, maybe got themselves into trouble for X reason. Managers are human too.

* another scenario is that your senior manager is actually still inexperienced. E.g. did not have time to talk to your manager first and then decided to skip directly, etc.

* a worst case scenario is that there is something weird going on between your manager and his manager.

[edit] A manager's manager talking to an individual contributor (you), especially about technical details of a project is just weird. It is hard for me to think of a scenario where I would do this. Why ? Because as a Manager's manager, you lack context about why certain things happen. And the person responsible for your outcome is by definition your manager. You mention both manager being smart people, "knowing their stuff": they may lack experience on the "people manager" side of things. That's often a drawback of working in very technical environments.

Many similar good pieces of advice in sibling comments, but I'll add my agreement to this one.

From the subject line, I came in all fired up to start with "just quit; it's the greatest market for SWEs that the world has ever seen". After reading some of the details, I'm inclined to think "eh, it's some poor leadership being shown, but it doesn't sound irretrievably broken anywhere yet."

Start with your direct manager and setup an hour long 1:1. Let her know that you have some mixture of confusion and a small amount of concern, but that you're focused on understanding the feedback and, where appropriate, using it to improve. I think it's terrible form for your manager to bail on the 1:1:1 meeting and, if she had to, your skip-level manager should have rescheduled it. It's not just development for you, but it's development for her and while you should be having quarterly or so skip-level meetings with them, you should never be in a position as a fairly fresh grad to have your project work reviewed in a setup like this one. Poor leadership technique (IMO), but it's not evidence of anything toxic if they're open to "yeah, that sucked; we won't do that again".

I'm often in the role of wondering "why the hell is this project taking so long?!" and simultaneously realistic that there are generally very good reasons for it. (How many software projects in the history of world took wildly less time than originally contemplated?) Two years from now, I expect you to have developed a clear sense of how to explain those justified delays in a way that's convincing and non-defensive, but it's pretty damn unfair to expect you to be able to do that now, especially if you're a summer 2021 grad. You're spending all your time busting tail to just get the damn thing to work and someone's chirping about a second-order effect ("sure, it works, but why'd it take so long?" is just not a question that you're well-positioned to evaluate yet).

I think your overall approach and attitude here is going to serve you well in your career and dive into this one head-on and with curiosity with your direct manager. You've always got the great SWE market to fall back on, but this one seems like staying and fixing is a better plan.

I would say something like:

Wow, actually that feedback is quite surprising to me. I’ve been working hard on the project, and all the feedback I’ve gotten until now is that it was coming along nicely. A lot of the design decisions you pointed out were direct suggestions from (manager) and I thought I was doing a good job by implementing them thoroughly. Maybe we should have this meeting again with all of us in the room?

I'd change that last sentence to "I will work with my manager to address these issues right away." The meeting with the three of them should have never happened. The direct manager should have been raising these issues along the way. It doesn't help that it sounds like the direct manager is a weasel. Couldn't attend the meeting because of putting out fires? Please.
This boss telling you that they felt the project should have been done a long time ago: I wonder who that comment benefits? Feels like no one. You get bummed, they give late feedback without a lot of constructive aspects to it.

I am trying to think of one way it was useful to tell you that, but I can’t.

Seems like you should feel justified in not being a fan of working under this person. What you do with that is hard to say. Sounds like you got to work on a cool project and got to mostly solo it. That’s pretty great for a junior.

I agree with this sentiment. And in fact, I’ll take it further:

I’m not sure any “you should have” phrase is ever beneficial UNLESS it’s in the context of giving guidance about the future. And even then, it’s better to phrase it as “next time, I would suggest…”

This has been a pet peeve of mine for a long time. “You should have” phrases are often used to berate or make the recipient feel bad while acting as a vent for the sayer. By grammatical definition, they refer to events / things in the past and suggest an alternate course that didn’t happen. A theoretical construct. Good for language construction, bad for feedback.

I’d love counterexamples if anyone thinks differently, btw.

The only counterexample I can think of is the present tense.

For example: You have kids, you should have life insurance.

Yes - you're absolutely right. I should have (ha!) specified I meant in the context of a past participle ("you should have <verbed>"), not the present suggestive (is that the right term?) -- eg "you should have <object>" or even "you should <verb>"

Man, grammar is weird. ;)

Your phrase is also a good replacement for "why didn't you ..."
So i work with this person that is really slow. She should have accomplished a task in 2-4 weeks and it took her 6 months. We gave her 3 months to accomplish it. So at some point you do need to point out that a task should not have v taken as long as it did and ask the person why it did. Was there some sort of unknown issue that caused the task to take 4x longer than expected
This is a great example - thank you. Rephrasing as a "you should have", it would read:

"You should have been able to finish this in 2-4 weeks, but it took you 6 months. What went wrong?"

That's actually useful feedback, I think. It highlights that the giver believes the recipient has abilities that exceed the demonstrated result.

My one quibble with this example -I sincerely hope there was feedback given the entire duration of those six months. Being told far after the fact that you are doing X thing poorly is a kick to the self-esteem.
Oh absolutely, it was pretty clear that this person wasn’t on track 4 weeks in. And after that you have to keep communicating that we were expecting more progress… what are the issues will you make the deadline etc.
(1) I don't think you can reliably say after the first suck project. Some people are a bit slow at picking up new things, but become very productive after a while.

(2) Others pick things up super quickly, but never become super productive as the first group.

And of course lots of variations of people that don't fit neatly into either group.

I am in group (2) I think, but in my experience you really want people that become strong experts after a while. They are the ones I have seen do the best over the long term.

Salman Khan talks about this a little. He said one of the things they learned from the Khan Academy is that you can sort of group everyone into either "convex" or "concave" learners and they all basically get to the same level of competence by time T, and it's more a matter of do they plateau at the beginning or at the end.

He seems to be very careful about placing value judgements on which is "better", and he's also very careful to crop the graph near time T. His big push is to make sure that teachers understand that people that are categorized as "slow learners" actually often take just as long to get to the same level of proficiency as "fast learners".

Yes, agree with all that :-)
(comment deleted)
Try to break down the tasks so that their single task doesn't take more than a day/two, see how it works out. Some people seem to operate better on short, simple tasks with visible understandable impact.

Also a 4 weeks task for a member of a larger team is something that turns them into their own development shop and it's probably not something you want to have in a team.

I also understand some will say "a senior dev should manage such a long task on their own" - well maybe they should and some might, but in the end it's not their business and they can jump the ship 2 weeks before the deadline of a 3 months task (seen that) - that's why good project/tech/team management is a skill ))

It can be used in the context of explaining what changes that need to be made to someone's work for it to be acceptable. "You should have used established crypto library calls here instead of rolling your own SHA-256 implementation with probable bugs. Please fix it"

I also think it works well, better than "next time I would", for giving someone permission to do things. "You should have called me when the client asked for XYZ" sounds more forgiving and less venting than "Next time call me when the client asks you for XYZ". Or "you should have felt free to take a mental health day". It's more empowering.

>"You should have used established crypto library calls here instead of rolling your own SHA-256 implementation with probable bugs. Please fix it"

in this case, i would say something like "hey, we need ot[or should] use a cryto library here since it's battle tested, rolling your own crypto might have issues [yadda yadda yadda]".

it makes it feel like it's not a single developer decision, but a team/company wide one.

Your first example is great -- in a correctible situation (as with code, or writing, or design), it works and is helpful. You should have used, should have written, should have drawn, etc.

But I respectfully disagree with your second example:

"You should have called me when the client asked for XYZ" is _exactly_ the kind of phrase I find unhelpful. All that does it lay blame - it says you did something wrong and in a perfect world you would have done something right. Your counterexample is the kind of feedback I'd MUCH rather hear.

"Ok, you didn't call me when the client asked for XYZ. That is fine. If it happens again, call me." It addresses the situation that happened, emphasizes that you are indeed forgiving, and gives guidance about how to handle it in the future.

I agree my second example was poor. The intention was "should have" would be used when you had an optional, not imperative, future choice. "If you thought something was wrong, you should have (implicit or explicit) felt free to call me and escalate it." And (upon reflection) I don't think it really expresses that at all.

I still feel like "If you needed a mental health day yesterday you should have taken one" can be empowering more than "If you need a mental health day in the future, take one", for the same reason that the middle example is poor. It shifts agency (and blame in the second example) to the person you are talking to. But I no longer even feel as confident in that example either, and would welcome pushback or not on the point.

Thanks for pointing it out. I'll try to be more aware of that going forward.

All good! I hope my respectful disagreement came across that way (and not combative). I appreciate this exchange.
It totally came across as a non-combative (and friendly/respectful) disagreement.
This reminds me of a case of a director asking a "tough question" of a dev team as a way of providing feedback. I don't think the feedback was taken the right way in this case.

I was in a meeting where a group of devs were presenting a technical solution to our director, who was overseeing the product as a whole. At one point the director asks, "Did you look into other companies doing this and potentially licensing their solution to the problem instead?" All the devs were confused because they were tasked with building a technical solution in-house. I was confused as well because it seemed like a question the director should've asked a PM or one of the dev leads, not the grunts who were tasked with writing the code. The devs presenting were flustered by the question and didn't know how to proceed. The director continued with the line of questioning and it was clear he didn't like what he saw in the presentation.

The experience left a bad taste in my mouth.

Anyway, a couple weeks later, my manager mentioned the incident and told me he asked the director about it. The director admitted that he had only asked the question to get the team thinking differently about how they were solving the problem and cut through some of the technical details they were providing him. My manager thought it was a clever tactic, but I thought it was manipulative. I also think he just lost his cool since the solutions weren't to his liking and wanted to take it out on the team a little bit. I didn't think it was a great way of building trust with the team, nor do I think it made them think differently about the problem.

I think the question is fine, and a good one, but the motivation should have been made explicit, certainly no later than the end of the meeting.
At my workplace, we have explicitly banned the use of "should have".
More generally, I would say that any advice of the form "don't do X" is useless unless paired with "instead, in that kind of situation, for the goal(s) you were optimizing for, do Y".
I think it is useful to let the employee know what are the accepted delays in this company, for future projects. But the boss or the manager should have said that earlier, at the beginning of the project, then the employee knows what to expect.

That's quite clumsy to say it only once the project has been released. Anyway, don't take it too personally, he/she probably just wanted to keep the pressure on you so you keep improving and never stay satisfied with your current pace. That's not very good management, but that's the way it is in most companies.

> I am trying to think of one way it was useful to tell you that, but I can’t.

It's useful if it's a warning that OP isn't meeting expectations. Getting that feedback before a formal review, when there is still time to turn it around, is beneficial.

I've seen junior engineers be blindsided during a review more than once. They go in thinking they're doing great, because they've gotten no incremental feedback and lack the experience necessary to guage on their own, and then hear they're not cutting it. Getting this feedback before review time (and preferably even earlier than OP did) is good, even if it hurts to hear.

Obviously that feedback should have gone through their manager though. OP's manager should have rescheduled this meeting if they couldn't make it, since they probably already knew the feedback was negative.

I'm not sure. I'm glad he told me, otherwise I wouldn't have known I was undershooting his expectations. I did make mistakes that made the project taking longer than it had to. I guess if I want to keep working here I'll need to find a way to make fewer mistakes like that in the future.
I think just about every new developer makes mistakes that make a project take longer than it had to but this is how you learn and improve for next time.
Mistakes are a part of life. Do not be ashamed of mistakes, you will only limit yourself. I'm sure you're already aware of this, but sometimes we all need a reminder.

As for the project, you should consider how much mentorship you received. If there was none, then obviously a high degree of mistakes is natural, especially for someone new to "professional software development" (if such a thing exists). If there was a lot of it and you blatantly ignored it, you should take responsibility for it.

Most importantly, keep a healthy work-life balance. It's easy to forget it, especially when first entering the workforce and thinking that you need to "prove yourself". Most of us are average; if you are too, accept it and keep living as best as you can. The 10x coders can keep on 10x-ing, but the world depends on the average person.

I think your last statement indicates how bad that feedback session reflects, not on you, but on the “boss”. On the one hand, we all have bad moments, that might have been theirs, which sounds pretty terrible though, especially in context of you having limited experience. On the other hand, while if you discuss he/she would probably apologise, it sounds exactly like the kind of boss that will throw you under the bus when the going gets tough.

Early days. One of the key things you get with experience is the cold blood to wait some things out and to not let minor or major incidents get under your skin. If/when this becomes a pattern assess it against the rest of your experience and decide on your best path forward.

> I guess if I want to keep working here I'll need to find a way to make fewer mistakes like that in the future.

Communication is the answer.

If you think you're going to quietly go back to your laptop and solve all of these problems by being more careful, you'll probably end up disappointed.

You should take this as a learning opportunity to improve your communication skills. Communicate early and often. Ask for feedback. Ask for clarification. Ask for code review. Ask for a performance review.

Also: There is some good advice in this comment section, but there's also some absolutely terrible advice. Please ignore all of the low-effort comments insisting that you should quit or the comments suggesting that your boss's boss is malicious "gaslighting" you. This may be your first stumbling block in the workplace, but it won't be your last. If you make a habit of shutting down, quitting, or becoming resentful in these situations then you're never going to learn how to build actual healthy relationships in the workplace. Do as much as you can to learn from this, but make sure you do move on as quickly as possible. Don't let it eat you up.

To piggy back on this, you will most definitely work with and for people who are malicious and gaslight you. Not saying that is the case here, but even if it is, a valuable skill is learning how to cope through it and work with those individuals. It isn't easy, but it is more sustainable than just being a victim.
You want a strategy that works regardless. E.g. if your skip-level manager tells you a project should have been completed a while ago, and this is the first time you're hearing about it, it's better to say "let me follow up on that after the meeting and get back to you, because it's a bit different from the timeline we've set within the project" than to push the blame onto your direct manager, get defensive to your skip-level manager, apologise, or agree to spend the weekend working. Get some breathing room, put together a paper trail of emails and meeting notes, and let everyone cool down.
I've had modest success with this kind of thing. Managing to stay calm and maintain your internal composure is very important in the moment.

In a situation like this you need to be able to think on your feet and choose your words carefully, which can be very difficult if you have reverted to a defensive or fearful "fight or flight" mind state.

I personally have benefited a lot from biofeedback and meditation over the years, if only because it has given me the tools to recognize when I am in a fearful state and calm myself down.

The "fear is the mind-killer" mantra from Dune is not really fiction!

I mean, at the baseline I think it's useful to know you're not meeting expectations. Of course it's more useful to know in a timely manner.
A project being late involving a junior dev due to architectural and scoping issues is probably not because of the junior dev but the tech lead and product/project manager. The junior dev is still at risk in practice because the team is at risk and their manager can use them for the blame game.

In this scenario, I'd work through a 5-whys for figuring out why the multiple reasons why the "you're effectively on warning for being fired, and certainly not being promoted" just happened, and the reasons behind them. Ideally with someone at least a few years ahead of you who, and not at the company to avoid politics/bias issues. Maybe you need a tech lead or a senior dev mentor. Maybe project planning is broken. Maybe product expectations are broken. Maybe they don't know you're a junior dev and that means basic stuff like teaching you how to work in a team. Once you've done that, then repeat it with your team: they want to do better too, hopefully.

From there, if possible, maybe get it fixed... but it's not your job to fix team culture as someone junior, so also look at switching teams (managers) or even companies. If you believe you're being diligent and working hard, it's a net loss for yourself and better functioning teams to keep underdelivering for reasons not under your control. Other places would be happy to have you, help you be more productive, and your career + their results will be better. Leaving at 1-3mo point is not that bad on a CV (and you can drop it later) -- leaving at 6mo-24mo is the bad one.

I wanted to post in this thread saying all of these above things but you put everything I was feeling into words perfectly.

I think this is the most accurate and actionable advice in the thread.

(comment deleted)
I have this feeling most workplace structures are pressure trickling systems. Nobody really knows how, but things get pushed down blindly, everybody grinds hard and higher ups complain about progress not being good enough. People grind again through fear. Rince, repeat.
The first meeting where your manager just abandoned you and you ended up talking to your manager's boss is totally inappropriate. Being so new to the job basically all the responsibility is with your direct manager and her boss is wrong to dump on you without your manager present.

I'd give it another chance though, sounds like the work is fun and maybe you can communicate your concerns to your direct manager.

The plan was that she would be present? Maybe the boss' boss just had a plan to whine at her, but only OP showed up.
Right that's a huge failure of the manager in this scenario. If you can't make it, do your best to get the meeting rescheduled. Don't just bail and throw your junior dev to the lion.
Agreed. OP should schedule a meeting with the manager to find out how they're doing, if expectations are being met, etc. It's entirely possible that things are just fine, but the boss has the wrong idea about this particular employee.

I think it's a sign of bad company management, but it's by no means a dealbreaker. i.e., not something to quit over.

Before that, OP should get a clear set of expectations from the manager. If a manager doesn't express clear expectations and the metrics used to measure outcomes, then they can't expect them to be met.
Absolutely do schedule a meeting with your manager. Ask for actionable advice, ask for goals between now and review time or this will cost you.
Completely agree. As a general rule if a junior developer does something “wrong”, unless it purposefully malicious, it’s on the manager.

OP, I’d say keep this situation in the back of your mind and reevaluate in a few months. If it happens again, start the job search.

Yeah, this the root cause.
Anytime your skip-level steps in to guide your work directly, it’s either a failure of your manager or the skip-level themself.
Well, depends on the specifics: I was embedded in an operational unit so neither my manager or their boss were techies. It was often necessary for urgent issues for the upper boss to talk/meet with me directly to hash something out and translate from operational needs to technical capabilities and logic.

But both of them always filled each other in, and it was never about any performance issues on my part.

This was my reaction as well. The skip-level should not be the first person to let them know they're perceived as under-performing. OP: Schedule a 1 on 1 with your direct manager and have a conversation about all of this.

My skip-level at my first MAAAM job used to snipe at me when I was a new hire. He told me to my face he "would not have chosen me" and "didn't know how I got in." It made me so angry it was all I could do to hold my tongue until I got the fuck out of his office. But I went on to become very successful there, and he eventually had no choice politically but to support me. He got managed out a couple of years later.

> He told me to my face he "would not have chosen me" and "didn't know how I got in."

Holy shit. Glad that this person got managed out... eventually.

Can be motivitating words for some people. Coaches will say stuff like this to a talented athlete who is underachieving, if they think it will light a fire.

A good manager would not say stuff like that unless he really felt the person would take it the right way. A bad manager will say stuff like that to stroke his own ego.

I don't think tech managers should be taking management lessons from Full Metal Jacket in any case. But I sat at a lunch table with this guy every day for 3 years, and I know he was not trying to motivate me. He was trying to keep me in my place.
Coaches are not involved in hierarchical relationship where they could fire you or make your life hell. Neither they are involved in the decision of how much you should earn or if you should be promoted or not.

So those are absolutely different sorts of relationships. The coach is not your superior so it changes everything about what they could say to you and the consequences it could have on you.

So no, a good manager should never say stuff like that. It's the sort of words that can be the involuntary sparkle which could ignite depression or even suicide. And for what ? A better performance at writing crud programs ? No. Professional things are not important enough to say any of this.

I would also add that sports can be highly emotional games, and getting a player angry or passionate (assuming they direct this at the other team) can actually be productive. This isn't the case with work that requires higher level of cognition, and not smashing someone against the wall to get a puck from them hah. I wouldn't want my subordinates to be angry at me or the rest of the organization for any reason.
sorry, not aware of that acronym, is that a new acronym for FAANG? I could see facebook turning into meta, google to alphabet... can't see netflix in there? is the other M microsoft?

Or is it something else?

I assume it's: Microsoft Apple Amazon Alphabet Meta, or some structure-preserving permutation thereof.

I immediately hate it.

I know how that "I wouldn't have hired you" thing feels. I didn't go to college for software dev, but am now working at my second job. When I got hired at the first, eventually a conversation came up that was supposed to be light-hearted with all the employees at a lunch (small startup), and the CEO (who is the one who had interviewed me) said "when you got to work coding, you seemed very experienced. But had I known you were only __ years old, I wouldn't have hired you."

Not sure if it was meant to be a good job, or a "you're lucky."

I had a VP bail on me in a meeting with the CEO when there was an issue and it was the VP's responsibility. It was sudden and without any explanation: just a no-show. I don't think it was a coincidence.
Yup. I am concerned, because it sounds like a lack of mentoring on a technical and an organizational level. I've made similar mistakes and I dislike it, but my lesson is: a junior should have mentors they can lean upon and draw into meetings for technical and political support. Or lean upon just whenever. It can grow overbearing if the junior doesn't grow wings, but under-mentoring and seeming abandonment inside the org can be much, much worse.

Like, why are they complaining about this on hacker news? They should be venting to their manager (we can see why that fails), or some engineer with some clout they trust. If they don't have these avenues, that can turn sour quickly.

This, big time. The other answers seem like victim blaming.
I took from the TP that the direct manager was meant to attend the meeting but couldn't for reasons. Obviously the meeting should have been rescheduled.

I also got the impression that the manager's boss was venting... presumably they were feeling some pressure from elsewhere to deliver the project. Not a great sign that they took it out on the junior, but this would normally be the job of the middle manager to deflect / explain / shield the junior from.

To the OP: try to not take it personal, the manager's boss was almost certainly venting their own frustrations and "taking it out" on you. Very unprofessional but it happens. It's very unlikely to be a real reflection on your performance. Try to take it as a growth experience to build a bit of "thick skin". You shouldn't have to but it helps to have it (especially if in future years you become the middle manager who has to absorb the venting). Hopefully your direct manager will give you more useful feedback on your performance and perhaps explain the boss's frustrations.

I'm sure the vast majority of the criticism of the project should have just been directed to the manager. Taking too long on a single part can definitely be directed towards a junior dev but there should be some guidance attached to that (check in more often, etc). Anything that doesn't fall under the specific tasks given to the engineers is entirely the manager's job.
If you are writing code every day, it works, and your peers (not your manager) are using it to meet deadlines and ship more working code, don't listen to your manager. If your code has observations and design issues it shouldn't get merged unless everyone is ok with the tradeoffs, if it's being merged and people are not ok and you are junior developer, it's your managers fault and you probably need better process in the company as a whole.

But seriously if you are writing rust code every day and it works and none of your peers is visibly complaining to you, you are probably doing right and your manager is just not doing their job at filtering high frequency nonsense from chattering at the management level.

OP's description sounds like they are working alone on this project and that there's no peer review. Which sounds like a weird thing to do for a junior dev that just got out of college.
Yeah that definitely falls on "you probably need better process in the company as a whole"

If they really slipped a deadline because a junior developer wrote code with design issues even when it was pointed out by his manager, it's the managers problem. The way to deal with that is tell the developer "this is the new peer review process" and just stomach the delay.

It happens. Learn and move on.

Also, see if you can chat with the boss to clarify their expectations for you.

In the future, don't linger on a projects, no matter how fun you find it. The main principle should be "get it done." That's industry for you.

The one time I ran into a scenario like this it was an upper level executive looking to flex and show that they are the alpha. My manager and manager’s manager stayed after the meeting to tell him that my project met the specs perfectly. Later on I found out that every person who had been in the department over a year had gone through that exact scenario. I kept on working and ultimately it was fine, but the department had a lot of churn with people mentioning this practice in their exit interviews, end result was him getting promoted even higher.
> end result was him getting promoted even higher.

because of course it was :(

Start sending out resumes, sounds like a dysfunctional management structure, probably wont get better and you'll be happier somewhere else.

If a lateral transfer seems possible, tell HR you would like be transferred out of your manager's boss's org structure.

Go above manager's boss's head and file a complaint against them for incompetence and unreasonable expectations: blaming workers for delays caused by poor project management is counterproductive and unacceptable CYA behavior. (Ideally once you already have a better offer in hand)

I'd advise against this. In many companies HR sides with management if he works for one of these companies HR could even report what you say to them directly to your manager. Be very very careful about this.
> Go above manager's boss's head and file a complaint against them for incompetence and unreasonable expectations: blaming workers for delays caused by poor project management is counterproductive and unacceptable CYA behavior. (Ideally once you already have a better offer in hand)

This is terrible advice..

Why? If you already have a better offer in hand, let the company know where the incompetence is on your way out the door.
Scenario 1) You did produce substandard shit code that could have been done in a week. In that case, figure out what you did wrong and learn from it. Most fresh college grads produce shit code, it's just a thing. No one holds it against you because you're young and new. In this case, recognize the advice from someone better and more experienced than you, and just do better next time. Don't take it personally as an attack on your abilities and character. I'm sure you're a nice person. I'm also sure as a new college grad, you have a lot to learn still. This is one of those times where you can use an experience to learn.

Scenario 2) You did a fine job but your manager is unable to appreciate that. In this case, you still have more to learn but not on the programming side (well, probably still more to learn there, but not relevant to this situation). This is a lesson on how to deal with bad managers. They are not better than you, they do not own all of your time, and you have the right to leave at any time. As a dev, you will probably be able to find employment again easily. Use this to your advantage and any time the pressure from this bad manager rises, remind them of that fact and be ready to call their bluffs. Polish your resume, and get out of there in 18 months (bad managers don't get better). Leverage your position to a better job at higher pay.

How to tell between Scenario 1 and 2? That's hard to say without more specifics, but either way I think the takeaway is to try to learn what you can from this and don't take it too hard.

The professional habit I developed to manage scenario 2 started out as upward directed leadership and sometimes turned into simply coaching my bosses to be better themselves. There's a part that jumps out to me in the OP, the requirements changed so a lot of his work went to waste. Incredibly common. Equally common is management not realizing that it's something that they should take ownership of.
Yes, coaching your bosses is something that most people completely overlook as an option. After all they are bosses, and you don't question the boss!

But once you spend some time in the industry you've seen enough that you can recognize the mistakes of your superiors, and you feel comfortable enough to point them out. Because what are they going to do, fire you? Better to be fired by a stubborn boss who refuses to learn than to work under one, I'd say.

Welcome to corporate America, where you are a disposable cog in a machine of managers trying to build their own empires and save their own asses. You either learn to play the game or you get crushed. If this is a name band company where the stock and benefits are worth it, then stick it out and find your way to move to another team. If this is a no-name company, then think really hard about what your future career looks like there and whether it's worth it relative to other opportunities. Are you going to get fired? No probably not - they probably aren't giving you two thoughts and it was as much about a manager posturing or venting as anything. But, that tells you something about the quality of management above you and you have to decide whether it is worth harnessing your career to them.
Unless you want to be seriously underpaid into the future and lag in promotions, virtually nobody has a future at their company as a junior developer. You could easily work for 20-40 different companies in your lifetime. Just make sure you are always marketable and what your manager thinks matters a great deal less.
When this sort of stuff happens, you should have a paper trail that you can point to call out this kind of BS. This is why story grooming, sprint planning, and documentation are your friends and not some useless chore—they keep people accountable.
Start updating your resume and applying for other jobs. If you don't like it there then you will always have a gap between your performance and being happy.
> Part of the reason it had taken so long is because I put a substantial amount of work into a part of the project that's no longer necessary due to changing requirements, which I don't think I could have forseen.

One of the things that I've experienced with new grad junior devs is that there's an adjustment needed to change from academic working to business working. In academia, usually the professor gives an assignment and you have to go off and figure it out, without bothering the professor, no matter what. In business, it's much better to 'bother the professor' regularly and check in affirmatively on whether the assignment has changed, or to tell the manager about challenges that arise to re-plan together. As a junior employee, you're not going to know the full business context of what makes sense, and checking in can save weeks of time that would otherwise be spent off on your own.

Not sure if that's the case here, but certainly something you could consider going forwards to prevent similar situations.

Thanks. I definitely will take that into consideration in the future. I'm not sure if it would have helped in this specific case but I can definitely think of other situations at work where taking your advice would have helped me.
Pushing back on changing requirements is also a good skill to pick up. Part of it is getting a really clear agreement on what you're actually doing - what's the real scope of work - and actively changing the agreed plan when requirements change. I also find it helpful to highlight that changing requirements will have a cost in time, etc.

There's also a an art to getting together a good MVP efficiently. You can treat lots of added requirements as shiny feature requests, and prioritize them below getting the MVP working. Having an MVP that people can try out and see it working at all goes a long way towards building belief in your work. At the same time, you want to build flexibly enough that the MVP can expand rationally to take on those added feature requests... without writing in SO MUCH generality that nothing ever gets done. Doing this well is a skill learned on the back of many failures and tedious refactors... But efficiently getting a demo+MVP is golden, even if you build up some tech debt to get it.

I'll add here that there's a ton of nuance to "pushing back on changing requirements." My rule of thumb is this: program managers should understand the expected and worst-case consequences (including baseline time, switching costs, stepping on other team members' toes, etc.) of any proposals to expand scope, and as an individual contributor it is vitally important to be vocal to ensure they understand the full dynamics.

But if and once they do understand and acknowledge the consequences, and still say a scope increase is justified, it's highly highly likely that they have more business context than you. Document the decision, of course, but fundamentally trust your team.

I’m afraid the boss’ boss was talking with the wrong part of your team, in that his criticism really seems made for your boss, not you? That said, you were not treated like a novice at all, being given a fair share of high-level feedback. Take it as a nudge to improve and do better, without thinking too much: it will be your manager’s job to assess your output fairly.
The 'bother the professor' part is key. With new teammates, I want them to reach out if they're on a project I'm leading. If things look like they're going well - then it's great to get positive feedback. If not, better to change direction early (lost work due to changing requirements).

Do you have a weekly 1:1 with your manager?

No, I don't, is this something you think it'd make sense for me to request?
Yes, or just schedule the one-on-one yourself. You have Outlook, same as them.
It really is the solution to everything. A shitty coder who communicates well will do better in a corporate setting than a good coder who doesn't communicate.

My advice to you: 1. Put serious effort into Slack (or whatever your company uses). It is just as much a part of the job as writing code 2. "You don't get a second chance to make a first impression." I'm not saying you should definitely change companies, but you should seriously consider it, as you are now going to have to put in a ton of effort to regain trust. There is a good chance that you'll have a better ROI just putting in that effort at a new job instead - if you kick ass in your first 6 months to a year, you will enter into a flywheel of being well regarded which makes you more effective, which makes you more well regarded.

While changing requirements are outside of your control, clearly the consequences affect you, however unfairly. It's a skill to predict what might change and which parts of the project could end up being wasted time, and you will develop it with experience. I think being in continuing regular communication with your manager and team members as others are suggesting is also a good idea and partially for indirect reasons, because you might pick up on some clues of what these things outside your control may end up affecting how your performance is perceived.
Definitely, I remember as well, that everything they hated me for in school was super beneficial in business. Copying other work? Amazing. Telling boss that I don't have time to do the new task? Trendemous. Solving issue without using latest tech that I just learnt? Incredible. Compaining that some parts of task are harder than anticipated? Brilliant.

The only hard part is to bring fake absences into this mindset, so I can be praised for them.

You called in sick yesterday and went to the beach with your buddies? I'm glad you did! We all need a mental health day once in a while. Being happy actually makes you more productive in the long term.
if your manager is ok with it, don't register it as a sick day. Makes it potentially more complicated with the company doctor. Just consider it a workday spend on ...whatever. Manager being ok with it means you deserved it though :) (EU based engineering manager speaking)
company doctor?
In EU companies have to appoint a medical expert that checks worker's health (for free) upon joining the company, and routinely (1-2 times a year, depends on country I guess). Edit: Could be something that only companies whose workers have to do physical labour ("blue collar" jerbs)

If you call in sick for more than three days you usually go through your own doctor, so that you get a certification that you're taking X days off in order to cure yourself

It is compulsory at least for all companies over 50 people. There is a three level risk profile of the work the team does that assigns the respective doctor hours to the team. That is mostly for work related incidents or prevention as per the EU legislation.

For long term absence each country has different rules and paperwork.

EU citizen here, never heard of that, what country is that?
It's similar to what I see in France
.at .de .it .nl .no .pt .se for certain
interesting, we don't have it in dk, never heard of a company doctor or anything like it
I know the UK isn't EU any more, but I've never seen that before we left and I've worked in lots of companies in the UK, big and small.

In theory you should get a sick note after 3 days, because the government pays SSP (statutory sick pay) if you're ill, but in practice most companies pay you at your normal salary rate (if you're permanent, not per hour) and don't bother asking for sick note as the SSP is little more than minimum wage. Of course, this is in tech, I know that there are a lot of crappier jobs where employers trust their staff less, and I suspect in those industries the sick note is very much required.

> You called in sick yesterday and went to the beach with your buddies? I'm glad you did! We all need a mental health day once in a while. Being happy actually makes you more productive in the long term.

Not quite. It's great when employees take care of themselves and make a point to enjoy their time outside of the office.

However, it's not really cool if you commit to be somewhere on a certain day, no-show, and then lie about being sick.

If you want to take a day off, that's perfectly fine. Please just communicate about it honestly. Don't lie. Reputation and trust are hard to build but easy to destroy.

Also keep your coworkers in mind in these situations. It's rare that engineering work exists in a vacuum without connections to other people's work. If your team mates have to fill in the gaps because you disappeared for a day without warning, that's not really great for the rest of the team.

"No showing" and "calling in sick" are two very different things.
Cross-cultural programmer here, and I can help.

In Europe, calling in sick when you're not actually, recognizably ill is a pretty serious breach of trust. No cutesy "mental health break" exceptions. That said, you likely have at least 20 days of paid vacation, plus holidays.

In the US, where 10 days paid vacation is the norm and you're often punished in some way for actually taking it, the occasional "mental health break" of calling in sick is winked at.

So far the companies I've worked at don't have "vacation" or "sick" days, they have "paid time off" (which is really great if you're healthy and really shitty if you're not).
Atleast in Finland there is a clear, legal, distiction between vacation and sick days. They are not exchangeable in any way.
Exactly. You can be out legitimately sick for 2 weeks, and then take a full vacation!

That's why it's such a breach of trust here to take a sick day in order to relax. A sick day is to recover from illness.

Uh, or you have allotted hours that you can use and will use? My boss isn’t my mother, they don’t need to know the “real” reason why I’m calling in sick.
A company I work with was recently acquired by a US company (I'm British). I was quite confused when, in a meeting, all of the Americans suggested that the company should implement mental health days several times a month. My thought was: isn't that what the weekends and holidays are for? It would be quite unusual for British employees to demand mental health days. Perhaps the lack of paid vacation explains the difference (Although, I haven't had a full week off since 2014 because I'm a freelancer, so maybe they have a point).
Slight tangent, I've been seeing a lot of companies from the US advertising remote roles in the UK and advertising "20 days paid vaccation + public holidays" as one of their "amazing benefits". I often wonder if they realise it's a legal entitlement over here and not seen as all that amazing.
its also.. actually quite bad, I can't remember the last 'professional' job listing I saw that wasn't at least 25+holidays
I agree, my last role was 25+ public holidays. They also offered holiday trading, which is a real "benefit" that should be advertised in my eyes. That allowed me to go up to 30 days annual leave + public holidays which was great. Current job is setup as unlimited with a minimum of 20 + public holidays, all in all I take about the same as I did at my last place but it's a bit less hassle to track.

Advertising 20 days + public holidays in the UK is basically advertising that you give people the minimum the law will let you.

I can assure you there is nothing "cutesy" about mental health. Feeling severely depressed/suicidal is much more serious than some minor cold. Thank god the US is moving in the direction where mental health is recognized as a serious issue. Comments like this show that we still have a long way to go.
> I can assure you there is nothing "cutesy" about mental health

You misread what I wrote, and then got angry about what you imagined I wrote. Usually I don't explain myself to strangers on the internet, since people who angrily misread also usually angrily double down, but here goes.

In the US, it is frowned upon to take a scheduled day off just to relax, outside of your annual 2 weeks of vacation. So you call in "sick". Since you're not really sick, but want to relax, you call your reason for illness a "mental health day". I characterized this practice as cutesy, because it's a cutsey repurpose of the concept of sick day for self-care. It's not a mental health crisis, it's relaxing. But as long as you characterize it that way, it gets a nod and a wink from anyone who cares.

In Europe, by contrast, if you need time off because work is stressful, you plan ahead, take the day off and be cheerfully honest that you spent the day at the beach or whatever. But if you tell people you were sick, and then spend the day at the beach, people will at best think you are odd, but probably will think you're a liar. Telling people it was a "mental health break" to call in sick in order to go to the beach will not get the same cozy reception it gets in the US.

Clear?

Apologize for misreading you and getting frustrated. I appreciate the explanation. I hope you can understand where I am coming from.

If I am anxious or depressed, going outside into nature or to the beach would help me tremendously. Much more so than sitting at home. How anxious and depressed do I have to be before it flips from "relaxing" to "legit"?

At my job I get x vacation days and y sick days. If I feel I unwell mentally I am going to use a sick day. Why is it anyone's business why I am sick or what I did on my sick day?

If my coworker said they were feeling terrible yesterday so they took the day off to go to the beach I would understand and encourage that. I would also admire them being brave enough to admit that rather than pretend they had a virus.

You get as many sick day's as you need, but if it longer than 2 (or maybe 3 I forgot) days, you need note from doctor.

> If I am anxious or depressed, going outside into nature or to the beach would help me tremendously.

If you are feeling that semi regularly, you might be on your way to a burnout or actually experiencing one.

Oh yeah absolutely feeling that. 2 weeks of vacation for years on end has done that to me. Planning on interviewing and trying to get a start date as far out as I can. (maybe 3 months or even 6 months if they are ok with that).
I agree, confidentlake. You should be able to take time off of work to relax if you need. And, if the only outlet the US culture allows is to call in sick, then there's nothing wrong with doing that!
> However, it's not really cool if you commit to be somewhere on a certain day, no-show, and then lie about being sick. If you want to take a day off, that's perfectly fine. Please just communicate about it honestly. Don't lie. Reputation and trust are hard to build but easy to destroy.

People sometimes take "sick" days because the culture is such that they aren't allowed to be more honest about it. Many places I've worked operate in a never-ending cycle of extreme urgency. Taking days off usually must be approved far in advance, making it useless for those times when you wake up and simply cannot be productive. This leads to burnout pretty quickly. I have no issue with saying "I'm not feeling well" when I know I've hit a wall mentally and need to separate myself from my work. This makes me much more productive for the weeks following.

My first manager would call these “health days”, and they were always supported. He would declare random “sun” days, when it was an especially nice New England day.
> Copying other work? Amazing. [...] Solving issue without using latest tech that I just learnt? Incredible.

The business goal is usually to have a new product, feature, a/b test deployed to make money/validate an idea. If there's code ready for that, it's not a great idea to write it again.

Also, _latest tech_ is only meaningful for the devs, and usually not even helpful, since the shine new things might have new problems that you (and other people) still don't know and will have a rough time trying to find a solution to.

this is really good advice. To go further, sometimes the homework changes, sometimes its not really necessary and can be delayed or ignored. Sometimes other unassigned work is more important. All of these are important discussions to have with co-workers, mentors, and managers.
I have this junior engineer DM'ing me right now and I've been ignoring it because I don't want to deal with him and I have my own work to do. I'm reading through your comment here thinking "hey, I'm pretty good at walking that line, bothering the professor when appropriate, not waiting too long and not asking him for help too soon"... and then it occurred to me this guy is probably bothering the professor where I'm the professor. Oops. Need to work on being more charitable with my time.
If your a senior dev it’s part of your role to help the junior ones out. You should cultivate that behaviour as it brings up the quality of your colleagues and builds work relationships.
I draw a corollary to how graduate medical education works. You go into residency a fresh doctor with zero applicable skills. You may not even be CPR certified, but you're an MD/DO, and you've matched into a residency. You know less about actually helping people than a nurse who's been on the job for a month. You spend the next 3-7 years working 80-100 hours a week learning your chosen specialty. You become an absolute expert at your specific field. If you're in a surgical field you spend thousands of hours practicing and performing the surgeries you'll be responsible for. You may or may not specialize even further with a fellowship for another 1-4 years.

Then, when you graduate and can start making real money (probably), if you work at a hospital that does resident education, you're almost immediately expected to let the residents do as much as they can safely do, so they can learn. You go from working 80 hours a week performing surgery after surgery at a senior resident to working 30 hours a week watching the senior resident perform surgery.

Similarly (and admittedly it isn't a perfect analogy) as a junior and mid-level you're spending all this time learning how to write real software. Most of it's bad and especially at the junior level you're going to spend a couple years being more trouble than you're worth in terms of productivity. But by the time you're a senior, when you theoretically know what you're doing, you're going to have to spend most or a large portion of your time helping out the juniors in your org.

If you don't want to do that, you shouldn't be accepting senior positions. Or at least, go work somewhere where they don't hire juniors.

And yet a junior dev who LCd for a few months will get paid way more than a MD in residency. It might be interesting to see if the quality of people (measured with IQ) or some other simple metrics who pursue medicine relative to other fields have gone down over the past decade.
What if you just want to write software and not be responsible for mentorship? Why do capable individual contributors always have to be roped into leadership?
Work at places that don't hire junior devs.
> Why do capable individual contributors always have to be roped into leadership?

Training your replacement is how the cogs in the machine reproduce.

(comment deleted)
> What if you just want to write software and not be responsible for mentorship?

At a certain point, you probably know considerably more about the work than the people working around you. You might say you develop "seniority". At that point, the balance of value between your individual contributions and the knowledge you can share with others reaches a tipping point.

If you're limiting the value you're bringing to the company to only individual contributions, you're capping the value you can bring the company and by correlation the compensation you're due.

As long as you are not your own boss (and even in this case, tbf), you are likely to not do only what you "want", because you are not the one defining what is your job.

Honestly, it's a weird remark. Pretty much all jobs on this planet have aspects you wish you don't have to do. You work for your employer and your employer needs you to train the juniors. If you don't want to do that, change for an employer who only recruit senior engineers, if you can.

Employment is a negotiation, always has been. Senior technical staff often negotiate from a position of strength.
I'm not sure I see mentoring as leadership as much as I see it as passing the experience along to someone less senior than you. Or did you become a capable IC in a vacuum, without the guidance of more senior engineers?

Beyond that, you could go into contracting. Do the work, point to your contract whenever someone asks something else of you, move on after 3-6 months, rinse and repeat.

I mean, actually, mostly yes. I've usually been the last stop for technical help since school. There hasn't been anyone I can go to, so I've had to figure everything out on my own. I guess I'm wanting to work with senior peers more so than constantly dealing with juniors who seem to get lazy because they know I can solve their problems for them, often trivially.
Not wanting to help juniors so they're left to struggle the way you did seems incredibly devoid of empathy. I could describe my career the same way you have, but mentoring juniors is now my favorite part of the job. When you were a junior, would you have been satisfied regurgitating a senior's answer without understanding it, or would you have wanted to learn? If you were into learning, why assume nobody else will be?

When pairing with juniors, I avoid directly solving problems for them as much as possible–lessons tend to stick better when you ask leading questions and let them discover solutions for themselves. Perhaps this technique would also work to filter out "lazy" questions.

Working with a mix of super competent developers at all levels has really driven home for me that everyone is better at something, and worse at something, than you are. I've learned lots of new things from developers with less experience than me. I've also worked with many devs with senior titles who were worse off than most juniors.

Ultimately it's okay to find mentoring unenjoyable, but if this describes you, please stick to teams with most/all seniors and don't agree to mentor even if pressured. Attitudes like this can really exacerbate imposter syndrome for juniors, and I've seen it damage several careers.

I'm not sure how not wanting to deal with juniors is devoid of empathy, much like not wanting to look after children isn't either. In either case, I don't see how a high degree of empathy is a prerequisite for technical excellence at any level. Leave the feelings at home.

When I was a junior, I would have been greatly satisfied by more time and attention from seniors, as I would be today grateful for more time and attention from people in differing specialities, where I am quite junior. We do however live in the real world, where these people's time is extremely valuable, and I wouldn't dare disrespect it by asking them trivial questions. I would value 10mins of their time and the context switch they pay to help me on the order of days of my own. And if I do resort to bothering them, I do so with an attitude of utmost humility, akin to digital dogeza.

I get frustrated when folks fail to do any of this. I regard is a breach of professional etiquette that unfortunately seems all too common. I've found myself responding "Try harder" or "LMGTFY" to these sorts of inquiries, which is about as polite as I can muster.

> everyone is better at something

It seems that this would be trivially easy to prove false, and very difficult to prove true. I've certainly met developers with nothing uniquely useful to contribute, in spite of best attempts at coaching them.

> imposter syndrome

I'd like to note that I'm actually extremely forgiving of mistakes, even very expensive ones, so long as they're honest. We all make them, and it's really on me to ensure that processes are in place and enforced to prevent the most critical sorts of them. But you don't know what you don't know. It's more the "I'm a baby, please hold my hand" attitude that I'm frankly somewhat disgusted by. If that describes (hypothetical) you, then perhaps some imposter syndrome is in good order.

> I'm frankly somewhat disgusted

I wouldn’t want to work on a team with someone who has such an attitude. I’m very grateful to work in an environment where we all want to help one another. This really reminds me how good I’ve got it.

Do you really work in a team where people are not at all expected to try to help themselves?
I think there is a limit of the efficiency of a single person. At some point, helping out others to be more efficient is more efficient than doing it all by yourself.

With that said, I don't see anything wrong with stagnating at your peak IC efficiency if that's what makes you happy.

I agree with sibling which says that mentoring is not leadership. Helping out others is not the same as giving them instructions or evaluating performances for example. However I can understand that someone would like none of that.

Let's say you are the cryptid 10x engineer/tech lead, supervising a team of 8 junior engineers. You can spend 4 hours, the equivalent of a 40hr week of lesser mortals (this math is almost never true in my experience), or spend a half hour of time on each of your junior engineers. The problem you help each of them solve is solved in 30m as opposed to the 3-4h they might have tried solving it themselves, and they've learned something that maybe saves them an hour a day. You do this twice during the week.

You've 'lost' 80h effectively of productivity for the company (remember, mythical 10x), but you've gained 104h (32h+32h+81h/day5days) from your team, for a net 24h gain.

Of course, numbers are exaggerated, but the point remains the same: if you are a tech lead helping your team succeed is your primary job, not coding/design. You are the person who connects the lines of communication, removes obstacles, mentors the team on coding and design, and gets the team moving in one direction that aligns with the customer needs.

You probably will code, to fill in gaps and help out, but personally I find it's split around 5/2/2/1 - 5 parts are working with your team to guide them and help them overcome obstacles, 2 parts communicating with management and customers, 2 parts coding/design, and 1 part administrivia/training.

This requires an environment where long term productivity is more important than short term productivity, it doesn't account for juniors who won't get it, no matter how hard they try, it doesn't account for juniors who will leave the company after becoming more proficient because they can't get an adequate payrise.

10x engineers can be a good match for startups where shipping now is essential and for big businesses who need something done quickly (for a change, the bigger the company, the slower everything else).

The only cons of 10x engineers is that they will burn out and that they're incredibly rare. Advising 10x engineers to help out other and collaborate is also nice to give them a bit of down time so they don't burn out and leave for the next startup with a 50% raise.

That said, it's not like HR managers are able to distinguish between senior low productivity engineers and 10x engineers, so it doesn't matter. No company will have a strategy around employees productivity.

I disagree the 10x engineer is a myth, as an hiring manager, I can easily tell you who is a 10x engineer after working with them for a year or so.

I have a theory about why it is so difficult for great IC's to make the jump to being a great manager. As an individual contributor, you need two things most of all: 1. quiet uninterrupted time to focus your mind and get into flow, and 2. quick responses to any blockers or questions that you have so that you can get back into the work. As a manager, a key part of your job now requires you to be infinitely interruptable, so that you can get those answers back to your juniors quickly, and also, you must protect your juniors from as many interruptions as you can. AND THIS IS IMPORTANT: Make sure you are not that interruption. If you want to ask your junior a question, HOLD IT and batch your questions, if at all possible, so that you are not a source of interruptions.

Beyond that, have clear goals, and communicate them clearly. Most people want to do the right thing. The better they understand the goals, the better able they will be to make decisions on their own that don't need adjustment later.

You need to encourage your juniors to ask questions as soon as they need to get clarification or unblocked. To do that, you need to embrace the interruptions, that is your job now. Both the interruptions from your juniors so that they get unblocked, and the interruptions from pesky people that will distract your crew must be short-circuited by you before they get to your team.

> I have a theory about why it is so difficult for great IC's to make the jump to being a great manager

I find it very odd that most ICs take the path of management. This seems like an unnatural transition, like going from being a minister to playing in a death metal band.

Since I'm both an IC and a death metal connoisseur, I'll argue that it's more like going from playing in a death metal band to being a minister ;)
There really isn't a pipeline for for entry-level managers in tech: I've never heard of anyone interning for, or graduating from college and managing ICs as an entry-level job. However, those managers are needed, and have got to come from somewhere, so here we are, looking to start a death metal band at a seminary.
As someone who's done both (dev and dev management), it's more that it's very hard to manage dev teams unless you've been a dev. We have all experienced the clueless non-technical manager who doesn't understand why any of this has to be this way and keeps pushing for "common sense" things like accurate estimates for project development.

There's also nothing stopping a good dev from being a great manager, or vice versa. A good dev learns to listen well, which is also a key skill as a manager. A dev creates working systems out of conceptual components, a manager creates working teams out of actual people. The biggest difference is that there's no Stack Overflow for management - every situation has to be treated as unique and you can't just copy-paste the solution.

> We have all experienced the clueless non-technical manager who doesn't understand why any of this has to be this way and keeps pushing for "common sense" things like accurate estimates for project development.

This is in my opinion actually quite easy to explain to managers: asking for time estimates in software development is like asking for time estimates in proving a deep conjecture in mathematics.

Since every economics major has to take some courses in mathematics (which at least in Germany are often there to weed out bad students), this should not be difficult to understand for managers.

The problem rather is that these clueless non-technical managers insist that this perspective is simply wrong and theirs is right.

Having never had a manager with any clue about maths, I found the golf analogy works better:

"Why can't you hit a hole in one with every golf shot? You know exactly where the hole is, you know how much the ball weighs, you know the length of the club, you know how hard you need to hit it and in what direction. So why isn't every golf shot a hole in one? Because, obviously, you may have miscalculated how hard and at what angle you should hit the ball, you may not have the skill to hit the ball exactly right, and any amount of random factors can affect the ball between you hitting it and it arriving at the green. Same for software development"

> Having never had a manager with any clue about maths,

This is exactly my point: at least in Germany, the compulsory "mathematics for economists" courses are there to weed out student and are thus feared among the respective students.

Indeed, I got promoted to a managerial position, which seemed a nice career opportunity for me, but my productivity and happiness tanked so much that when I had the opportunity two years later to go back to just being an engineer with no one waiting for my input, I just took it. This is how I learned that while I think I can be a decent manager, the skillset of managing people are totally different than being an engineer and it's very hard, at least for me, to context switch effectively between the two. And in that case I'd rather be an engineer.
I'm fairly sure it's done mainly because if you want to make more you need to become a director of something.

In companies when expensive tech only people are allowed you see less techies among managers.

In many industries that’s the fastest and best way to get paid well.
Doesn't have time for junior dev, because has so much own work. Then hangs on hackernews :D
I have no trouble if somebody with less experience ask me anything, but I expect at least one or two ideas how the person thinks she would solve the problem.
You may well be right. +1 karma for the adjustment. Mentoring/helping the juniors is part of the un-tracked/unplanned workload of the seniors.
Wow - this is the best advice on HN (top comment to while I write) in a while.

For junior folks I REPEATEDLY say, if you find yourself getting stuck / slowing down touch base. Or keep me in the loop, let's check in regularly when you have a good moment to chat, I'd love to hear how its going.

Here's the other thing I noticed. I work with someone who is is my peer. Ie, 15 years+ experience etc. THEY check in with me proactively 5x as much as the folks who really need to be checking in.

I also like that they don't schedule a call, they just zoom me. I know this seems rude, but it actually saves time. If I'm busy I don't answer, but usually I can. This is a personal preference. For junior folks if you schedule some time for early next day that works well (my calendar auto-accepts).

Also, not end of world to socialize / connect with 1-2 other devs below your managers level to share tips / get help, just be sure to pass it on to the next FNG.

> For junior folks I REPEATEDLY say, if you find yourself getting stuck / slowing down touch base. Or keep me in the loop, let's check in regularly when you have a good moment to chat, I'd love to hear how its going.

Sometimes work goes in such small incremental steps, full of unknown unknowns that there's so many occasions you can get bogged down. Even if you apply the rule of "touch base if you get stuck for more than an hour", you can still end up interrupting the senior guy 5x / day.

And when they're obviously annoyed and provide too short an explanation it becomes very uncomfortable to interrupt them again. Often it's not even their fault, they have a high workload and supporting the new guy isn't foreseen. Or, they're good devs but just incapable of explaining things.

I had this experience at a fintech company that didn't have a single page of internal documentation and you'd have 8 point Jira tickets that consisted of one bullet point - figure out the rest (everyone remote).

One issue is turnover, it's annoying to spend time training someone who you won't be working with a long time. I've only had that really happen once.

So a tip for junior's might be to look at places where folks have a bit of tenure and stick around (I know some places cycle folks between teams like crazy - that makes this hard).

This is a mind shift for the new hires. I typically ping them after a few days asking if they need any help understanding the problem or just a friendly chat on why we are doing that particular project and how it will make relevance to the business. The good ones quickly understand if the path they are choosing makes sense and most of the times opens them up to ask questions.
Definitely agree, I would say, if you think about something we might have fallen short (likely) go ahead and say it, the abilities to see your own shortcoming is gold for a manager.

They should be expecting rough edges with a junior dev, but if you are willing to talk about your weakness real or imagined you will grow fast.

> if you are willing to talk about your weakness real or imagined you will grow fast.

Similarly, owning up to mistakes (rather than making excuses) is gold. It wins respect and trust when you really weren't at fault.

I just don't understand that part. Where I live, admitting to making a mistake would be equal to admitting to your incompentence, and I'd be shown the door on my way out.
I agree 100% that learning from the people around you is paramount.

But I disagree with the idea that you can't/shouldn't do that in an academic setting. During my undergrad, a lot of the more driven students were always bothering the professors for help. Those students often brought back gold nuggets of information while working on a team with them. It made me regret not doing so more myself.

Though to be fair, the assignment doesn't really change in academia - that's true. Those students aren't asking the professor if the requirements changed; they're bouncing ideas, and asking for further explanation.

I'd go one step further and log my work and blockers in a place that's visible to everyone internally, like a company wiki if there's one. Still check in frequently but have that already written up and ready to share with anyone else who might be able to help.

The biggest problem I've had being new at a company is knowing everyone else's skillset, and many people have a history at the company that gives them a unique voice or perspective that's especially valuable to someone new.

(A big example: people who transferred between departments over time and can contrast how things are similar and different between them, what the connections between them are like, and the history and changes over time in them.)

Having something easily sharable and already public can make it trivial for your manager or boss to track your progress — managers LOVE focusing their meetings on actions with context already in hand — and also make it easy for your boss to point you in the direction of someone else who can help with specific issues or blockers.

> without bothering the professor

What the hell kind of academic culture is this? Maybe in graduate research, if I expected a research assistant to know how to do a task... but certainly not true in an undergraduate course! If they can't do the assignment, that is the perfect time for them to come to me and learn from me how to do the assignment. That's like, the whole point of my job as a teacher is to help people learn. Yes, I make assignments too, and people underestimate how difficult that part of the job is, but helping people figure things out is like my #1 job. It's sad to hear that your experiences (and apparently many other commenters) are something very different?

> That's like, the whole point of my job as a teacher is to help people learn.

Many professors see teaching as a distraction from their real job, research, not an adjunct to it.

Could it be because you lose your professor job is in peril if you don't get research funding? Survival explains so much.
This resonates with me, I had a real mixed bag when I was doing my undegrad degree. There were some incredible professors who wanted to teach, were very approachable, and would always make time and reply to emails with good detail. Then there were other professors who clearly only had their open office hours because they had to, would rarely reply to emails, and the moment you stepped into their office it was clear their top priority was getting you to leave.
This is getting off topic, but I'd love to see a fundamental rethink in how 'teachers' for undergrad courses are hired. Certainly for year 1 and 2 courses the 'teachers' should be selected and hired ~100% based on their pedagogical skills and passion and ~0% based on the impact of their publications. Universities also need to start recognizing, valuing and rewarding teaching ability.

The best first year math lecturer I had at university (and the person that is the reason I ended up majoring in math) didn't get tenure and ended up taking a job a smaller 'unprestigious' local college. The by far the worst lecturer I had is now at MIT.

In my uni in Poland, had I asked teacher for help, I'd be at best laughed at. Homework/assignment is graded and it is fully expected that student does it all by themself.

And if you have questions, it is fully expected of you to just study harder and check for the question in books.

> In business, it's much better to 'bother the professor' regularly and check in affirmatively on whether the assignment has changed

This is definitely management's responsibility. If they assign a task and let it continue after it has become obsolete, what kind of management is that?

> As a junior employee, you're not going to know the full business context of what makes sense

Agreed. I would add that explaining enough business context is also management's responsibility.

This is definitely management's responsibility.

Ideally yes. But the truth is that you will often find yourself in situations where management is less than ideal, and no matter how unfair you will end up looking bad if you fail to navigate that.

Definitely. I argued the same in a top-level comment.
Yes! I'm trying to convince junior devs to bother me more.

Some do (did) a lot, and are very efficient as a result, they learn fast and become more autonomous quickly.

Then I feel it's also part of my job to evaluate when the bothering was not needed and to let them find on their own for a while.

After a while, they adjust and ask only good questions.

Also, related to the OPs comment:

>"he says I probably just misinterpreted an offhand comment of hers as a hard requirement."

It's sometimes helpful to explicitly reiterate your understanding of tacit/implied direction, especially when in a junior position. For example, a short email of "my understanding is that you want me to do X".

A lot of this stuff boils down to communication. In academia, it's not as much of an issue because professors assign well-formulated problems with a definite solution. In business, a lot of the work is fleshing out those details and building a consensus about the right approach. Plus, it creates a trail to CYA (although that shouldn't be your primary goal)

I often find myself falling into this trap of not reaching out for help quick enough and I've been a dev for a decade. It really is a super bad habit and I've made some strides recently to get better at it.
Get another job. Your management wants to Design and write code like the past. If they’re criticizing now it’ll never end and you will eventually be fired. I would get another job and just walk with zero notice. They won’t do you any favors in the future.
A few takeaways from an old-timer here:

> First, he basically tells me this project should have been finished a long time ago and he can't believe it's taken this long etc. I had no idea that he felt this way before the meeting - I've mostly just been working to get it done before the revised deadline my manager gave me.

You need to communicate, build relationships, and get feedback from many people in the organization. One of those people is your manager's manager.

> He looks at the code and criticizes design decisions, some of which were made largely on my manager's explicit suggestions.

It may be the case that your manager is wrong, his design suggestions were dumb, etc. Or, it may not. This is one reason you need to get feedback from people other than your manager.

> Part of the reason it had taken so long is because I put a substantial amount of work into a part of the project that's no longer necessary due to changing requirements, which I don't think I could have forseen.

Use this as a learning experience. Do not put work into things that may or may not be needed. The correct way to tackle a big project with changing requirements is to get something working end-to-end, possibly with a whole lot of copy and paste, hacks, hardcoded stuff instead of configuration, whatever. Then, when it is doing what it supposed to do, go back and improve it, rinse and repeat. Do not put lots of work into one part if other parts are missing, non-existent, and the project doesn't work end-to-end.

> For instance he said I should have looked at other projects to see how they accomplished what I'm trying to do.

This is great advice. It is often the case that if you ask the right question/person, someone will say "oh, yeah, I already did that, here's the code." or "I tried that last year, and it didn't work". Or, they might not, but the only way is to ask around, talk to people. This also goes back to the first point, build relationships with people other than your manager, because your manager doesn't know everything, and is probably wrong about a bunch of stuff.

> Do not put work into things that may or may not be needed.

You're a junior dev, someone tells you something is needed, you work hard on it. I guess you learn to question your boss as to whether it's really needed, but that sometimes isn't optimal, either.

Trust, but verify. The advice was about how not to be a junior dev.
As a junior, you really shouldn’t be constantly maneuvering around your immediate supervisor up the chain of command.

Either your supervisor is good, and you need to trust them, or they are bad and you are likely SOL. Ultimately an organization who is holding a junior directly responsible for high level project decisions that were made in concert with their supervisor, is a bad organization.

i find it useful to develop my own internal model of the goals and direction of a project and lay peoples (including the higherups) "opinions" against that.

if they match, it's probably on point

if not, its probably not worth it

> You need to communicate, build relationships, and get feedback from many people in the organization. One of those people is your manager's manager.

That's an unreasonable expectation. That's your manager's job, not yours. If you have a skip level manager that is expecting direct updates from you... they're doing management wrong.

It's hard to do but an effective tool to build political standing and gain insight to be able to assess the quality of feedback.
Building relationships with a skip level manager doesn't have to be about direct updates. It's not about going around your manager, either. It's building another channel of communication where you can ask for help on blockers, get updates on issues specific to what you're working on, build visibility for the work you are doing, and create good working relationships. Unless your manager never goes on vacation, you're going to have to work directly and report to your skip level manager at some point in time anyway. In my company, my manager has regular sync-up meetings with his skip level manager, and encourages me to do the same.
> Do not put work into things that may or may not be needed.

Hindsight is 20/20.

> You need to communicate, build relationships, and get feedback from many people in the organization. One of those people is your manager's manager.

This is valid advice, but the manager/colleague/etc's feedback has to be useful. In that regard, OP's manager's manager failed.

I guess I also qualify as an old-timer and I just have to say that your comment meant I didn't have to write one. You hit all the points I wanted to make.
As another old-timer, I honestly think this is not very good advice.

I mean "communicate" is always good advice, but reading between the lines, the situation as described is a setup for failure. I doubt it's intentional, but no one there knows how to develop software, apparently, other than to blame the junior for a timeline slip. There's only so much "managing upward" this kid can do.

My practical advice is:

Do tell the immediate boss what was said in the meeting.

Keep a good, positive, helpful attitude.

Understand there is no future for you at this place, because it is poorly managed. This is a place that will blame a junior for a timeline slip.

Do not blame yourself for the failures of the people whose job it is to support you. They are asleep at the wheel. This will be hard, because at this stage you don't even know in what way they are failing you, and likely will never learn that while there.

Do your best, anyway. But don't kill yourself over this.

I think this advice is out of touch. It’s been written without considering the person the advice is for. There is a time and place for these points and a junior developer in a new job is not one of them. OP listen to others, not this one.
There are a couple assumptions you're making here. For instance the firing (from your perspective likely but will they really?). Take a step back and take stock of the situation.

Communicate with your manager. Your manager not being there in that meeting definitely didn't do you any favors. Make sure the both of your are on the same page. They should have been there to deflect. Be proactive about communicating and making sure everyone is in alignment. Easier said than done especially if the company is smaller or the manager is busy. But a 20 minute time investment per week will be worth it.

Figure out why this happened. Figure out what can be fixed and move on. But be vigilant because that kind of behavior is frankly uncalled for. On the other hand getting a new job in this market should not be too hard.

There are thousands of workplace to go. Weird this is not the main answer
Stop thinking about it. Keep working hard. Maybe push back harder against design decisions that you disagree with.

Always remember that almost any negative comments might be due to the perpetrator simply having a bad day.

Welcome to adulthood it sucks, youre gonna love it.

If you manage to find a workplace that does not sport atleast one manager that does this, consider yourself lucky.

My advice, look for truths in what he said ( I am sure he was correct on some aspect somewhere ) and work on that. Ignore the rest and move on.

I haven't had this happen anywhere in my 7+ years of experience under 10+ different managers, some of whom were much better than others. While it might not be that unusual, op might also consider that this reflects poorly on their work environment and that there are better ones out there.

Also, this sounds like something that would happen at Amazon. I'm curious if it was there.

Tell your manager that you are scared by what happened in the meeting with the skip manager and ask if they want you working for them or if you should start looking for another job.

Most likely you should leave in this situation, because if your skip manager thinks you suck, you don’t have much of a future at the company. They will likely need to approve promotions, raises, etc.

However, you don’t have much to lose by being very open with your manager and seeing if the situation can be repaired.

Absolutely don't signal to anyone higher than you that you might start looking for another job. That's the worst thing you could possibly do and will leave you branded as a lost cause.

What manager is going to stick his neck out or put effort into a subordinate that doesn't even know if they want to be there.

It could also leave you in a compromised position under many circumstances if they wanted to get rid of you / move you etc.

I’ve successfully gotten promotions multiple times at big tech companies after talking to my manager about what other companies are offering and not-that-subtly threatening to leave. The pot is only so big, so sometimes it helps to be the squeaky wheel.