I don't agree with the post because there are projects when you know in advance that the project will be big. You can probably avoid to make it HUGE, but you cannot keep it small. Trivial examples:
- Writing a web browser
- Writing a professional image manipulation software like Photoshop
- Writing a professional 3D modeler like 3D Studio
- Writing an IDE like Eclipse Idea or NetBeans
Yes there are projects that you know beforehand that will be huge, but that doesn't mean that they should be made or that that is the best way to go about them.
For instance:
Browser - if you're going to start to build a web browser, it doesn't have to be huge... unless you're going to have your own rendering engine, your own JS engine etc... You'd probably just be addressing some set of features that were missing/misdone in other browsers
Writing photoshop - what, are you going to remake all the features of photoshop? And do you think your software will be better? That's a fail. You'd probably be starting by doing some image manipulation program that does a limited set of features that photoshop can't do etc...
I get your point and I totally agree that if you _WERE_ going to remake photoshop, it's totally going to be huge... but that doesn't mean that it's the best path to go down.
You're making a marketing argument, not a technical one. Trying to build a new Photoshop competitor from scratch is probably a losing proposition for a variety of reasons, regardless of how you run the project or structure the code.
However, there are a large class of problems out there which do require a huge chunk of software if you want to address them in any useful way. No matter what you do to reduce coupling between modules there is a certain level of irreducible complexity. For those cases you need to do a lot of up-front design work or you're going to end up with a huge mess. And no, refactoring is not the solution here.
- Writing a web browser - Writing a professional image manipulation software like Photoshop - Writing a professional 3D modeler like 3D Studio - Writing an IDE like Eclipse Idea or NetBeans
and so on...