I taught a project management workshop earlier this week. I include a small project as part of the workshop, so participants can practice planning, organizing, and a little steering of a project in a safe setting. One of the project teams thought they were going to implement their project (a mobile), with an assembly line method. They would make all the pieces independently and then put it together.
It's possible to do that. And the end product is not as interesting, and it's harder to keep balanced when the project teams do that. For software projects, the results are more problems at the interfaces (the balance problem with mobiles), and too many customer responses “Well that's what I asked for, but not what I want.” Does that ever happen to you on your projects?
Implementing by feature isn't a panacea. It's possible to implement several features and then realize when you try to implement the next that the architecture/design won't allow you to add this feature. But in my experience, I've found that the project team determines ways to redesign and implement that seems to take less time than attempting to attempt complete architect/design at the beginning. And in my experience, teams that implement by feature are much less likely to have huge numbers of defects — especially at the interfaces.
I hope you decide to think about how to organize your implementation on your next project. There's no right or wrong way — each project is unique and you'll need to consider all the risks. I'm a fan of implementing by feature, to reduce the risks of defects at the interfaces and not-quite-right features. But as long as you think about it, you'll do what you think is best for your project.