←back to thread

170 points mogambo1 | 2 comments | | HN request time: 0.432s | source
Show context
danparsonson ◴[] No.45292426[source]
I seem to be in a minority but I find user stories or features to be really awkward and unnatural units of work for building software. Sure these things help to define the expected result but they shouldn't directly drive the development process. Imagine building a house that way - you don't build the living room, then the kitchen, then the bathroom etc.; you build floors, walls, the roof... The 'features' or use cases for the building arise out of the combination of different elements that were put into it, and usually right near the end of the build. The same is true for basically anything else that we build or create - if you're making a sculpture, do you finish working on one leg first before you move onto some other part?

Features are vertical slices through the software cake, but the cake is actually made out of horizontal layers. Creating a bunch of servings of cake and then trying to stick them together just results in a fragile mess that's difficult to work with and easy to break.

replies(9): >>45292458 #>>45292564 #>>45292986 #>>45293703 #>>45294397 #>>45296892 #>>45297236 #>>45298940 #>>45307633 #
1. nemomarx ◴[] No.45292458[source]
They make more sense if you think about adding to an existing house. "I want to open up this wall to serve X function" kinda work

they're very well adapted to legacy enterprise work

replies(1): >>45294205 #
2. gizmo686 ◴[] No.45294205[source]
Even there, "open up this wall" is not a unit of work. You need to:

* Evaluate what, if any, structural implications removing the wall has * Tear down the existing wall * Redo any plumbing, ductwork, wiring, etc that was hiding in the wall * Remediate structural concerns from removing the wall. * Redo the flooring * Repair and repaint any damage done to remaining drywall

If this is part of a larger renovation, you will likely schedule work so the above tasks happen at the same time as other similar tasks.

E.g. A meaningful unit of work might be "electrical roughing", which would include both moving wires that were previously in the wall, and running a new circuit to the garage for a car charger. No user story covers those to tasks, but the nature of renovating a house means that it makes sense to do them together.