I was listening to a podcast this morning, and they were interviewing Woz and he said something that really got me thinking. He made the statement that 'All well designed products have a single person behind them, they control the project from start to finish and provide a consistent view of the product and what it should do'.
On first glance this makes a lot of sense, but when you start thinking about it I started coming to some interesting conclusions. If what he states is true then all large projects are not going to be well designed.
I think the issue is not so much that a single person is driving the design and building of something. I think it has more to do with keeping your 'eye on the ball'.
So many times I've seen projects start and then during their development and building they get changed in mid stream. At this point one of several things can happen:
The team takes the changes and quickly incorporates them into the project without really considering it's impact. This invariably ends up to cause issues in other areas since it was simply 'pushed in' without consideration on the impacts to the project.
The change is given a review, and while the areas it will impact are accounted for the original goal is never taken into account and how it fits with that goal. You end up with a working project, but it's slightly off because of this addition midway through the process because the change was never integrated completely with the original design.
The team steps back and adds this change to the original goals of the project, then looks at the current design to see if it fits the goals still. The design is modified while considering the whole scope of the goals and you end up with a well designed result.
The change is pushed off to be incorporated in a later release.
While number 3 is the ideal (which aligns with what Woz said about a single person driving a design) most of the time solution number 1 is taken.
I think that this really highlights an issue with how we approach what we do. So many times we are schedule driven at the cost of good design and meeting the original goals of a project.
Personally I think the extra effort of stepping back and doing a good design review when changes come in are the way to go. Even though it may take a little more time up front, in the long run it makes for a smoother project development process.
Of course the real trick is to actually stick to #3 and not let yourself become schedule driven and end up with a derailed design.