11 ms·
Main main criticism of the 'worse' development approach, rush out a simple MVP then iterate, is that it only works for simple problems. Not all problems can be
by gerbilly 7y ago
Main main criticism of the 'worse' development approach, rush out a simple MVP then iterate, is that it only works for simple problems.
Not all problems can be solved by incremental refinement.
- workthrowaway 7y agothat's interesting. what example problems incremental refinement isn't able to solve?
- wry_discontent 7y agoThe flaws of incremental refinement should be obvious to anybody who's worked in a codebase more than 5 years old built on that approach. Maybe it could work in theory, but in practice, the iterations on crap produce more crap. As far as a specific example, I remember a discussion with Uncle Bob where he specifically mentions banking and accounting as systems that shouldn't use that approach because you'll build the wrong thing.
- AnimalMuppet 7y agoAnd yet the conventional wisdom is that "a complicated system that works is almost always found to have been derived from a simple system that works". But you're right, evolving code often turns it into a mess. The only way that doesn't is if, at each stage, the people working on it keep the architecture and code clean. That takes discipline, not just by the programmers, but also by management - they have to give the programmers time to do the cleanup that is needed, not just time to shoehorn something in.
- scottlocklin 7y agoProgramming language or database design.
- gerbilly 7y agoIncremental refinement is like implementing a local search algorithm. You may end up getting stuck on a local maximum in the software design space. To optimize and really find the global maximum often requires backtracking, which in the case of software development might mean throwing out large portions of the codebase and starting over.
- einpoklum 7y agoActually, backtracking is still kind of incremental.
- Ididntdothis 7y agoBuilding a rocket or an airplane? There is a lot of work that needs to be done before you can start working incrementally.
- einpoklum 7y agoBuilding a sky-scraper. If you build a 1-story house, then gradually do what-it-takes to build another floor on top of it, you'll either never have a tall building, or end up with something like a pyramid or huge angular support pylons (i.e. extremely wide base).
- goto11 7y agoWasn't Linux built with an incremental approach? That seems to have been pretty successful.
- gerbilly 7y agoWhen they started to build the Linux kernel, they had a few great reference implementations of UNIX to base their design on: BSD and SysV UNIX. Both were available as source, and both had technical books describing their system architecture. Linux has even been criticized for being a fairly conservative reimplementation of traditional UNIX.
- goto11 7y agoThat makes it even more incremental, right?
- deleted 7y ago[deleted]
- ChainOfFools 7y agoyes, this article's philosophical summary could more accurately, if less memorably, be written "strategies that prioritize short term objectives tend to outcompete those that prioritize long term objectives"