"Engineers need very specific requirements." I overheard this today, thankfully not from someone at my company. But it pissed me off. This statement implies that software engineers can't think through complex and ambiguous customer problems, that they need someone to carefully prepare very specific widget designs for them to build. That they can't figure out the very specific requirements themselves, if necessary. I suppose if the requirements weren't specific enough, they might ask questions! Questions that only the customer can answer! And maybe not even them! And then maybe they would have to figure it out for themselves and iterate on an idea until the customer is satisfied! Oh no! I'm sure the person who said this was acting in good faith, but siloing engineers off and only feeding them "requirements" robs them of the opportunity to understand and solve the real problems and have real impact. It also wastes time with unnecessary feedback loops. Worst of all, it holds them back from growing into more product and business-oriented directions, which can have a negative impact: on their careers. The next time someone tells you that engineers need very specific requirements, don't argue. Just ask to invite the engineers to the next meeting to discuss the requirements with them directly. Bring them into the process. If you get pushback, go to the engineers directly. The best software engineers I know would appreciate it.
And yet the majority of interview processes favor those who do but not think - those who don’t question the purpose of a hole but how deep should it be. God forbid you even question the existence of a hole.
Oook, but you've surely met software engineers that sigh, fidget, and roll their eyes in meetings and say "Just let me know when you've got a spec for me to code". It can't be just me.
Thing is - in my opinion - exactly this type of engineer will be replaced by AI sooner or later. I had those people in the past and it's annoying to have such ones for whom you have to prepare everything so precisely that I could have done it almost myself. What's the problem with - for instance - starting with an incomplete design or a mock and come to those details later. What's the problem to communicate with product managers or designers later when things turn out to be unclear? Sorry - if you just want to code then, I think, you won't remain in a couple of years..
We should change the language to gathering “Problems” instead of “Requirements”.
The best part of my job is debating ambiguous requirements with the software team and finding out all the ways in which something could break and coming up with solutions. Creativity and engineering can and should coexist.
What that does, is move a big chunk of what a developer might successfully do themselves, into the management layer, in advance of the work. Unfortunately, in a structured org, the maximum speed, scope, and complexity of work are primarily constrained by the flow through the bottleneck. So now your highly paid "big thoughts" staff are moving at a crawl, because they are doing technical work for many developers - work for which they have neither the bandwidth, nor the contextual awareness, to do well. It's like routing your whole network through one CPU - except with people. Engineers need very specific requirements *sometimes*. There are certain projects where highly technical requirements come from an external tool or policy. But when this level of control is not needed, and there are more unknowns, just let the dev use their brain. I mean, why rent their brain and not use it?! But this requires being able to clearly describe what you are trying to accomplish and why *without* those specific requirements, leaving room for the dev to solve. And frankly, that's harder to do, harder to measure, and less showy. It requires both discipline and trust. So... managers don't do it.
The problem with requirements, particularly specific requirements, is that they assume that the cost/benefit analysis has already been conducted correctly, but with software the true costs and benefits rarely reveal themselves up front, they ooze out as the code takes form. But the blame lies on both sides, look at all the development teams insisting on using ‘scrum’: having all features broken down into bite size stories that must be fully specified and specced before development, then refusing to commit to delivering anything more than 2 weeks in advance. Responsibility and decisions must sit together, if a development team refuses to estimate and plan features from high level descriptions then they lose the right to implement those features from those descriptions, whoever is taking that responsibility to break it down, plan it and commit to delivering is the one that gets to determine the specifics.
more often this becomes a bandwidth issue and interests for the team where software engineers spend time to solve problems and not identify one. On another note it makes sense to include your senior engineers who have considerable experience building such products for customers in those customer discussions to gain trust for the customers as well as have the product manager gain considerable insights with those interactions.
this statement implies that software engineers are accumulating management, lead and product roles without being payd for it :) it also pissed me off when i hear something like: "this engineer must have an eye on the product" - so why do we have product, management and lead teams? I believe this is a strong skill that must be developed by those who want to be on leading roles, its a must have, nothing wrong with it - but its not a software development skill, is a management skill, put this on the "engineer requirement" its the same that bricklayers need to validate the engineer's and architect's work, or that engineers must construct the building themselves.