4 ms·
There is no reason to avoid iterations. And it is quite obvious that in a highly specialized field you want quick iterations to keep all the expensive specialis
by choeger 7y ago
There is no reason to avoid iterations. And it is quite obvious that in a highly specialized field you want quick iterations to keep all the expensive specialists occupied (in the OPs example, what do the developers do while the analysts analyse?).
_BUT_ you cannot develop software without following the steps of the waterfall model. You need analysis. You need testing. And development has to happen in between.
And here comes the problem: When you have a very fast iterative process, you have everyone working at high pace. But your quality will invariably suffer. If your analyst needs to come up with a decent distributed numerical solver for differential algebraic equations, they won't be done after two weeks. So their 'increment' is going to be incomplete. And no, Pareto does not apply to software specifications. The same holds for any other complex domain. And if your testers only have time to test for two weeks, they cannot cover as much as in half a year.
So yes, iteration is a necessity and quick iteration has its merits. But it also comes with a cost and choosing the right pace is as difficult as it is important.
- rkangel 7y agoWe have the same challenge, except that in our case the issue is hardware. Hardware comes at a very fixed iteration speed, usually around 3 months for something of moderate complexity. That's how long it's going to take to do schematic capture, layout, pcb manufacture, board population and bringup. Even if you can speed up this iteration process, there is still a sizeable financial cost of going around the loop. This means that at a project level you need to do a certain amount of requirements capture before you start work on electronics. You can then run your software in a fairly agile manner 'inside' the project, hoping that the inevitable changes in requirements can be dealt with in software. Obviously you design your system in such a way as to increase that likelihood.