I think it’s interesting to watch as social networks become more commonplace and people start really digesting the ideas them and becoming aware of how they work. And as that’s happening, people are starting to realize the limitations of current social network systems and what they can’t do because of what’s not possible.
In order for social networks to become truly useful, we’re going to need a new kind of social network. The problem with the current crop is that they were only built to be social networks. That might sound contradictory, but it’s not–the difference is in thinking big versus thinking small. The problem is in the software itself.
As a software architect, I look at the current social networking services and I see software that’s the product of a late-night drinking session by a non-programmer. (Nothing wrong with that, plenty of good ideas have come out of those as I’m fully aware But you have to have an experienced software architect at the table too. What I see in the market right now was designed by a non-programmer with an idea who raised money to pay some programmers to implement it.
I don’t mean to sound elitist or anything here, but I’ve been programming software for a long time now, and I think I’m pretty good at it. But you have to go around the block a few times before you really know what you’re doing, and especially to be able to design software that can grow with your ideas. When you design software, you have to think BIG. You can’t allow yourself to take shortcuts to push the product out the door. If you do, you end up with software that’s hamstrung, can’t grow, and is missing certain obvious capabilities that the original drinking buddies didn’t quite think through. Software like the social networks we have now.
I just came across an interesting post that illustrates this point perfectly. The author wants to be able to delete contacts from his list at LinkedIn. Sounds simple, right? Well, you can’t do that without emailing LinkedIn’s customer service department. How much do you want to bet that they have some hacked-together utility that goes into their database and removes relationships? Why don’t they allow their users to remove their own relationships? I really don’t think it’s because of any business reason (at least I can’t think of any), from my point of view it looks like small thinking on the part of the architect(s) (if there was one) or the programmers who wrote LinkedIn.
Another point hit upon by the author of the post I just mentioned is the lack of an ability to establish relationships with more than one type of "thing". This brought a smile to my face because the author is really talking about a purely object-oriented way of building software. And I agree 100%. (Excuse me while I digress into geek-speak. I LOVE object-oriented programming. It’s the way programming is supposed to be. Service and aspect-oriented programming have their places–as the plumbing for object communication–but the simplest, most elegant, and intuitive way to program is with objects.)
At their core, social networks are nothing more than a fancy user interface layer over a database. The difference between all the social networks out there comes down to A) the user interface and B) the underlying data structure. Why can’t you establish a relationship to a "job" or a "project" in LinkedIn? Blame the architect. He didn’t design the database to be that flexible. Why can’t you remove a relationship to someone you don’t like any more? Blame the architect. He didn’t tell the user interface and database programmers about that potential use case.
I’m not saying I’m perfect in this area by any means. Building software is a learning process, and really don’t know what you need to design until you’ve gone through the process once. But I now know how to avoid all the mistakes I’ve made in the past. Will I design all my future software with localization and section 508 compliance in mind? You bet, because I’ve been burned by that in the past. Do the social networking sites support those? I don’t believe they do, just because the designers and architects probably didn’t even think about it when they first built the software.
Software ideas without experienced software architects result in software that can’t grow. Trying to grow software that wasn’t built to grow results in either tortuous upgrades that end up in a pile of spaghetti code or complete re-writes, which make the business owners curl up into the fetal position and whimper.
The longer I’m involved with software development, the more I look at it as an art. I can look at a piece of software that was thoroughly thought out and well-architected and think "wow, that is great software, there’s no limit to what it can do". On the other hand, I can also look at software like a MySpace and think "wow, what a steaming pile of sh*t, they’ll never be able to do anything else with it". I just think it’s interesting when people using the software start coming to those same realizations because they hit the limits of what the software they’re using can do. And once you have users in the system, changing the basic structure is like trying to change the shape of a statue, it’s next to impossible without breaking something. You can always tell if software was well designed by the length of time it takes to implement new features. Do they trickle or drip out, or do they come pouring out as soon as the users ask for them?
You want to know what else? All of the social software out there right now could easily be combined. There’s absolutely no reason for a new social network to launch every week. If it was properly designed and written, one social software package would be perfectly capable of doing everything that all the social networks out there right now can do. There’s no valid reason to have separate networks for pictures, events, people, dogs, cats, music, and on and on. At their core, they’re all just relationships in a database. It’s just not that hard if you design it right.
And yes I do have a solution, not just problems. If you’re interested in the social software that I’m working on, check out my posts on reinventing the Internet, they lay out a good portion of how I think it should be designed. It will eventually see the light of day, but at the moment it’s just a pet project of mine and more important projects are currently on the front-burner. However I would expect to see something before the end of the year. And to those people who have contacted me about wanting to be involved, don’t worry you’ll be hearing something very soon, I’m planning to set up a discussion group within the next month so that you can see what’s there now and jump in and help if you’d like.