8 ms·
Notes on Software Development Waste
- beckingz 5y agoWhat is backlog inversion?
- Jtsummers 5y agoSeems to be a priority management issue in the backlog. Low priority items becoming high priority, high priority becoming low priority, but neither being updated to reflect that. So team members who check the backlog for work take on tasks that look important, but aren't (maybe even deprecated).
- beckingz 5y agoThat makes sense. Wasteful to have the backlog be misordered.
- deleted 5y ago[deleted]
- okl 5y agoLooks like common sense to me. What's new?
- FeistySkink 5y agoIf any of this was common sense, it wouldn't happen so often.
- okl 5y agoThat, e.g., doing the same thing over wastes time is obvious. I don't need a taxonomy to tell me that. In my experience the cause of those things "happening" is that most people don't put much thought in what they are doing and why they are doing it. Programmers feel an "itch" to start coding when its not even clear what should be done. A gamble on one's intuition rather than a structured working procedure.
- Aperocky 5y agoDon't overestimate our competence
- Jensson 5y agoMany things are much easier said than done, "create good architecture", "eliminate technical debt" etc. You can't just schedule X hours and then be done after X hours, and often the time you spent just made things worse. People have to realize that writing good code is an artform and not something you can just decide to do.
- CRConrad 5y agoCommon sense isn't really all that common.
- semitones 5y agoIt might be "common sense", but that doesn't even mean that it's not possible for competent and well-meaning people to fall into these traps when working in larger groups.
- LostDiscoveries 5y agoAs humans, our natural pattern matching abilities sometimes causes us to see things that aren't really there. It's a blind spot for us. In this particular case, you now have research that backs up our understanding of software development waste. If you read the paper, you'll see examples of how our previous understanding of software development waste was flawed: https://www.researchgate.net/publication/313360479_Software_Development_Waste https://www.researchgate.net/publication/313360479_Software_...
- xcambar 5y agoThis is precious. I didn't know the original paper but this table is very clear and efficient. I can see myself and my teams use it as a reference point when we need to analyze a situation, past or present.
- LostDiscoveries 5y agoYou can run your own waste workshop: https://github.com/professor/waste-workshop https://github.com/professor/waste-workshop -- let me know if you need help running it or have feedback afterwards
- maltalex 5y agoNice job! I like how you laid everything out and tied it all together. This may be outside the scope of this work, but are there any resources on learning how to solve some of these issues?
- wreath 5y agoI highly recommend the book Principles of Product Development Flow. It's a bit dense and very dry, so take your time with it.
- Jtsummers 5y agoI like the Lean Software books by Mary and Tom Poppendieck. There are a few of them, they cover similar ground to each other but from different perspectives (talking about what it is, versus how to apply it as a manager, etc.). "Waste" is a critical concept to Lean in general and they've done a good job of applying it to software. All their books (I think) are available through O'Reilly.
- LostDiscoveries 5y agoI would recommend this free chapter from the book Rethinking Productivity in Software Engineering https://www.researchgate.net/publication/332916053_Removing_Software_Development_Waste_to_Improve_Productivity https://www.researchgate.net/publication/332916053_Removing_... which describes a workshop to identify and remove wastes. The whole book is open and fun to read.
- tomxor 5y ago> 2. Unnecessary technical complexity (duplicating code, lack of interaction design reuse[...] That's funny, I usually find a common source of unnecessary complexity is people trying way too hard to de-duplicate everything. Which has a tendency to causes abstractions that are more cognitively and technically expensive than the code they replaced... and once enough layers accreted, I'm pretty sure they take up more space.
- Jtsummers 5y agoLike with many things it's a balance. If you have to spend too much time thinking about how to create a more reusable or deduplicated version of something, it's probably not ready to be deduplicated. On the other hand, I've watched several projects flounder because of useless duplication: main.cpp complex_baseline/*.{cpp,h} copy_and_mod_1/*.{cpp,h} copy_and_mod_2/*.{cpp,h} ... (about 12 times) The duplication means that issues are scattered throughout every copy if they're in the original, but hard to find after the modifications. Doing the exercise to find all the duplicated issues is frustrating and people eventually stop doing it. The code gets worse and worse until a refactor or rewrite is forced on them, and then the customer is unhappy with the delay and it's either hastily done (often worse than doing nothing) or abandoned.
- okl 5y agoThe opposite of complexity is simplicity, not terseness.
- laserlight 5y agoI’ve heard this argument against deduplication many times before. Wrong abstraction is not a solution to duplicate code. It’s a different problem. If developers are not able to perform the simplest of abstractions, the problem is more serious.
- what_is_orcas 5y agoHard agree. I'm actually wrestling with whether I stay in my current position for this exact reason.
- 5y ago
- rahimiali 5y agoLink to pdf, since ieee version isn’t free: https://homepages.dcc.ufmg.br/~figueiredo/disciplinas/papers/icse17sedano.pdf https://homepages.dcc.ufmg.br/~figueiredo/disciplinas/papers...
- LostDiscoveries 5y agoHere's the original paper on research gate. Free to download: https://www.researchgate.net/publication/313360479_Software_Development_Waste https://www.researchgate.net/publication/313360479_Software_...
- civilized 5y agoNice at a high level but I have some gripes about the details: 1. It says "asynchronous communication" is categorically a cause of ineffective communication, but only "inefficient" meetings are a cause of ineffective communication. Glaring old-fogey double standard. 2. I was curious what "backlog inversion" is and found a definition here: http://sedano.org/software-development-wastes/mismanaging-the-backlog.html http://sedano.org/software-development-wastes/mismanaging-th.... Apparently it's when you work on things that haven't been prioritized. No idea why they thought the name "backlog inversion", reminiscent of obscure OOP jargon, made sense, but real phenomenon no doubt.
- Jtsummers 5y agoHaven't been prioritized recently, not "not prioritized". A big difference. The inversion is (I think it's a strange use, but understand it) that people will work on something that looks like it's high priority (because it's marked that way) when it's low priority or deprecated.
- civilized 5y agoThanks, I get it now. I think "stale priorities" would be a lot clearer for about the same number of syllables and characters.
- webmaven 5y agoSeems like there is a lot missing from the psychological distress column.
- pstuart 5y agoThe pattern I see repeatedly is when a solution is built for some problem, and then that "solution" breaks somehow, and then begins the iteration of solving the solution vs rethinking how to solve the original problem.
- civilized 5y agoClosely related: Lava Anti-Pattern. Existing code is considered 100% frozen in place and code can only be added when something breaks.
- chege 5y agoAside: what tool did you use to generate the graph at https://hcarvalhoalves.github.io/software-development-waste/#orgf76f92e https://hcarvalhoalves.github.io/software-development-waste/...? It looks neat!
- yakubin 5y ago<!-- Generated by graphviz version 2.40.1 (20161225.0304) --> You can use the dot(1) command for that, with output set to SVG in this case (-Tsvg).
- closeparen 5y agoIf the waste in your software development process is basically on topic software development activity, you’re in pretty good shape already. In my world it’s things like meeting load, calendar fragmentation, 3+ interviews a week, distributed sites, lurching from planning cycle overhead to perf/promo cycle overhead and back again, promotion oriented development, constant deprecation and migration churn among perfectly good dependencies, shitty oncall loads, etc. When you get an afternoon free to actually address the software development tasks ahead of you, that itself is cause for celebration, no matter whether they are the optimal tasks to do or done in the optimal way.
- gumby 5y agoThese aren’t really software specific: plenty of companies have built the wrong feature. Hell, Intel launched the Itanic!
- LostDiscoveries 5y agoThanks for noticing my research. I appreciate it. The casual graph is not from the research. It is very difficult to establish causality. It's reasonable to question any casual claims. The waste taxonomy groups examples of wastes into categories. Team churn is an example of the knowledge loss waste.