| ▲ | anhner 3 days ago | |||||||
It's wild to me that a lot of people consider that SWE need to be knowledgeable in business requirements and interact with clients all day. Just try to imagine construction workers doing the same thing when building a skyscraper. Instead of laying bricks, mortar and beams, now every worker loses 1-2 hours each day asking each stakeholder separately what they want, if they like how it's going so far etc. And then make changes to the layout when the clients ask! What kind of monstruous building will emerge at the end? Edit: if you downvote, at least provide a counter argument. Or is etiquette dead? | ||||||||
| ▲ | ilaksh 2 days ago | parent | next [-] | |||||||
Construction worker is a spectacularly bad analogy for software engineer. The architect and structural engineers design the building well in advance. Construction workers are mainly arranging materials according to a prewritten design. Software engineers are not given specs that are equivalent to blueprints. They are given requirements or user stories. Then they have to flesh out the final real specification in place. And then from the specification, decide how to implement it, which is not decided at all ahead of time. Also, what software engineers are building is almost always somewhat novel, at least dramatically more novel than a typical building. It very often involves some type of research task, even if that is just sifting through components and configuring them. There is much more room in software engineering for 1) miscommunication or poor communication of users needs, 2) substantive tradeoffs discovered based on technical details or 3) subtle contradictions in requirements from different stakeholders discovered during implementations, 4) better understanding of requirements by users discovered during prototyping, etc. | ||||||||
| ▲ | rswail 2 days ago | parent | prev | next [-] | |||||||
They should have a general idea of what they are building and why, in exactly the same way as a construction worker. That doesn't mean they spend all day asking stakeholders what they want. It means that when there is a choice and the stakeholder has to make a decision, the developer should be able to understand some of what the stakeholder is looking for so that they can recommend a direction. Sure, a carpenter is just putting up a wall, but if they're experienced and they see that there's going to be a joist that is going to block some feature, they should be able to point that out to the architect or builder or client. | ||||||||
| ||||||||
| ▲ | rswail 2 days ago | parent | prev | next [-] | |||||||
The other argument about this is whether or not an SWE is a fungible resource. When you're doing a construction schedule, you might have a pool of carpenters, pool of electricians etc. They can be assigned to the different jobs as a fungible resource, a different carpenter can take over a task just like one power drill can take over another. We all know that no matter how much ceremony and process, SWEs are not equal, so you can't just move them around randomly. | ||||||||
| ▲ | qwertytyyuu 2 days ago | parent | prev [-] | |||||||
If upvoting doesn’t require justification neither should downvoting. But let me try to express why people disagree. Change is software compared to physical systems is comparatively incredibly cheap. Unlike in building something known, design at the start of a software project is unlikely to be the one the client actually wanted nor would be the one that is one going to be build. Or at least it shouldn’t be. The “brick-laying” part of software isn’t the hard part. Depending on want to analogise as “brick-laying” in software, that part could automated. Push to main and the deployment pipeline runs tests, makes sure things are working and voila! You have a new “house”. If its ugly or falls apart in software, easy , just revert to the previous version and its like nothing happened. Client wants a try different layout, it can be done affordably. Most of the time in software engineering you don’t know exactly how to do something, there is always a degree of discovery, experimentation and learning involved. Heck the client probably isn’t expressing what they want clearly enough, and probably will at some point change their mind. Thus interacting with clients and customers is valuable. | ||||||||
| ||||||||