this post was submitted on 06 Sep 2023
1077 points (99.4% liked)
Technology
59169 readers
3204 users here now
This is a most excellent place for technology news and articles.
Our Rules
- Follow the lemmy.world rules.
- Only tech related content.
- Be excellent to each another!
- Mod approved content bots can post up to 10 articles per day.
- Threads asking for personal tech support may be deleted.
- Politics threads may be removed.
- No memes allowed as posts, OK to post as comments.
- Only approved bots from the list below, to ask if your bot can be added please contact us.
- Check for duplicates before posting, duplicates may be removed
Approved Bots
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
In my own impression from the side of software engineering (i.e. the whole discipline rather than just "coding") this kind of thing is pretty common:
So you end up with what is an excellent process when used by people who know that each part tries to achieve, what's the point of that and when is it actually applicable, being used by people who have no such experience and understanding of software development processes and just use it as one big recipe, blindly following it with no real understanding and hence often using it incorrectly.
For example, you see tons of situations where the short development cycles of Agile (aka sprints) and use cases are used without the crucial element which is actually envolving the end-users or stakeholders in the definition of the use cases, evaluation of results and even prioritization of what to do in the next sprint, so one of the crucial objectives of use cases - the discovery of the requirement details by interactive cycles with end-users where they quickly see some results and you use their feedback to fine-tune what gets done to match what they actually need (rather than the vague very high level idea they themselves have at the start of the project) is not at all achieve and instead they're little more than small project milestones that in the old days would just be entries in Microsoft Manager or some tool like that.
This is IMHO the "problem" with any advanced systematic process in a complex domain: it's excellent in the hands of those who have enough experience and understanding of concerns at all levels to use it but they're generally either used by people without that experience (often because managers don't even recognize the value of that experience until things unexpectedly blow up) or by actual managers whose experience might be vast but is actuallly in a parallel track that's not really about dealing with the kinds of technical concerns that the process is designed to account for.
You're just saying that skilled people can do stuff better than unskilled people. This is hardly a software engineering issue. It is common in all aspects of life
The difference with software engineering is that the field is still relatively young enough to not have figured out a working model or sets of working models (unlike farming, for example, or finance).This field is realistically 30 years old during which it continuously evolves and redefines itself so it's still not going to produce good working models.
Agile, since you picked on it, is very difficult to implement because it specifically relies on engineering figuring out how to work and how to deliver. It's really not a model at all. It's just a set of guidelines meant to create the environment in which the figuring out happens. It's no wonder that it only works when people have the ability to figure it out.
I'm not saying whatever you're trying to put in my mouth.
In very very VERY simple terms: A software engineer with half the experience of somebody at a technical architecture level isn't half as capable a technical architect- such a person is pretty much totally incapable in that domain.
Experience isn't linear, it's a sequence of unlocking and filling up of experience in domains which are linked but have separate concerns, with broader and broader scopes that go way beyond the mere coding, and this non-linerarity happens because it takes a while before people merelly become aware of the implications at the level at which they work of certain things outside their scope of work.
So if you're not at the level of even being aware of how the end users of a software being developed themselves have very vague and extremelly incomplete ideas of what they need as software to help the in their own business process, then you can't even begin to see not only what's the point of certain practices around things like use cases, but even the entire need and suitability of Agile versus other development processes in a specific project and environment, so you're not at all qualified to decide which parts of that to do and which not to do in the specific situation of your specific project, or even if Agile is the right choice.
People who don't even know about the forms of requirements gathering in different environments can't even begin to evaluate the suitability for their environment of a Process such as Agile which was designed mostly to address the "fast changing requirements" project situations, which are the product of various weakness in requirements gathering and/or fast changing business needs, which at the development side snowball into massive problems when long-development-cycle processes such as waterfall are used (for example when supposedly "done projects" do not produced something that matches stakeholder needs, hence end up having to be "fixed" so late in the process that it massivelly disrupts the software at a design and even architectural level, introducing massive weaknesses in the code base and code spaghettization, hence bugs and maintenability nightmares).