What F.R.I.E.N.D.S. Can Teach You About Software Development

Before I get into this, I'll warn you this is sort of a wild ride. Enjoy.

I've been rewatching the series Friends, and got into a discussion of who is the main character (or duo) of the show. This is actually an interesting question because to different people, the answer is quite obvious. Some will say it's Ross, some will say Rachel, some are going to say it's Chandler and Joey. Different people are going to have different opinions because they are watching the show and relating to characters differently, comparing the characters to themselves or to the people around them.

Now, let's be clear that Ross and Rachel had the most lines, but Chandler had the most screen time. If you rank characters by their power and influence, Monica is very close to the top. It's not a clear answer who the main character is. The fact is, there isn't an answer. It's an open question.

Now bear with me. I'll get to the point. Continuing.

In software development, it's easy to get tunnel vision on what you think the product is. You're gonna be absolutely sure that this is a Ross. Of course it is. It's your idea. But until you put that idea into practice and solicit feedback from real users, you're never going to actually know what is it about the product that makes it useful and valuable to them. Maybe to some people your product is a Phoebe, and to others, a Joey. Am I stretching this too far?

I believe this is an important idea to internalize when you're designing and building software. The ability to let go of your ego for a second to see that what you are making may not be used in exactly the way you intend it. You need to continually be aware of the environment you're stepping into and build a strong feedback loop to keep you on the path that you want to be on. You may be providing a very valuable feature to someone, that you think it just a minor detail. To them, this is one of the most important parts.

I think I've made enough vague connections between the show and software, let's find a real example of how a product has evolved because of the way people were using it (that wasn't necessarily the initial intent of the product).

A feature integral to Twitter is the hashtag. This was not always the case. If you haven't heard the full story of how the hashtag was introduced to Twitter, I recommend you read it.

In short, Chris Messina wrote a tweet single handedly creating one of the most ubiquitous features of the web today.

Twitter was not initially fond of the idea, but it's hard to imagine the service would have the amount of success it has today without hashtags.

So let's wrap up all of my points.

Get a variety of opinions on your product, and continually get opinions. Find out how users are taking advantage of the software you've created.

You may think your product is Chandler, but in reality, It's actually a little bit of every character. The show couldn't be what it is, if a single character (even one as insignificant as Phoebe) wasn't there to support the story. The same goes for your software. So figure out what each feature, and the emergent behavior and value gained from their collective amalgamation is. Figure out what it can be for your users. Don't become too focused on a specific set of features, and let the users guide the software.

Thanks for coming to my Ted Talk.

Did you enjoy this? Give me a follow on Hashnode and tell me your thoughts below.