I've not heard of Camille Fournier until now, but glad I found her, and this article is quite timely for me.
I'm dealing with several issues right now in trying to "take ownership" of things that aren't mine.
With our EDI system, I only get called in when the "real" owners are too busy, but when I do, I find their entire architecture is a foot gun that makes development way harder and more error prone than it should be.
With our (customer facing) admin system, the entire thing has a UX that I think easily triples the work/time/number of clicks to do anything, and just begs for many routine things that bog users down to be automated.
The problem I do own, the mobile apps, is greatly hampered by the back-end that drives all of the other problems that I don't own, so all problems including mine could benefit greatly from working on that problem as well.
But when I talk to other engineers, they (a) don't see the problems being as impactful as I do, (b) don't believe that I can solve the problems in the first place, and (c) ultimately don't want to put any time or effort into learning about the problems or my proposed solutions, even though putting in a little effort now could save us from regularly having to stay late and fix fire drills like we do now.
I've even gone to the length of building prototypes to demonstrate both (a) and (b), and in some cases they relent somewhat on (a), but continue to talk as though solutions aren't possible... even as they're looking at a live, running prototype.
I'm at a point where I either need to let it all go and just "do my job" (even though I feel the quality of work I can do on my own stuff is being limited by OPP), OR mobilize the internal end users by showing them my prototypes and getting them on my side (to pressure the engineers) which somehow feels a bit sleazy, OR quit and find another job.
Ive been in that situation some years ago and I learnt 2 thing,
1. I mishandled that situation due to arrogance (it finally sunk in that being right isn't enough!)
2. more importantly, against real entrenched positions, I can't fight a fight for which I have no formal authority, and against people who will actively sabotage me even at the cost of themselves (and they really did damage themselves to block me).
It sounds like you're doing a far better job than me in presenting your case, so well done there, but if people are just going to be dicks and you can't get their buy-in, AFAICS and IME you're going to lose. If you can make a case and the other engineers won't take it seriously, raise it up to their manager (and carefully, not in a way that I did which was to annoy my co-workers) whose job it actually is. If boss won't listen, you're stuffed. Swallow it or resign.
I'd suggest trying to find why your co-engineers don't see it as you do - you've given (a), (b) and (c), but it would be interesting to for you to get their side - if they're "regularly having to stay late and fix fire drills", well, the very first thing an engineer does it make life easy for themselves, so why is that not happening here?
Having driven a beneficial change gives you a ton of valuable experience that you can use then in another company, with better processes, and at a more impactful position.
I'd go for it if I were in your shoes and had the energy.
This is a tough situation to be in. I've been there myself and it's not fun. If I were in this same situation again, I would ask myself a few questions:
* Who is my customer in this situation? It could be your boss, your boss's boss, an important stakeholder, end users, etc. Make sure you have clarity on your customer so you can focus on their problems first. If you have find you have multiple "important" customers, then prioritize the most important first. This is likely the person who has the most influence on your immediate success.
* Are any of the problems you identified "your" customer's problem? If so great, time to get to work. If not, consider reprioritizing. You should reach out to your customer and get their feedback on priority. Be careful not to lose sight of the big picture.
* How do I know the other engineers aren't right? If you work with smart people who know how to get things done, then you should take their feedback seriously. Maybe they're right and you're wrong. Always validate your assumptions.
* What would happen if I just solved the problem myself? If you can then do, seriously. Submit a PR with your solution or build a proof of concept. Default to taking action. Don't wait for someone else's approval to get shit done.
* How can I measure and bring transparency to these problems? You'd be surprised how powerful emails with data are. If you can measure the problem (e.g., MTTR, rate of failure, response time) and more importantly the impact on customers, then you may be able to indirectly "motivate" others to solve their own problems. Send regular updates to managers, Directors, VPs, Execs, anyone important who will listen.
* At what point should I just let this go? Time box your efforts and once that time period has been reached, just let it go. This very well could be a situation where the "problem" is not the top priority. You may have to let this one burn so you can focus on other things.
Both you and jonathanfoster have raised some great points here.
In a way, the working prototypes I've built (many of which could be production ready with little extra work) have been my "just get shit done" approach, both to prove my solutions to myself, AND to help make the argument to the rest of the team.
What's tough is that I'm not getting any hard no's on anything... after I build and show working prototypes of my ideas (many of which could be deployed to production with little extra work) I usually get a pat on the back followed by a "we'll discuss getting this out there when we have more time to learn it", and then it goes nowhere.
Next step would be deploying the stuff to production, but I have a good hunch I'd be the only one using the stuff, which wouldn't actually fix the problem from the customers' perspective if only half the system works as they'd expect (especially if new features continue to be written by the other engineers using old systems).
Ego might be part of this, though, so I think being extra diplomatic and trying to frame these ideas as "other people's ideas" might get me further.
Barring that, I might go straight to the customers (starting with our internal users and maybe broadening from there) to make sure my ideas are actually worthwhile to them.
If I can get a hard no from either my co-workers or the customers, I'd be more willing to either back off or find another place where I fit better. But as of right now, I see our customers asking for things we can't deliver, and I have a drive to fix it, but I don't think there's a way forward without my co-workers' and superiors' buy in.
Not gonna lie, I have pissed some people off with this approach myself even when it was handled properly. Diplomacy and collaboration should be used first. Maybe even let someone else take the win. Use the get shit done approach as a last resort.
I've been in similar, though not quite the same, situations, and I've come to suspect that it's a full-on case of “let other people think they came up with the solution themselves.” For which I've got pretty much no skill at all.
There's a certain type of engineer that makes a business out of staying late to fight fires that they set themselves. I'm not sure if there's much chance of changing that culture.
I think there are different ways of looking at this. IMO a CTO who is concerned with "fixing problems" and is working on actually fixing problems is just wrong.
The CTO is in a unique position where they have the power and I think responsibility to be looking at the "meta-problems". Have I done enough to enable others to fix these problems? As soon as you, as CTO, start getting into the muck to actually try to fix the problem you've gone too far or you haven't surrounded yourself with the right people.
I think it's also important to approach it with some humility about whether you fully understand the contours of the problem. Also I think you need to prove that you can and will do something about one problem before you start talking about all the other things you want to fix. Otherwise you have no credibility and others could reasonably think you're just complaining.
>> If you’re reading this looking for advice, you’re probably a go-getter. You consider yourself a responsible person, who cares deeply about doing things right.
In many environments, the tough part about resolving to pick your battles and leave problems to other people is maintaining the image of a responsible go-getter in order to protect your career. "Tending your own garden" translated to the language of your manager may be "limited vision", "not a team player", "does not display leadership qualities" and "not engaged". Regardless of whether or not you or anyone on your team actually has broad influence on anything, you have to act like you think you do to appear engaged.
There's a trade-off in perception, because there are two approaches that different kinds of leaders like. One approach that some favor is the "tell it like it is" approach, where anything is up for criticism by anyone. Another is the "if you're not part of the solution you're part of the problem" approach, where if you bring the criticism, you'd better bring the solution and be willing to see it through.
These approaches both have strengths and vulnerabilities. The strength of the "tell it like it is" approach is that big problems can't fly under the radar, and ideas and criticisms are shared across organizational and disciplinary boundaries. Its vulnerability is that clever people can curry favor by harping on known problems outside their responsibility to fix. Sometimes if a problem is hard enough, the people fixing it don't look like they're doing anything, and it may appear that they don't even appreciate the problem, because they're likely to respond defensively to having the problem announced over and over again. A hard problem is a goose that lays golden eggs for a loud critic, who looks more and more "right" the more they harp on it, and the people who are actually working on a solution lose credibility, without which they can't devote resources to the solution. So a boss who favors the "tell it like it is" approach must be careful not to create an atmosphere where words count more than action.
The strength of the "if you're part of the solution" approach is that it encourages an enterprising spirit and rewards go-getters instead of talkers. Its vulnerability is that big problems may not get talked about at all. Someone might be the only person who sees a problem but assume everyone knows about it but aren't talking because they don't have a solution. Or someone might see a problem and not want to mention it because they don't want to invite pressure on themselves to solve it.
In other words, these approaches are both pathological if they become consistent enough to define the atmosphere in a company. Good leaders have to constantly rebalance them to fit the occasion.
Camille Fournier literally wrote the book on Engineering Management so when she speaks, I always listen [1]. Every technology leader will reach a point where there are just too many problems to solve and OPP is a great mental model for prioritization.
OPP is also a forcing function for leadership. It forces true leaders to step up and make the hard choices.
If you're faced with OPP, here are a few things I found useful in my career.
## Do Important Work for Important People
The best way to be successful in any organization is to do important work for important people. Important work for unimportant people will get you no where. Same is true for unimportant work for important people.
Take a look at your OPP and ask yourself:
* Is this work for someone important?
* Is this work important to that person?
Both answers should be yes, otherwise it's just OPP.
## Let Fires Burn
Once you decide the work is OPP, then you need the courage to say no. You must let that fire continue to burn without it distracting you. Masters of Scale has a good episode on this topic [2]. Easier said than done of course. I found Stoic practices to be very helpful here [3].
## Customer Obsession & Ownership
OPP should always be evaluated through the lens of the customer. Bottom line, the customer is always the most important person and they trump all. True leaders are obsessed about providing a better customer experience and they're willing to pay the price in order to do so.
If you have OPP that's important work for someone important, but it's not important to the customer, then you may just have to let that one burn too. And once you make that call, you have to own it. Always take responsibility for the decision and defend it on the customer's behalf.
I've found Amazon's leadership principles to be invaluable when making these type of tough decisions [4]. It's no coincidence that Customer Obsession and Ownership are #1 and #2.
I need to read the articles and the comments properly, but this
> It forces true leaders to step up and make the hard choices.
reminded me of a discussion on the radio about the mess of a situation detroit car manufacturing had got into. Someone summarised, saying that the bosses spent decades making easy choices instead of the right choices.
Damn. These kind of problems are the exact ones which drive me mad almost every week. Welp, looks like it's time for a new job (not that I haven't considered that already, but now some random article on the internet backed me up :P).
For those that don't know it's a hip-hop reference to 'other people's p...y' or 'other people's p....s' (OPP in both cases). In other words, "Are you fine with pursuing physical relations with people in committed relationships?"
I'm dealing with several issues right now in trying to "take ownership" of things that aren't mine.
With our EDI system, I only get called in when the "real" owners are too busy, but when I do, I find their entire architecture is a foot gun that makes development way harder and more error prone than it should be.
With our (customer facing) admin system, the entire thing has a UX that I think easily triples the work/time/number of clicks to do anything, and just begs for many routine things that bog users down to be automated.
The problem I do own, the mobile apps, is greatly hampered by the back-end that drives all of the other problems that I don't own, so all problems including mine could benefit greatly from working on that problem as well.
But when I talk to other engineers, they (a) don't see the problems being as impactful as I do, (b) don't believe that I can solve the problems in the first place, and (c) ultimately don't want to put any time or effort into learning about the problems or my proposed solutions, even though putting in a little effort now could save us from regularly having to stay late and fix fire drills like we do now.
I've even gone to the length of building prototypes to demonstrate both (a) and (b), and in some cases they relent somewhat on (a), but continue to talk as though solutions aren't possible... even as they're looking at a live, running prototype.
I'm at a point where I either need to let it all go and just "do my job" (even though I feel the quality of work I can do on my own stuff is being limited by OPP), OR mobilize the internal end users by showing them my prototypes and getting them on my side (to pressure the engineers) which somehow feels a bit sleazy, OR quit and find another job.