We’re all impressed and fascinated with the inner workings of Stack Overflow. Its one of the few web based services that has actually impressed me. Every single button, link, label or sprite belongs exactly where it is. The tools provided are exactly adequate for users to accomplish what they want to do, no more – no less. That’s not surprising, the people who built the site have turned software usability into its own religion.
Its one of the few sites that I’ve ever seen that did not go overboard or too stringent with the use of AJAX. How do you know a great user interface? It doesn’t get in your way.
Breaking SO down into its basic useful and novel elements we have:
A voting system that catches and reverses most ‘fraud’ votes
A tagging system that scales well and is lightning fast
A revision control system that allows a convenient grace period
Algorithms to reward users for participating positively
A reputation system that lets SO trust each user up to a certain degree
A search built especially for ninjas
All of these are useful on their own outside of the context of Q&A, with the possible exception of the search. Again, I’m not dissing the search, just the results. Still, you could do very well to implement any number of these features into an application designed to let people find what they want with little effort. I’m trying to duplicate some of those building blocks, to a degree in a way that they can be re-used. I was thinking of either stand alone classes, or perhaps plugins for Code Igniter.
The really, really funny part? Despite warnings from Jeff Atwood, I’m stuck in micro optimization while trying to come up with the DB schema for tags and votes. I’m beginning to see that limiting tags to a maximum of five on SO was not only to ‘force’ better tagging and organization, but also to keep the queries lighter. This train of thought has no caboose, and I’m now in a ‘webistential’ dilemma to find a use where five tags would not be enough. Even when thinking of things like bookmark sharing, image galleries and other media collections, I can’t help but think ‘if tags were limited to five, things would be better organized’. Then I come back to wanting to offer natural language search because most people are not tag/operand ninjas.
Would someone looking for a house want to find a Victorian without blue paint and with a white porch swing but without a screen door? Maybe. Would someone want to find a Toyota vios, red, brown leather interior, manual transmission? You bet. It just seems to me that not limiting tags invites people to document the properties of something in such granular detail that it becomes useless when compared to the overhead of tags, and I think a growing trend is to rely more on tags than defining a limited number of column attributes that every object will share. For instance, if you sold (or indexed) data about computers, ‘processor_type’ is a property every single object would share, determined from a known list of possible types. Why should that be a tag?
I’m either going to come up with some kind of brilliant compromise, or realize that certain things just can’t be ‘plug and play’. Fortunately, votes are easier