(Aug. 25, '07) I wrote a few Facebook apps for fun. This is an opinion article I wrote based on the experiences I learned from the first few efforts, namely, an application I wrote called "Friendmates" which Facebook later implemented as "People You May Know". The observations mainly relate to the idea selection process and market analysis. Six months after I launched, in March 2008, Facebook replicated the design without attributing any credit to me.
Four years later (2011) in retrospect, whether or not this article puts it in so many words, the main lesson is this:
Motivation to do something cool

On a day in September 2007 I was thinking about an old graph problem. A friend at work came into my office with a Business 2.0 magazine, high-lighting an article about how the recently promoted Facebook Developer platform was doing wonders. Developers seemed to be in a frenzy to write applications and buy servers and bandwidth to keep up with the demand.
Ideas
A few days later over lunch I broke into a discussion about being interested in experimenting with marketing a technology product. During the impromptu session, we bounced a few ideas off of each other and decided that some of them were smart long term ideas and some were the equivalent of spam or the existing monkey apps throwing crap at each other. The most valuable thing that came out of that lunch meeting was an online spreadsheet, the creation of which we agreed on. From that day on, the 3 of us would record an idea about an application once or twice a week. Within two weeks, we had so many ideas that we had to sit down and sort out the ones with low or no value.
On that very week, I created a Google AdSense and a Google Analytics account. To this day I haven't found a good way to monetize Facebook applications using Google AdSense (I will explain why further down) but Google Analytics has been by far the best tool I have encountered as a developer who wants to break into the ad market.
Initiation
As motivated as my partners were, they weren't as up-to-the-speed about the state of the APIs out there and as experienced with writing Web Applications. With many years of experience writing apps that were very popular at first, only to fade out amidst the changes in technology, I felt that at least for the first prototype I had to go it alone. So I followed the old advice and stuck with the idea I was passionate about in the beginning: The graph theory idea.
Planning
The graph idea itself was based on the following hypothesis: Those in the society that you have the most common friends with are most likely your friends. To an ordinary person, implementing this would be equivalent to counting the number of people you have in common with the person in question, and judging by the number. This solution seemed naiive to me, especially considering the fact that not all direct friends are equal. I devised an algorithm that took into account the connectivity with each of your friends as well as the connectivity with the person in question. The paper I wrote became the recipe for the application design and without further ado, I jumped into execution.
Execution
To many people, web sites grow out of thin air. I've walked the road quite a few times and I can tell you it's not true. I spent 40 to 50 hours on average at work, only to come home and spend another 20 hours on writing the Facebook app. I enjoyed working tirelessly, although my relationships with the people around me sufferred greatly due to the fact that I started spending less and less time with them. I was mainly driven towards reaching the milestone: seeing some activity on the Google Analytics radar.
Within 4 to 6 weeks I reached the first milestone: The application was functional. Given a few of my friends added it, it was finding people I had the most common friends with and most of them I could recognize and wanted to add. I asked my friends to test the app as well and they said they could recognize their people too. It seemed like a success. The first signs of failure however, started to show up in the same way that people close to me had predicted: The application only convinced people who belonged to the cluster of friends who added it. There was a resistence to adding the application, and much fall-out rate, from people who were not part of our inner circle and therefore would not see any relevant results (not many common friends with anyone in our app). The cracks showed themselves: my application was like an inside joke that only people in my inner circle would understand.
Control
Very soon it became apparent that I was being tamed by the waves of real-life marketing experimentation. The growth rate was very slow: double each week, but falling fast. The reason it was doubling in the beginning was that people at the core of the development were very interested in spreading it among their friends. But I knew that once we all ran out of friends, the motivation out there would be very low to spread it further. New users weren't sold on it. That's when I finally learned for the first time a lesson that some of my entrepreneur friends had tried to make me understand, but it kicked in only after I had seen the mistake: If your application doesn't sell itself within the first 3 seconds, it will not succeed.
I went back to the designing stage and thought up many ways of spreading the application: Sending out notifications or emails every time somebody successfully used it, or letting people send each other messages on the app to let each other know that they recognize each other -- this was mainly done to exploit the Metcalfe's law of telecommunications network and was somewhat successful. But none of these techniques revived the application the way one would hope. Most of the competition does these things better than you anyway, and to make matters worse, I was constantly hearing success stories of ten-fold growth from my former friends and colleagues all over the world.
Close
Looking at Google Analytics traffic analysis and results, the application is still growing. Every time I throw a new feature into it, the growth rate has a spike. But it never makes me jump off of my chair. The other problem is that the kind of content I provide (matching friends with each other) makes a very difficult sell for targetted ads. Combined with 2 other facts, (1) that on Facebook people rarely click on ads and (2) that even given proper content, targetting ads on Facebook is difficult due to IFrames, this seemed like an emerging blackhole for my time. So I closed the project, while letting it live on my server, and moved on to other projects and ventures. If one day I receive a report of a huge growth spike, I may rethink things.
Lessons learned
Know your audience
You may be a Computer Science graduate or a Software Engineering guru or just a coding wiz. But your audience is probably not. During the process of developing my application, I went from taking an hour to explain what it does and how it does it to my girlfriend (a computer science graduate) to eventually 5 minutes to random friends. Consider the fact that for an application to be worth the developer's time, you need to be able to make at least a significant fraction of what you'd make if you had a full time job. For that to happen, you need thousands of clicks, generated collectively by millions of users. If you had to spend 5 minutes with each of the million of people who would be using your application, you'd be better off as a salesman in an employed position. Your application must sell itself and it has only 3 seconds do to so before your user loses interest. To accomplish that, you need to make something that doesn't require explaining. "Slap your friend" is a lot more understandable than "For reasons X and Y, you might recognize this person Z."
Test your market
You don't have to spend weeks of precious time creating a prototype to figure out whether your application may be a success or a failure. Write the first version (or a version branded differently) as quickly as you can. Release something that barely does anything, but has all your explanations and keywords, in less than a day. Release a few ideas in this minimalist way. Watch how the market reacts. Put aside your feelings and act accordingly. Each market is unique. In some markets content matters, in some humor matters and in some, efficiency. In the Facebook world, communication and efficiency are keys. The content is not. And users expect to be rewarded for 3 seconds of their time and 1 click of their effort. They're there because they're too busy to meet their friends in real life. If you make something to make their lives easier, like I did, make sure they can understand it without your explanation.
Question your commitments
Facebook is not the first platform that has come out and it will not be the last. The recent release of Google's OpenSocial platform is further evidence of that in Facebook's own market domain. The Social Networking market is to the Online Advertisement industry as Skyscrapers are to the Real Estate industry: given the same base to work with, you have decided to produce more units of communication (or living space). As with real estate, being in the right place at the right time always matters, but it doesn't necessarily matter which market you are in. All markets will grow and so will those who fill in their demands. If you are looking to be part of the paradigm shift in the advertisement industry, you need to be where the eye-balls are, or you need to attract them. Content, communication, search and etc are some of the many ways to accomplish that. The growth value is not where things already exist, but where there is under-developed property and rampant demand. Can you see the thousands of pages of a certain kind of information that don't exist? Are you going to create them one by one? Are you going to create an engine that lets interested people create them? Are you going to write an algorithm that will just make all of those pages happen? Whatever you do, once in a while take your head out of your box of believes and look around to see where people are going.
Have fun
Succeeding in the web world is half skills and half luck. If you're not having fun with it, sooner or later you're going to run out of enthusiasm and give up. If you are having fun writing code, share the fun with other interested people. If you're spending all of your spare time in the project, stop once in two weeks and catch a movie or something. Always consider the fact that your dreams of making money while you sleep may be a matter of time given your character, but your youth being limited to a few years is a matter of fact. One day you may raise your head and realize you haven't done anything in the past few years except code. You've always thought of yourself as a very interesting person, but when you socialize and people start talking about their interests, you may find yourself lost for words. This scenario needs not happen! Those who will succeed, succeed with the help of those others who had fun with them in the meantime.
Persist
On one last note, as I already mentioned, success is half skills and half luck. If you have the skills, the coin is yours to toss however many times you want to toss it, so be persistent. Keep your skills sharp and your prototypes plenty.