top | item 31499802

Not My Job

195 points| sebg | 3 years ago |blog.dbsmasher.com | reply

119 comments

order
[+] chasil|3 years ago|reply
Someone recently replied to me with comments by Dave Cutler, designer of the kernels for Windows NT/XP(...) and (Open)VMS:

“I have a couple of sayings that are pertinent. The first is: ‘Successful people do what unsuccessful people won’t.’ The second is: ‘If you don’t put them [bugs] in, you don’t have to take them out.’ I am a person that wants to do the work. I don’t want to just think about it and let someone else do it. When presented with a programming problem, I formulate an appropriate solution and then proceed to write the code. While writing the code, I continually mentally execute the code in my head in an attempt to flush out any bugs. I am a great believer in incremental implementation, where a piece of the solution is done, verified to work properly, and then move on to the next piece. In my case, this leads to faster implementation with fewer bugs. Quality is my No. 1 constraint – always. I don’t want to produce any code that has bugs – none.

“So my advice is be a thinker doer,” Cutler concluded. “Focus on the problem to solve and give it your undivided attention and effort. Produce high-quality work that is secure.”

https://news.microsoft.com/features/the-engineers-engineer-c...

Unfortunately, I do not have this level of talent, but I do what I can.

[+] koonsolo|3 years ago|reply
Let me give some senior developer feedback on these statements.

Developing kernels is a highly technical job. I can imagine that you have to think hard before writing any code. Once you figure out a proper solution, you can invest some time into writing high-quality code. But remark that no code is written bug-free the first time!

Now contrast this with a consumer facing application. The biggest challenge there is not stability or technical structure. The biggest challenge is to provide a useful, user friendly application. You cannot just think this up in your head and hope all is fine. The "no plan survives contact with the enemy" very much applies here. There is no point in investing into code stability when that code has a high chance of getting thrown away. Get the "useful and user friendly" figured out very fast, using an iterative approach. And only then start focussing on stability and all the rest. Plus, sometimes it makes more sense business wise to shift focus more towards features instead of stability.

Anyway, each project is different. So when you see advice, make sure you first check if it applies in your case or not.

[+] davedx|3 years ago|reply
Hmm. There's definitely things to be learned picking up things that other people won't touch, but I would also qualify it more:

"Successful people choose their battles"

You can spend your entire career fixing other peoples' crappy bugs because nobody else can be bothered. That's not really going to make you successful, it's just going to make you a good bug fixer.

Choose problems that other people don't want to touch because they're hard or challenging, or because they're a core, valuable part of something.

That's what's brought me succeess ;) (and headaches)

[+] bitL|3 years ago|reply
The problem of advice like these is that the "modern" Scrum Master would demolish this approach in favor of a predictable pace with shallow depth. DC could only become successful in environments without any Agile/PMP certified PM.
[+] nimbius|3 years ago|reply
So, coming from a mechanic/blue-collar perspective the idea that everything has to be your job is an insanely dangerous practice. We absolutely have a "not my job" mentality because there are countless instances where poorly trained/inexperienced diagnostic technicians and day laborers have caused catastrophic loss of life and property damage. Is there no room in coding for inexperience? what is the price of a job half done poorly?

"Successful people do what unsuccessful people won’t." is, in my industry, a neat way to start the story of how you lost your hand.

[+] idontpost|3 years ago|reply
> Dave Cutler, designer of the kernels for Windows NT/XP(...) and (Open)VMS

> I don’t want to produce any code that has bugs – none

Really though? I'm not sure I buy a word of that.

[+] DeathArrow|3 years ago|reply
>I don’t want to produce any code that has bugs – none.

And there's the reverse thinking: let me intentionally introduce some bugs, so when I will be tasked with solving them I can fix them in 5 minutes and take a good sleep for the rest of the sprint.

[+] patrck|3 years ago|reply
Though, if your bias is towards action, how do you avoid stepping on toes?

These discussions seem like MBA brain-teasers, ie. there can't be any hard and fast rules, so each case needs to be individually worked out.

There's probably a sub-reddit for this.

[+] Simon_O_Rourke|3 years ago|reply
Yes but quality, naturally enough, takes more time. And while this might be great for organizations with plenty of buffer, for any start-up it has to be that "good today beats perfect tomorrow".
[+] formerkrogemp|3 years ago|reply
We can't and shouldn't all aim to produce the Mona Lisa or Starry Night. Such expectations and perfectionism are unhealthy and often counterproductive. Sometimes you just need to showcase the product and fix the issues in beta. Going slow with low bug counts is nice sometimes and in theory, but certainly not every exception or edge case will be forseeable or preventable even with an incremental approach.
[+] itsgrimetime|3 years ago|reply
I was sold this same line since I started my career in software as an intern ~15 years ago. Every year I've become less convinced that fully applying myself is worth it for my career. Any time that I've stepped up to fill a gap when it didn't directly benefit the short-term perception of my manager/skip-level, the effort was undersold or outright ignored.

Edit: ok - I'll admit, I didn't read the whole article at first. I still stand by my point, though - even when I'm simply identifying those gaps and not fixing them, I still don't see engineers being rewarded proportionally for the value they're bringing their employers.

[+] quickthrower2|3 years ago|reply
Sometimes it is better to leave the gap. Let someone feel the pain. And have it consciously fixed by management.

Depends what the gap is. Small gaps (QA person is sick today, so can someone test...) I would just fill them if they are not happening all the time.

[+] athrowaway3z|3 years ago|reply
> I still don't see engineers being rewarded proportionally for the value they're bringing their employers.

My theory is that's because the relationship between employers and engineers has an off by 1 error.

Non-software folks see 'managers managing software developers creating software' in a similar dynamic as 'managers managing drivers driving trucks'. Whereas I believe it is better to frame the function of software engineers as 'managers managing code handling data'.

From the business perspective, its software engineers should be seen as managers. Its just that what they manage doesn't require HR or sick days. And just like a re-organization of the business, software updates might take more than a sprint or two.

[+] AlwaysRock|3 years ago|reply
Isnt this the point of the article?

Also early in my career I had a boss who told me something like, "I know X is a problem. It's easy to point out X is a problem. It's hard to point out X is a problem, figure out a solution for it, and time/manpower/money to fix it"

Pointing out issues is easy. Most of the time you're not going to point out something that no one has noticed before. Many issues are known. They just havnt been solved because they are too hard compared to the payoff or they are not that big of an issue.

[+] yellow_lead|3 years ago|reply
It always depends - on the company, leadership, and each particular situation. Always pick your battles wisely :)
[+] codingdave|3 years ago|reply
I'd take some of this advice one step further. In the examples of when not to step up to fix a problem, the author states under-resourced teams. If you do step up to help out such teams, not only do you risk burning yourself out... you are also masking the problem. Helping those teams hit their targets sets up a long-term situation where leadership says, "They get their work done, so they must have enough resources."

It does feel off to not help is such situations. It feels like you are letting a team down. But in the long run, showing evidence that the team is under-staffed will force leadership to make a choice: Either increase staffing or decrease scope. Either way, the team is adjusted to have a healthy match between their staffing and their workload, the people have a healthier work environment, and the business has a more predictable and reliable work output from that team. Everyone wins.

I'm not saying to never help a team. I'm saying to look deeply at why the team needs help before jumping in. Maybe they could be fixed with mentoring or process improvements. Maybe their PM needs guidance in a better way to roadmap the work. There are many cases where you can jump in and help. But if the team really is running well, but simply overworked and under-staffed, that needs a different fix.

Being able to parse out the differences of where direct help is a benefit vs. a hindrance is exactly the type of perspective that takes people beyond the "senior" level role.

[+] PragmaticPulp|3 years ago|reply
Your take presumes that management is incapable of understanding these issues, or perhaps that managers are incapable of communicating when their teams are losing time fixing bugs of others.

While obviously there are bad companies and managers out there who operate like this, it’s far too cynical to assume every company is this broken.

If the only way you can think to communicate a problem to management is by letting a team fail and hoping management figures it out, that signals a massive communication/management failure. The proper response is to do what’s necessary to unblock your work, even if that means helping another team, and then also communicate very clearly what had to be done and how much of a setback it was. If management is paying any attention at all, they’ll collect these anecdotes and realize that the failing team isn’t getting their work done.

From the management side of things, when I see teams playing too much of the “not my job, not my problem” game to the point that they’re letting their objectives fall behind just to make a point about not helping with an issue, I also lose confidence in that team. Why? It’s a political move to let something fail just to make a point.

This doesn’t mean that teams should be quietly dedicating resources to compensate for other teams, though. It needs to be communicated clearly through the management chain to make it understood like professionals working together to accomplish shared goals. Making moves to let goals fail just to make a point is, like it or not, a petty political play. Communicate, don’t play politics.

[+] g5095|3 years ago|reply
Some years ago I was one of the first 5 engineers at what became a semi-unicorn, in 5 years we spent close to 1bn before a sale to tencent.

In the first 12 months I built a dozen microservices, each which eventually had a team supporting them. As the team grew I and one other guy were the 'glue' that kept much of the platform working, we knew how things went together, and by the time the Eng team hit 200+ staff we were indispensable.

After year 2 however, as several of our peers from the beginning moved into team management roles (something I prefer not to do), we noticed we were 'too important' to promote, or to allow to move, or to take off 2nd lvl on-call (at all).

What started with us being the architects of the system turned into us being the 'glue' that kept a massive multi-country eng team operating, which eventually turned into being boxed into a shitty support role rather than promoted, watching people vastly less qualified get moved ahead of us.

Eventually I just quit and moved into a tech lead role at a startup for something different. I feel like this is a trap for IC roles, don't be so helpful as glue that you 'set' into an indispensable position.

[+] Twisell|3 years ago|reply
I just started a new gig and I'm working on a critical glue stuff that was nobody's job so I can totally relate to this article. Don't stop at the title which is voluntarily provocative.

So far identifying coworkers ownership, planning and validating glue to make things work took most of my time but everyone appreciate that. Some veterans are astonished and say things like "wait so you get Mr Grumpy to do that?" or "How on earth could you get a validation from Mr Nitpicker with a single meeting?"...

Well acknowledging that "it's not my job" to do what is Mr Grumpy and Nitpicker area of expertise is exactly what made things works. They feel recognized and they also understand that the burden is on them if we collectively fuck up so the glue project can move on fast.

[+] hinkley|3 years ago|reply
One of the tricks up my sleeve is figuring out that sometimes the new guy is the only person who can get Mr Grumpy to change his mind.

There's one phenomenon where some people don't re-evaluate their position until they've encountered the same issue with multiple people. Sending new people to ask often works better than going yourself for the third time. You're just a repeat, not a new data point.

And then there's a form of the Curse of Knowledge, where the resistant person has heard all of the arguments and (circular?) reasoning from their coworkers and doesn't buy any of it. And then someone asks the question in plain English, with no conceptual or relationship biases. Either the way they ask it makes the person realize they're being unreasonable, or they dissect the problem along a new axis that suggests a way to escape the deadlock. Words and questions can push us toward some connections in our brains, and away from others. Rephrasing is sometimes all it takes to reframe a problem, and the more inured you are to the project jargon the harder it is to rephrase things.

[+] sascha_sl|3 years ago|reply
I had to have this talk with my partner recently, who works at a small-ish company that hires people competent with data science, but absolutely useless when it comes to architecture, git or even setting up a python development environment.

She does all of those things really well and ended up putting a lot of effort into fighting chaos (spaghetti code, spaghetti git flow, a lot of copy pasted code that doesn't have to be, a complete lack of dependency management, no automation for anything) at that place. I stepped in when I suggested some shared vacation days and she refused because she wouldn't be there to be her team's guard rails. That screams leadership failure to me.

Keeping in mind she barely gets paid better than a junior dev.

[+] ryan_lane|3 years ago|reply
I'm in violent agreement with this post.

The biggest issue with making everything your job is that it hides the problems growing in the company. If there's a gap that needs to be filled, if you fill that gap, you're increasing your workload, and the work is being covered, so management may not even know they need to hire to cover it. At some point you'll be doing so much gap work that you'll burn out, leaving all those gaps uncovered.

Obviously you shouldn't be saying "That's not my job", but that's not the point of the post. The point of the post is that you should point that gap out to your management, so they can close it. They may ask you to help cover it, until it's hired for. They may find another team to cover it. They may do nothing, in which case either the work isn't considered high enough priority to cover, or they're not good managers.

Don't be a hero for the sake of being a hero. Be the glue that binds everyone together.

[+] aunty_helen|3 years ago|reply
That first paragraph, not a great start when I have to do mental gymnastics just to figure out what the blog post is even about.

If you can't write about a subject directly, use creative license and make the situation up. Nobody knows / is going to find it different and it will help get your point across. I bailed on this article after the first paragraph.

[+] coastflow|3 years ago|reply
>"If you can't write about a subject directly, use creative license and make the situation up. Nobody knows / is going to find it different and it will help get your point across."

Making up a situation—without disclosing that it is fiction—is risky in a practical sense and also morally questionable.

Readers typically don't like to be deceived when reading non-fiction. If a specific detail is fabricated and a reader notices, a reader can assume that the writer is sloppy/deceptive, and become far more skeptical with the rest of the author's works. Undisclosed fabrication can also lead to unsound conclusions (for example, an article could rely on the existence of a counter-example to disprove a rule, but a fabricated counter-example would make the argument fail to be valid).

Furthermore, suppose a reader cites an article with a fabricated story, relying on that story to make a point. If the story is false, the reader would take a reputational hit as well. In a moral sense, it's better for the reader to avoid fabricating situations.

It is typically good practice to make an article introduction easy-to-understand with minimal jargon, but creative license should always be disclosed when writing about a hypothetical situation. It leads to higher-quality reasoning (by avoiding arguments that rely on false anecdotal evidence) and is simple to disclose (e.g. "Consider a hypothetical: ...").

[+] OrderlyTiamat|3 years ago|reply
I would amend that to "nobody cares"; it's totally fine to discuss a hypothetical if it lets you skip irrelevant details that slog down your point. Readers presumably are interested in the point you are making rather than the details.

This article is a good example where it would have helped. I did read it, (just forget aboit the start, it gets readable a couple paragraphs in) but I was also inclined to close the site after the initial paragraph. Starting like that doesn't invite to read.

[+] eyelidlessness|3 years ago|reply
I think the author—rightly in my case—assumed they have an audience who already knew the context based on the title, and the tweet which prompted it, pictured a bit further. Not all of us spend a lot of time on Twitter, it’s okay to feel the intro lacked context.

It’s also okay to wade into something unfamiliar and patiently find out if you’ll get something out of it. Probably 90% of the best things I’ve read from a HN link have been completely context-bare for me when I clicked through to read.

You probably spent more time writing this than it would have taken to read far enough to gain the context you were lacking. Not that you’re obligated of course. But maybe it’d be more productive for you and everyone if you quickly dismiss by moving on to the next thing.

[+] ZainRiz|3 years ago|reply
This article seems to be advocating sticking your head in the ground when something goes wrong

There’s a world of a difference between telling others “that’s not my job” for tasks that have nothing to do with you, and owning the success of your own projects

And it feels like this author is conflating the two concepts

If there’s a dependency of yours that’s not working the way you need it to, it doesn’t mean you can simply go home free. At the very least you have to fill in the communication gap of informing management of the blockers.

If need be, then you have to own driving the call to either add more resources to your own project (to compensate for the bad dependency) or push forward the call to nix your project since it apparently has a high chance of failure

And if none of those attempts pan out, _then_ you can try to move on to a different place where you can actually be effective. But know that you’ll face this same type of challenges in your new role as well!

There’s no easy escape: if you took a position of leadership, then it’s definitely your job to lead

[+] David|3 years ago|reply
I read the article as saying you can't solve everything yourself. That's different than saying you should ignore problems. Instead you need to communicate when you see a problem that you're not positioned to solve, because you don't have the bandwidth or you're not in a position of authority for that domain

> you should be working on properly communicating the gap and its risk to the business (and risk to which part of the business) and NOT attempting to solve everything.

[+] Dave3of5|3 years ago|reply
> There’s no easy escape: if you took a position of leadership, then it’s definitely your job to lead

Leading != to fixing every problem that has no one assigned to it or filling every gap. It's about helping the other so that overall the org can achieve it's goal.

Leaders should be miles away not in the trenches. You can ask Russia what happens when you send your general to the front lines. A similar effect happens in software when more senior devs take on all the work themselves.

The original tweet is saying the higher up you go the more you have to do everything. That's wrong an extremely unhealthy.

[+] Dave3of5|3 years ago|reply
I agree the original tweet is wrong. Imo as you become a more senior your role should become more and more tightly focused. Narrowing down into things that are more important for the company. Examples might help here:

As a junior dev you can be expected to fix bugs in the product, work on features, maybe help with testing. Basically anything that the company wants to get you more experience. This is the role discussed in the tweet filling in any small gaps.

As an intermediate dev I would expect you to start working on your own features (with help from a senior+). Only when you're finished these you can tackle anything else like random bugs and suchlike.

Senior dev is more about helping others so you mentor juniors, help intermediate devs with their features and are given the slightly harder features to work on.

Principle devs shouldn't really be mentoring juniors. Certainly you can ask for advice but I would have all my principles working on the hardest parts of the codebase. Anything that requires research or things that the company hasn't done before. Examples of this would be adopting new technology, complex algorithms ...etc. Seniors go to you for advice, not mentoring or step by step by advice on how do I approach X or Y that sorted of thing. You should have a principle working on a low level bug (say a spelling mistake or poor grammar) that's for people further down. There's an element of people management here as well.

Staff roles are mostly hand off and are their to take the strategic approach that comes from the exec team i.e. the CTO / CEO and actually puts them into action. So think working with product coming up with reasonable plans that are actually doable. You'll work with the principles to execute your actions. If it's a big system and a big team part of this will be working out how to split the work amongst the sub teams.

This is what I mean by the responsibilities as you become more senior your responsibilities change from fixing spelling mistakes to help set and execute the roadmap of the product / service.

[+] dalbasal|3 years ago|reply
There is a class of these problems that's easy enough to talk about: "Glue work vs gap filling" is relatively easy topic. Broaching "doer/talker" ratios can be stickier.

Some not-my-jobs are evolved/strategic... they have meta reasons. Redoing the company's google-sheets inventory management horror might be high value, but is status-detrimental work for a senior dev, or assistant PM to do. "Excel dude" is low status. Within excel-dude land, the highest (personal) value work might be indulging executive pedantry over the formatting of dashboards. UI is low status at some shops. Talking to clients and tracing back requirements is thankless work at other shops. Etc. Incentives can be wacky in orgs, after all .

People naturally fill in gaps when they're motivated and work independently. You can see this with hobbyists, personal projects, startups, Community OS, small teams, criminal gangs, children playing and whole lot of other human endeavors.

They row in the same direction when they want to go in that direction, perhaps to reach a destination. In 80% of orgs, 80% of 80% of people's concerns are related to happenings on the boat itself. The vector of the boat isn't their job. They don't care where the boat goes.

[+] NordSteve|3 years ago|reply
You need to analyze the organizational landscape to know what your role as a staff engineer really is.

If your manager has sole discretion on your compensation, then you need to be strongly aligned with her goals in order to succeed. If she sees her goals as solely delivery of her projects, then that's what you should work on.

If you work in an organization (like I do) where your compensation is determined by a group of leaders, then you need to look at what the group wants from you and deliver on that. In my group, a big part of that for staff-level engineers is making sure that the overall organization is successful.

Story for me this year: I noticed another team struggling. Their deliverable is really important to my boss 3 levels up, and I have the background to help them get unblocked and be successful. This team works on something completely disconnected from my manager's goals.

I started working with them, and after a month or two told my manager I was working on it. She agreed that it was a good use of my time, and my involvement didn't interfere with other commitments we'd made. I've probably spent about 3 weeks in total on it. At review time, there was widespread agreement that it was the most important thing I've done for the year.

To close - As a staff engineer, you'll see lots of gaps (if you don't see them, you're not a staff engineer). Most of them should be handed off to others. But some of the gaps are things you're uniquely suited to fill, even if it's not precisely in your area of responsibility. They're "not your job" but exactly the right thing for you to be doing. If your role is too narrowly defined, go negotiate with your manager (or better, your manager's manager) to broaden your role.

[+] beckingz|3 years ago|reply
This is good advice. Sometimes fixing things requires not fixing them yourself before getting people to agree that it's a problem
[+] mianos|3 years ago|reply
Yes. And, sometimes when the standard is so low, it's impossible to convince anyone that it is broken. Specially when you indicate the effort to fix things.

Sometimes 'struggling by' is the modus operandi. What comes with this is the toxic culture, high staff turnover and disrespect of anything new by the people who have suffered through it all for a long time.

[+] TameAntelope|3 years ago|reply
I work very hard to avoid working with people who think like this.

Have the guts to stand up and own something.

[+] bluedino|3 years ago|reply
This works with hobbies and your wife as well.

Don't bring up buying a new boat/whatever until she does. "Honey, your boat really looks bad and has so many problems, maybe you should think about getting a new one"

[+] ZainRiz|3 years ago|reply
This article seems to be advocating sticking your head in the ground when something goes wrong

Yeah, sometimes all you can do is raise awareness. And if the ongoing issue is going to affect your deliverables, then you better be raising awareness!

Saying “that’s not my job” isn’t for anyone in a leadership permission

[+] nisegami|3 years ago|reply
Adolescents act out because they quickly realize that the adults in their life give a lot more attention to problems than to things going well. I think this makes sense, and there's a psychological basis for this. I'm not surprised then that it works the same way in the workplace. No one is going to be willing to change things unless they feel the pain associated with not changing it. If someone keeps putting out fires at the expense of their work-life balance or health, then their superiors will simply direct their finite attention at the fires that weren't put out - just as the honor roll student with a dropout sibling probably doesn't get a ton of attention from their parents.
[+] globular-toast|3 years ago|reply
My experience working for a big company is that most things are not your job. It's not that you get to say "it's not my job", it's that you are not allowed to make it your job.

I like working for a smaller company because I can make things my job. In any company there are things that need doing that either aren't being done or are being done suboptimally. Almost every day I spot something and think "I could do that". So I make it my job.

[+] angarg12|3 years ago|reply
This is a topic close to me, and one I have problems expressing my thoughts about without coming across as cynical. My bottom line is "not my job" is a way to avoid companies taking advantage of you.

I'll give you a real specific example. My wife joined a company as a junior fresh grad. As she grew into the role, started to expand her responsibilities to get to the next level.

The first time she got passed for a promotion she decided to take in even more responsibilities to strengthen her case. She was performing at the next level while getting paid the absolute lowest salary for her role. By the end of her tenure she was literally mentoring a newly hired Senior, and still got passed for a promo for the third time because "she wasn't ready yet".

Stretch assignments are a great way to grow, but there is a clear asymmetry of power here. Companies will easily extract as much value as they can from you and give nothing in return. I think it is perfectly reasonable to set boundaries and say not my job. The difficult part is choosing where that boundary should be.

[+] glonq|3 years ago|reply
I often work at small companies. There, you'd better not utter "it's not my job" unless you plan on resigning.
[+] ManlyBread|3 years ago|reply
If I do stuff that is not my job it will become my job to do that stuff. I'm not sure if I want the additional responsibilities or increased workload, especially when there's no guarantee that it will go hand in hand with pay increase. Why bother?
[+] jp0d|3 years ago|reply
I honestly thought, this was related to the ex-prime minister of Australia (Scott Morrison).