Scalablity is often talked about in terms of raw compute power but I've rarely heard it considered in terms of people. Your web application should be able to handle the exponential growth in traffic if your startup becomes popular, but can it handle the growth in software developers?
I suspect that there are plenty of people out there who already know about this, but strangely enough I haven't heard about it talked much. The truth is that to move forward, most projects, at some point will need lots of people to start contributing. One person isn't enough.
Do you remember ever having to work with classmates on a school project? Those horrible, time-honored group projects?
Remember how horrible they were?
Those projects were horrible because much of the time, one person ended up carrying the project while the others fell behind and couldn't contribute anymore. These types of projects wouldn't scale very well - adding more team members would probably make things much, much worse.
Things get tense. People can't contribute, forget to contribute or contribute too much. I don't think these types of projects can or should change, but they're a great example of what happens when things go wrong. If your project or system isn't designed well (or designed at all) it can be really difficult to do work.
The semiconductor industry has been dealing with this for years. If you have some background in hardware from college, you might wonder how large semiconductor companies such as AMD or Intel pull it off? Those companies are huge - how do you position your hardware company so that you can have that many people contributing?
The answer is more complicated than it sounds - you split things up correctly. You have your architects worry about the high level design. You have your designers create the individual modules (Southbridge, Northbridge, etc). You have an army of validation guys right beside them to make sure that changes don't break things.
The rabbit hole goes deeper but you get the picture.
There isn't any magical formula you can follow though. The semiconductor industry spent decades to get to the point that they are today. There was probably a ramp up period of a few decades.
But I think it's fair to consider scalablity as something beyond just compute. When you can get a whole bunch of people to contribute as much as they individually can, you can build something great. Sure, a smaller group of people will probably have the seed ideas but a different challenge comes when things grow.
|« RadGrad with Meteor||Taking a Semester Off»|