I’ve just come across a new concept: Situated Software.
Simply said, “it is software designed in and for a particular social situation or context. This is in contrast with what the author calls the Web School paradigm where scalability, generality, and completeness are the key virtues.”
Basically, a situated software is a software which is targetted towards a very specific group of people (say, of the order of 5 individuals) and which solves a very specific problem (say, make the individuals share confidential information among them)
Some other examples from the article are:
- Teachers on the Run (which allows students to rate professors),
- The Orderer (for coordinating group restaurant orders) and
- WeBe (for coordinating group purchases).
I don’t know about you but I think this is revolutionary! It’s easy to be wise in hindsight but I really feel that we’ll have a massive amount of situated software in the future (with their associated small-scale virtual communities of people).
As Paul Graham said, “I don’t think even now Microsoft realizes the danger they’re in. They’re worrying about Google. And they should. But they should worry even more about thousands of twenty year old hackers writing Ajax applications. Desktop software is going to become increasingly irrelevant.”
It’s simple to equate the Ajax applications he mentions with situated software…
Hehe, I’ve been saying the same thing too around 2004 about the fate of Microsoft. I think they will get bought in the future.
I think there is a nice lesson for projects that actually are small-scale to not get hung up on trying to make it scale. Maybe it would even be smart to only start programs that are written for some social group.
However, I don’t think this applies to all projects and software. There would be cases where software is just meant for a lot of people. Also, what if the software turns out to be so succesful that people outside the original social group want to use it? It would be nice if you wouldn’t be required to start over from scratch, because there is no way your software will scale.
Also, if the future consists of software programs that are only being used by one social group. A lot of those groups will probably be getting very similar software. It seems to me that it would be a lot better if they were all using a product that is a little more standard, because this would probably be beneficial to the communication between those groups (or software programs).
And if leaving out a ‘feature’ like scalability in order to reduce development costs is beneficial, why not also leave out things like documentation and clarity? This would reduce costs even further at the cost of reducing the product lifespan.
Maybe I just missed the point of the article, but while I think it is a good idea to develop software with a certain group of users in mind, you should code in such a way that the program can be expanded.
Yes, it’s true that one should not develop software which is too crippled but don’t forget that premature optimization is the root of all evil… One does not generally know how his/her software will be used in the future.