by rubyissimo on 1/24/24, 2:21 AM with 122 comments
by Aurornis on 1/24/24, 3:30 AM
> A critical piece of avoiding endless debate is to know who makes the final decision and how it gets made. Consensus-seeking leads to endless debate.
Every rapidly growing company I’ve worked for has reached a point where we have product managers and program managers and engineers and engineering managers and stakeholders and suddenly nobody can even identify who is the decision maker.
Weak leadership then pushes a “we all have to work together to come up with a solution” angle that clarifies nothing and turns everything into a consensus-building operation. Progress slows to a crawl.
The second most common failure mode I’ve seen is, I hate to say it, similar to what this author is proposing as a solution: Product Managers who view themselves as facilitators of a process where they get others to come up with the answers about what to build. The product managers call meetings where they shuffle context and requirements and suggestions from stakeholders to engineers and customers and back and forth under the idea that their job is to lead others to the conclusion. I’ve worked with some product managers who produced prodigious amounts of meetings and slide decks and Figma charts and process documents and Notion pages and after meeting summary e-mails but can never actually conclude what we should build. They’re so enamored with process and documents and afraid of being prescriptive, so you only get questions and prompts and meetings and frameworks to follow to supposedly arrive at a conclusion about what to build.
by roenxi on 1/24/24, 3:02 AM
"Just tell me what to build" is a dangerous attitude to foster. It pushes more work into the management layer which is already a bottleneck for making decisions. That is bad strategy. A couple of devs thinking that way is OK, but it is going to accentuate the inevitable management dysfunction.
The best approach is a culture where PMs understand customer problems and give quick, effective feedback to developers about whether what they just did affected a customer in a good way. Then management lets developers do what they do as quickly as possible. Alternatives can work, but that is the sweet spot.
The ultimate goal of any software company is to have that one lucky dev who just gets it, builds something amazing quickly and then the company comes in to maintain and milk the product until management miscalculates, destroys it and the cycle starts again. Failing that, the next best option is a product guy who just gets it and organises the engineers to build something that makes customers happy. Neither of those states depends on debate or, curiously, on what the median developer is doing. Software developer productivity is one of the spikiest, most disjointed and chaotic metrics I've ever dealt with and most of the time it appears to be $0/day value add or slightly negative. Then sometimes it spikes to a few million dollars an hour. The culture should all be about working around the spikes, not the day to day.
by solatic on 1/24/24, 6:36 AM
Organizations that do nothing until someone else tells them what to build are afraid of sticking their necks out for some dominant manager to just ignore them anyway.
This is why executives and managers are recommended to foster psychological safety. Respect the efforts of people who built some skunkworks project, then discuss realignment with them afterwards (understanding that you, the executive, may need to be the one who re-aligns). Encourage people who never stick their necks out to start to tell you what they think, even if only privately at first, and eventually hopefully they'll start to join the discussion too.
There's a lot of talk about clarifying who exactly the decision-maker is in any situation. It's a nice fantasy to think that the decision-maker should always be some kind of manager or executive, but the truth is, if you issue a dictate from on high to someone to do something that they deeply disagree with, eventually everybody's going to leave. That's not the way you lead people. Ultimately, the person who does the work is the person who decides - all that you can ask from them, as a manager, is for them to listen to you (and other stakeholders) first, especially since someone who never does as they're asked is someone who will, sooner or later, get fired. But no manager can truly control the actions of their subordinates, and the wise manager understands that and channels that into productive workers who are mostly (but never fully!) aligned with the organization.
by orand on 1/24/24, 5:26 AM
I worked on a team that went from a very strong "debate everything" culture to a very apathetically strong "just tell me what to build" culture, and it was primarily due to the hires we made. We hired for the ability to grow technically, and that certainly proved true. But the interest in the "why" behind the work never developed the way the "debate everything" folks assumed would happen with all good devs. The QA team cared, and remained in "debate everything" mode, but the dev team eventually just wanted to be left alone to focus on relatively meaningless (without context) work. No amount of connecting the dots to real user need seemed to really get through. They just wanted semi-challenging technical problems, and a paycheck. Nothing wrong with that in moderation, but it ended up infecting the entire team.
So be careful how you hire. If you have a blind spot for this phenomenon and hire exclusively for technical skill and/or potential, you might just get unlucky and end up with a critical mass of "just tell me what to build", and then you're screwed, because you'll have a technically strong team that has zero interest in understanding the bigger context of their work, forcing you to choose between getting sucked into the codependent relationship, or resigning yourself to doing the wrong thing with great technical prowess.
by proc0 on 1/24/24, 4:30 AM
This is an underestimation of the potential of software systems. Of course it depends on the software application, but in many cases there is a lot of value lost when organizations implicitly create a technical ceiling for their engineers, and push their focus away from the theory and practice of engineering.
Saying that there is more value for an engineer to coordinate, plan, and present, is almost like saying that there is a point in which software systems can no longer be innovated or improved, or that there is nothing about software that requires more than 5 years of experience (or whatever the senior level would be). This is a sure way to build naive systems that brake all the time, when instead it could implement more sophisticated solutions. Of course this would mean that engineers would have a harder time communicating their solutions, but once again, it would be limiting software just because the managers want full control and visibility at every step of the way.
We're now talking about the possibility of AGI, yet it seems every software org still goes through the same problems, with the same type of bugs, pipeline problems, etc. This is definitely not because software can't solve the problems, so it must be that the solutions are too hard to implement, and so the question is why is that hard?
by agentultra on 1/24/24, 2:55 PM
Too many chefs, not enough cooks
In general this happens when companies over-value management. If you find each "team" of 3-7 software developers have at least 3 "managers" on the team (in addition to the visual designer and other folks in productive roles): you've got too many chefs. Decisions have to go through the committee, the process, etc. Software developers that are making the product itself are rational, intelligent, capable people whose hands become tied behind meetings, documents, and permission-seeking. Too many chefs make for busy work and they focus on the wrong work.
One manager for 5-8 software developers is often good enough. Someone who interfaces with HR, handles administrative tasks, and is the voice of the team to the rest of the company at meetings. A good manager enables the team to do their best work and stays out of the way.
by Exoristos on 1/24/24, 4:00 AM
by j4yav on 1/24/24, 6:16 AM
by KaiserPro on 1/24/24, 9:51 AM
In most cases, you are engineering a solution to solve a business need. Each engineer should know the business metrics you are trying to move, and why, not just the PM. This tends to highlight that navel gazing on which framework to use is pointless, because unless you actually build something, the money isn't going to arrive, and you'll be out of a job.
Software engineering is all to often treated as a black box, that must be isolated from the real world, lest the magic smoke escape. But that leads to terrible decisions, and allows "carbon fibre" programmers to flourish. Engineering should be a business unit like any other part of the company.
by jruohonen on 1/24/24, 3:23 AM
Ref.:
by uoaei on 1/24/24, 4:03 AM
by eschneider on 1/24/24, 1:16 PM
What I'll never do again is work at a place where every decision is subject to re-debate anytime someone decides "they don't like it." I just don't have the mental energy for that bullshit any more.
by beryilma on 1/24/24, 4:16 PM
But then, I leave the developers and/or the manager to make their own decision and shoot themselves in the foot if they happen to make the wrong decisions.
This approach takes more time, but I think it improves the sense of ownership of developers and their maturity over time.
by ProfHiggs on 1/24/24, 4:44 PM
by throwawaaarrgh on 1/24/24, 3:33 AM
1. Uncertainty. People haven't done X before, and are concerned about the outcome, so they delay, by debating. They don't know whether they're right or wrong. They're really just trying to figure out their own opinion. So they will bring up objections, even if they don't actually have a concrete reason to object. They just literally don't know if something is valid, so they pose a hypothetical. Another form of uncertainty is lack of trust. If somebody has trust that an outcome will be acceptable, then they can deal with any fears they might have about whether a given approach will have the outcome they hope for. If they can't trust the process, or people, they'll bring out road blocks.
2. Ego. Let's face it, we work with people with big egos. People who are smart, and capable, and know it.If their egos don't feel adequately compensated, they will debate until it is.
I think "just tell me what to do" is easier to understand:
1. Apathy. It's a real killer, and it can hit any organization. Sometimes people care too much; if they don't feel like they can affect change, that turns into caring too little. Or perhaps they've just been burned too often at this job. Frustration builds until the stress or friction is too much, and they compensate emotionally by disconnecting. Some people carry this from job to job, like a form of PTSD.
2. Inexperience. When you have a lot of experience, you mostly know what to do already. But if you're working on something very new, or the organizational hierarchy isn't clear, or goals aren't clear, or processes, or you just don't have a lot of professional experience, you can be lost in a sea of uncertainty, not sure what to do. Maybe you have ideas of what to do, but it's not clear how to decide on it. So you relent, just waiting for someone to give you some guidance.
In each of these cases, the missing component is: leadership. There must be good leadership to help people do their best work and keep the ship sailing. Bad leadership, or the absence of leadership, will lead back to these problems.
by diiaann on 1/24/24, 3:48 AM
by btown on 1/24/24, 5:05 AM
https://blog.danlew.net/2021/02/23/stop-nitpicking-in-code-r...
That said, review debates are only one part of a "debate everything" culture. Architectural disagreements are much harder to solve while maintaining morale. One thing I've found effective as an engineering leader, when we need a plan of action, is to ensure I listen to every technical take, but make it clear that while I'm incorporating all those concerns into the decision, some concerns need to be weighted more than others based on larger medium-to-long-term business context, and that those concerns need to drive the design. It isn't always the best approach with 20/20 hindsight, but the removal of paralysis has been a net positive so far.
by Amasuriel on 1/24/24, 10:01 PM
A real leader should absolutely value and respect the input of their team, but also know when to just say “of the options, this is what we are going with, here is the trade off we are making and why” and have the mutual respect and trust of their team to make both of those activities successful.
by rubyissimo on 1/24/24, 2:44 AM
by LAC-Tech on 1/24/24, 3:28 AM
by 38 on 1/24/24, 2:58 AM
by iancmceachern on 1/24/24, 4:13 PM
Data driven decisions.
by mmcnl on 1/24/24, 8:20 AM
by danielovichdk on 1/24/24, 7:10 AM
Debating is also used as a human interaction tool for "feeling part of" or "being good enough" and it's especially clear in a startup and early company setting where everyone kind of tries to show their own merits to the rest of the group.
It's unhealthy to debate a lot and it's a clear sign that there is either too much uncertainty, too much ego, too little subjective evidence or simply too shallow leadership.
Debating should be very surgical and not attempt to either look into the future or favor the most outspoken.
by hnthrowaway0328 on 1/24/24, 4:30 AM
I don't care what kind of data you want me to load, but let me know the frequency, the type, the schema and other technical information and I'll load it for ya.
by jauntywundrkind on 1/24/24, 6:15 AM
They were taking about how they just want people to have a well formed idea of what to build, to be able to hand off clear expectations, and let him roll. For curiosity sake I started asking about other times: has there been a time where you've felt on the line, been the one who has to figure out what to do?
They paused for a bit & then said yeah, actually... They had been battlefield promoted after two higher ups on a team had left & it was just them running this product. They said they had little idea what they were doing but the company trusted them & let them hack through it. They loved that time. Finding out what to doz being given problems and the freedom to solve it was a highlight of their life, they said.
A lot of people don't want to play the game. Especially when we are forced to collaborate with non-technicals, it's incredibly hard to justify and explain ourselves & to share power & compromise with these people who lack competency to judge, assess, negotiate.
The title here omits the gods truth as an option: we the engineers know & can assess & you the business/product don't have the technical chops to debate, nor do you understand what is to be built. The premise presented is "debate vs do" as they say it, as though product and product alone understands do. But I think most engineers live in pain and dissonance and sadness, feel an incredible impedance and struggle, because most businesses/product have only the faintest fragmentary fake propped idea of what do is. It's a fiction. And it's up to engineers to cobble together some vaguely competent rendition of the fairy tale nonsense product tells itself it's come up with and that engineers need to just do.
The phrasing here could not be more slanted. Run, engineer, run, from the dented terrors that would think their product sensibilities have fully flushed out the idea, that think there is no cause for "debate" or sussing out how really to do a things that think only to "do" what the master product says is necessary.
by mhss on 1/24/24, 3:39 AM
by leetrout on 1/24/24, 3:09 AM
https://www.corporate-rebels.com/blog/next-influential-manag...
by bluedino on 1/24/24, 12:46 PM
We had a simple avatar upload. Done this in every app we had ever made. It "broke". And I mean it didn't really break, but it changed enough where it might as well have.
Who changed it? Sales (aka the customer)? QA? Development? Design?
CEO.
by lgkk on 1/24/24, 3:43 AM
Does what you’re doing increase revenue, profits, market saturation, improve customer experience, whatever?
If it doesn’t don’t do it.
I don’t think it needs to be that hard.
Fire people who waste time that detracts from this mission.
Imagine you’re in close quarters combat as a soldier and your team lead is goofing off or your manager is focused on looking good. Don’t find yourself in that position. Don’t let your team get to that level of incompetence and failure.