This article does a good job of touching on how empire-style organizational structures are dysfunctional.
The reason monkey keeps jumping around is because there are ZERO directly responsible owners of the delivery of the cross-functional outcome for the business.
In my company, we have PM, Sr. PM, Director of Product, VP of product - interfacing with Designer, Sr. Designer, Design manager, Sr. Design manager, director of design - interfacing with Eng 2, Sr Eng, Eng manager, Sr Eng manager, Eng director, Sr. Eng director, Eng VP.
Nobody can tell who owns the final decisions, decisions cannot be bubbled up, every management chain is only focused on their own goals. There is no decision-making structure at all. Inevitably projects get delayed or there are unaccounted issues. Then each management chain stack ranks their reports for not achieving goals - never once accepting that the empire structure never made any decisions when it was necessary.
The empire structure has to go. It is dysfunctional, doesn't work, and only causes grief to everyone involved. Tasks are unnecessarily hard. It is easy to do. Just make your highest paid people directly responsible for outcomes. Give them the freedom to pull people from various org functions to get a project to success.
I know this wasnt what the article was about. However...
Product should have nothing to do with refactors on the systems. That should be an engineering responsibility.
Engineering needs to own their own availability to product. Engineering cant be 100% available to product and engineering needs to grow up and state their availability to product.
I think in the real world, what almost always happens is, "it looks like you're dedicated x capacity to technical debt reduction, but this is a critical business initiative, so you need to defer that and work on new features."
It better be a critical business initiative otherwise why are we even talking. Product better not be coming to me with half thought through optional BS.
Fair. The problem is that neither design nor development will size the request until product gives them a priority but product cannot prioritize till they get a size. And the going around circle continues.
> Product should have nothing to do with refactors on the systems. That should be an engineering responsibility.
In practice, Product often controls the budget. So even if Product doesn't have the explicit power to veto a refactor, they have a lot of implicit power to deny this by only allocating enough to get a feature done.
Now if you care, you just pad estimates and don't mention that there is a 20% tax or whatever for refactoring.
That doesn't work in all cases, especially if the code base is particularly tangled. But you can get a lot of small things done this way.
Your job, as an engineer, is to keep the ship battle ready.
Not waste time by ceding control to another entity that doesn't have any engineering know-how to evaluate what does and does not need done.
Take the reigns and do what needs doing.
If there was no trust, they wouldn't be asking you to do the work in the first place.
Ridged top-down organizations wither away and die because they lack the agility and insight to respond to unexpected conditions. Leadership can set the high level goals of a mission, whether they like it or not, they need to also give the autonomy and authority to the field commanders to achieve those goals however they see fit.
If you are concerned your field commanders are going to go off and not stay focused on the goals then you've promoted too early.
The time for sitting around a table and talking openly at a higher organizational level is when deciding what goals to set, not in the heat of battle, unless it is to call a retreat.
It is only time to pack up when leadership is so full of itself that it cannot understand this.
Of course, you could argue that having a funding structure that necessitates padding in the first place is the early signs of the wheels coming off - which I would agree with.
> Not waste time by ceding control to another entity that doesn't have any engineering know-how to evaluate what does and does not need done. Take the reins and do what needs doing.
Problem is organisational power. What happens when the "another entity" is the one that has the decision making power and is the one that can use that power to pressure you what to do and what not to do?
Asking cause this was my life for a while, and its an endless and gruelling battle of persuading, educating, trying to make someone understand things they don't want to understand ...
Blizzard wanted "Warcraft in Space". Designers came up with gameplay, which would be hard to implement in the existing warcraft engine. Engineering told the designers; we can do everything you want, but then we need extra time to build a new engine first. Everyone agreed and the best game of all time was made.
The 'refactor' was integral to the success of starcraft, and is definitely a tradeoff that needs to be weighed for new products.
Product should have nothing to do with refactors on the systems.
Let's assume the reasons to refactor are:
1. Reduce unnecessary complexity, and
2. Reduce the gap between the code architecture and our current understanding of the domain.
Sure, you could refactor and preserve 100% of existing system behaviour, but:
- why not take the opportunity to discover the remove features that are annoying to maintain, but that the ops folks can live without (with some process change)?
I meant refactor extremely broadly. As in the stuff that doesnt make customers happy, it makes engineering more effective at their jobs so they can deliver faster.
That includes refactoring, pruning, training, scaling, vendoring, etc.
There is a lot of fear in sunsetting features. This could be due to friction in how long it takes to develop. For example, consumer technology does a better job than regulated industries such as finance or healthcare.
My (limited) understanding supporting developers for two years is that product does not take no for an answer, and controls everything from budget to sprints, and can insist on whatever they like, whenever they like. So... I'm going to take your comment as a lovely fantasy like spherical cows. Refactors are a joke that never gets off the ground, after a decade.
In the healthy orgs I have worked in, it is a give and take relationship between product and engineering. Engineering should absolutely push back on some things and needs to also push for engineering specific projects. No spherical cows, just adults talking about needs and priorities.
The current place I am at has a history of eng doing anything product wants and not saying no or "yes and." As a result, the eng side is a mess, builds are slow, service and data boundaries are muddled, and shipping working software continues to slow. Incidents are rising and customers are starting to churn and larger customers are harder to sign.
As part of eng leadership, my role is helping teams learn what a healthy product and eng relationship looks like, which includes pushing back and gaining alignment on the need for eng focused projects.
So you will diligently improve the relationship and get things cleaned up, maybe even get credit for it, but the incentive for the next person in your post will be to cash out that built-up equity by saying "yes" to everything again and then getting promoted for their amazing velocity, nevermind that the code is now goulash again. I guess this is the cycle of basically every organization in human history.
That’s also how scrum should work you have the team that has burn down and by that you plan how much can be picked up.
Team should not be concerned by what to pick up but should be concerned by keeping the pace on the same level and if someone goes on vacation to make it clear for the product.
This reminds me of those useless articles like "Donald Trump should resign". Okay, and? We should all have mansions and sex robots. It's utterly pointless to pontificate about should; it makes it sound like you have no understanding of the actual real world. In the real world, your company is run by pathetic parasitic asshole narcissists who will never give half a shit what anyone like you thinks.
This. It all boils down to shared vision and autonomy. All teams should be acting in concert for the same goal. If they aren't the board needs to cut the CEO yesterday and find someone who is going to foster a cooperative culture.
I work in a company where each team is aligned and has autonomy and trust, where people listen and find ways to help the other team. It's game theory with the right algorithm installed. Oddly enough, the company was founded during the peak of the military hierarchial taylorism cargo cult clusterfuck that bore mutants like GE. The military doesn't even work the way these companies operate.
The organization on the article is highly dysfunctional. But it's not going to be solved by higher management getting busy with the details of the project's work.
The problem here is how the work is divided, with everybody disempowered and turned into helpless cogs. If the goal was to prohibit any kind of improvement, they wouldn't make such a perfect attempt... And yet, that's the "normal" way to organize software development.
This was my impression of the article as well. Nobody can agree on what they're all trying to improve in the product and why, everyone's just trying to avoid being fired while working on their own stuff.
Organizational dysfunction is what I had in mind when I wrote it. It is highly complex. A founder led or a small organization is highly empowered to course correct the ship as opposed to organization with several layers of complexity. Everyone wants the buy-in but people don't have high agency.
Yeah, but tracking the monkey will only help you survive in there. It won't help fix the organization.
What fixes that problem is delegating the authority over team-sized problems to the teams, and structuring the organization so that larger issues are all contained over the equally sized management structures.
And despite management books all preaching that kind of organization, almost nobody does it in practice. A few problem-oriented organizations get the large structure right, but nobody at all gets the fine-grained delegation.
It is not an ownership problem only, the issue, which is very common, is that you need someone who can connect the dots and know that if he/she doesn't, the ball will go back and forth infinitely, and far from the soccer goal.
One profile that fits here is a generalist and/or program manager who had strong experience and skills in a specific field (e.g. developing software). The generalist can talk about sales, marketing, operations, and business and match with real experience. He/she knows how to move the ball forward.
An organizational solution to this problem is (Amazon’s) “single-threaded owner” model: all the disciplines report to (perhaps with a dotted line in a matrix org) one directly-responsible manager. The manager sees the big picture and can break down roadblocks, though they still may be building their own empire and reluctant to pivot or shut down their big project.
> It was boss-imposed meaning it cannot be disregarded by Product team. It is expected to deliver otherwise the team will face penalty.
This is often the problem. The bosses impose fad of the day as the next thing to work on and expect everybody to be excited about it. And the fads keep changing year after year. And when the managers try to pass the monkey to software engineers, in my case, engineers do a half-ass job because they don't care about the new fad.
This is the first time I hear about this analogy and I think it's quite interesting. As with all business analogies, it probably doesn't fit all situations. Like at some point the monkey gets split into sub-monkeys, and suddenly you have monkeys all over the place. That said, it gives a good way to think about how to find a way out during those meetings where teams get stuck and everyone stares at each other while a big "ok, so what do we do now?" question is hovering the table.
This very nicely explains why I had to leave my job.
I became 'lead of product development' but mostly had the role of PO. (and scrum master too i suppose). So it was more like several monkeys fighting on my back while I was face down in the mud, but yeah.
The reason monkey keeps jumping around is because there are ZERO directly responsible owners of the delivery of the cross-functional outcome for the business.
In my company, we have PM, Sr. PM, Director of Product, VP of product - interfacing with Designer, Sr. Designer, Design manager, Sr. Design manager, director of design - interfacing with Eng 2, Sr Eng, Eng manager, Sr Eng manager, Eng director, Sr. Eng director, Eng VP.
Nobody can tell who owns the final decisions, decisions cannot be bubbled up, every management chain is only focused on their own goals. There is no decision-making structure at all. Inevitably projects get delayed or there are unaccounted issues. Then each management chain stack ranks their reports for not achieving goals - never once accepting that the empire structure never made any decisions when it was necessary.
The empire structure has to go. It is dysfunctional, doesn't work, and only causes grief to everyone involved. Tasks are unnecessarily hard. It is easy to do. Just make your highest paid people directly responsible for outcomes. Give them the freedom to pull people from various org functions to get a project to success.