Money isn't really an issue - for the stage we're at now, more people would only hurt us, so our only expenses are my living expenses (practically nil; thank you mom & dad) and a cheap server.
There are two stages a software project goes through. In the first, you're exploring the design space and trying to figure out what the constraints are. There's no architecture yet, because an architecture is a reaction to a set of constraints, and you don't know what those are yet. So a change anywhere could result in radical changes to the rest of the codebase. You might find out that the approach you were trying just doesn't work at all and you need to scrap everything and start again.
In the second, you have a basic architecture and a set of users that are happy with the product, and you're trying to incrementally refine it so it has broader appeal and users like it more. Here, developers only need to be familiar with one section of the code, because the basic architecture is set and changes should be fairly well localized. Things like tweaking a UI widget, or adding a new feature, or changing look & feel.
The first situation requires that all developers be familiar with all parts of the code, and so (given the O(n^2) communication overhead) is best done by a single person. The second allows developers to work in parallel on different features, and so is best done by a large team.
This also explains how to reconcile The Mythical Man Month (which recommends a team size of one, plus supporting cast) and open-source software like Linux (created by thousands of volunteers across the globe). Brooks was writing about software systems before they're delivered, when the architecture is first emerging. When Linux was new, it was created by a single developer too. It's only after it became moderately useful that it was opened up and people started contributing patches.
I suspect it's also behind much of the acrimony between the static-typing (Java/C++/C#) and dynamic-typing (Python/Perl/Ruby/PHP) camps. Dynamic languages are much better in phase 1, because they don't enforce interface boundaries when you don't yet know the interfaces. Static languages are better in phase 2, when you have clear interfaces and the hordes of programmers need to know what will or will not break things outside the area they're working on. You can use dynamic languages for this too, but you need to essentially reinvent most of the features of static languages through documentation, testing, and assertions.
We discovered that we were generating so much data that Rails and MySQL wouldn't cut it. We need to rearchitect our backend in data warehouse + MOLAP terms, and ActiveWarehouse is too young to bet a company on. So, time to learn a new platform and rewrite everything. :P
Email me and I can explain how it is a solution, if it isn't clear.
I wonder if I'm thinking too small.
It's nice to have the vocabulary, and associated granularity, for idea-forming.
http://www.squeezedbooks.com/book/show/5/lateral-marketing-n...
though, maybe that's for the better as I would end up pursuing a lot of things that had little or no substance
Every bit of progress you make increases your future success whether it is with this venture or another. I meet 3 people a week that need programers or technical co-founders. If you're in NYC, email me, I can put you in touch with people that have good ideas.
I am looking to join up with a few others (technical, design, or business/marketing) but am in the DC area now and will eventually be in Austin.
If anyone in Austin is interested in meeting, please lob an email my way.
Same here to some extent. There are certain tasks ("fatigues") that I have to do at set times during the day. The only suggestions I have is to focus on small bits at a time and chip away. Another thing is to use exercise as thinking time. Think on very specific problems. Write your solutions as you get them. Then work on them.
Another suggestion might be to adopt the Joshua Schacter (Schacter worked while building delicious) model of "being lazy". You can read/listen more about his techniques here. [0], [1]
[0] http://notelab.infogami.com/startupschool2006
[1] http://wiki.ycombinator.com/presentations/apr06/Joshua_Schac...
ps; Oops I downvoted by mistake while trying to upvote, so I re-adjusted via prior comments.
Time, time, & time