Agile was designed for contractors to deliver contract work. It’s a terrible design for any sort of sustainable business plan, hence “working software over comprehensive documentation”. That line right there causes the majority of outages you as a consumer encounter.
Especially that working software over comprehensive documentation part, which can be automated so easily if done right.
There’s so much value in TDD and providing a way to do integration and automated UI tests early on in a project, yet none of the companies I’ve worked at made use of it.
Also automated documentation tools like Swagger are almost criminally underutilised.
Would you rather have working software or a bunch of documentation? If your software is having outages then by definition it is not working. If documentation is the root cause of that then you should fix that by creating enough documentation to allow your software to continue to work per “working software over comprehensive documentation”. Maybe I’m missing something but I don’t see the contradiction here.
From a (dev)ops perspective, if I had a vendor hand me a tarball instead of proper documentation, I’d look very far away from their company. It isn’t a matter of if shit goes wrong, but when. And when that shit goes wrong, having comprehensive documentation about the architecture and configuration is going to be a lot more useful than having to piece it together yourself in the middle of an outage.
In long term development, sensible and updated documentation is far more important than the software working constantly. You will have downtimes. You will have times before the PoC is ready.
But if your documentation sucks or is inexistent, you cannot fix any problems that arise and will commit a ton of debt the moment people change and knowledge leaves the company.
Fair enough, at my job the code working consistently is absolutely the number one priority at all times but I can imagine that there are some places where this is not true. If working software isn’t imporant then I agree agile is probably not the right choice
It’s worth pointing out though that having insufficient documentation is not a feature of agile. Sounds more like laziness or misplaced priorities to me as documentation is called out as being useful in the agile principles, just not as important as working software.
Gotta remember it was a response to water fall. Docs didn’t mean the man page or the wiki, they ment the spec sheet, PowerPoint’s, graphs, white papers, diagrams, aggreements and contracts, etc. Where you might go MOUNTHS making paperwork before you ran a single line of logic.
Docs SHOULD be the last resort of an engineer if your UX just can’t be intuitive in some way or some problem domain just can’t be simple. You should first strive to make it work well.
For example Lemmy, it just would work if you needed to read the Lemmy user guide first to post on Lemmy. That would indicate bad UX, but that was how it was back in the day.
Unified process, which, despite usually not being called that way and/or being codified in the way it is nowadays, is how virtually all early software companies did their development work post-punchcards (when you no longer had to get things done in a single step).
It’s why the “agile is better because iterative hoooo!” is so laughable, because even though we didn’t yet call it iterative - as a distinction from pre-planned, since we thought in punchcards+mainframe vs after that - we did iterative work. Of course we did, software development is naturally iterative and Waterfall was the contrived contrasting example of how a non-iterative process would look.
Agile was designed for contractors to deliver contract work. It’s a terrible design for any sort of sustainable business plan, hence “working software over comprehensive documentation”. That line right there causes the majority of outages you as a consumer encounter.
The very first mistake most people make when reading the agile manifesto is that “a over b” means “don’t do b”.
100% that.
Especially that working software over comprehensive documentation part, which can be automated so easily if done right.
There’s so much value in TDD and providing a way to do integration and automated UI tests early on in a project, yet none of the companies I’ve worked at made use of it.
Also automated documentation tools like Swagger are almost criminally underutilised.
The other mistake everyone makes is “agile = faster and cheaper” . This results in corner cutting and unreasonable deadlines.
Would you rather have working software or a bunch of documentation? If your software is having outages then by definition it is not working. If documentation is the root cause of that then you should fix that by creating enough documentation to allow your software to continue to work per “working software over comprehensive documentation”. Maybe I’m missing something but I don’t see the contradiction here.
This is the most accurate description of anything that’s ever been written.
Or create a better UI that doesn’t require so much documentation.
This assumes front-end development.
From a (dev)ops perspective, if I had a vendor hand me a tarball instead of proper documentation, I’d look very far away from their company. It isn’t a matter of if shit goes wrong, but when. And when that shit goes wrong, having comprehensive documentation about the architecture and configuration is going to be a lot more useful than having to piece it together yourself in the middle of an outage.
Yeah, I almost added a clarification for that very point, and see now that I should have.
Sacrilege!! /s
In long term development, sensible and updated documentation is far more important than the software working constantly. You will have downtimes. You will have times before the PoC is ready.
But if your documentation sucks or is inexistent, you cannot fix any problems that arise and will commit a ton of debt the moment people change and knowledge leaves the company.
Fair enough, at my job the code working consistently is absolutely the number one priority at all times but I can imagine that there are some places where this is not true. If working software isn’t imporant then I agree agile is probably not the right choice
It’s worth pointing out though that having insufficient documentation is not a feature of agile. Sounds more like laziness or misplaced priorities to me as documentation is called out as being useful in the agile principles, just not as important as working software.
Definitely. Most often it’s people misunderstanding the “a over b” of agile as “never do b”.
Gotta remember it was a response to water fall. Docs didn’t mean the man page or the wiki, they ment the spec sheet, PowerPoint’s, graphs, white papers, diagrams, aggreements and contracts, etc. Where you might go MOUNTHS making paperwork before you ran a single line of logic.
Docs SHOULD be the last resort of an engineer if your UX just can’t be intuitive in some way or some problem domain just can’t be simple. You should first strive to make it work well.
For example Lemmy, it just would work if you needed to read the Lemmy user guide first to post on Lemmy. That would indicate bad UX, but that was how it was back in the day.
It wasn’t, Waterfall in itself was a contrived example of a bad setup. More common was UP, or something UP-like.
Never heard of UP, what is that?
Unified process, which, despite usually not being called that way and/or being codified in the way it is nowadays, is how virtually all early software companies did their development work post-punchcards (when you no longer had to get things done in a single step).
It’s why the “agile is better because iterative hoooo!” is so laughable, because even though we didn’t yet call it iterative - as a distinction from pre-planned, since we thought in punchcards+mainframe vs after that - we did iterative work. Of course we did, software development is naturally iterative and Waterfall was the contrived contrasting example of how a non-iterative process would look.