The life of a software developer 4/4: developing a Facebook application
As Erick Schonfeld mentioned it on Techcrunch a few weeks earlier, it seems that every developer in the world in currently developing a Facebook app. Having followed my girlfriend during her exchange program in the US and having no chance to find a job for 3 months without any work permit, I decided that I will benefit from this free time to follow the wave and develop mine. The funny part was to explain what I was doing to my girlfriend’s MBA friends: they are so immersed in a business culture that they look at me with wide open eyes when I explain calmly that I have worked one month to create something that will benefit Facebook without being paid and without even hoping to be paid! But they understood a bit better when I explained that this kind of project, especially if successful, can be an additional asset when looking for a job in a Web2.0 company in Silicon Valley
The conception
The first step was to determine what kind of app I wanted to develop. Of course, I wanted to exploit the full potential of Facebook by creating an app with a viral potential. I identified 3 key success factors for a Facebook app:
- It must be a functionality linked with the user’s ego to incite him to display the application on his profile;
- It must allow an interaction among friends and it’s better if this interaction is based on some personal knowledge of your friends;
- It must be fun.
This is how I got the idea of developing an app allowing you to create your Chinese portrait (by completing several sentences of the form “If I were an animal I would be a Lion” and to guess you friends’ one. It is linked with your ego as it allows you to display one of your answers on your profile with a visual representation; you interact with your friends by guessing their answers; and finally it is fun because you can see which friends know you the best.
The development
There are 2 ways of developing a Facebook app :
- Using the FBML (Facebook Markup Language) only : your app will be developed for Facebook only;
- Developing your app externally meaning that most of the processing will be done outside Facebook.
I chose the second option because it gave me more freedom, and also because I wanted to let me the opportunity to export my application on other platforms later on. Besides, to make some preliminary tests it was easier to be on my own hosting platform than being obliged to test my basic application and the integration to Facebook at the same time.
I finally developped it in php/MySQL, therefore I used the php library of the Facebook API, but was of course obliged to integrate some FBML during the integration stage. As said on HYPERLINK “facebook.developer.com” Favebook’s developers wiki, “Facebook Markup Language (FBML) is an evolved subset of HTML with some elements removed, and others which have been added that are specific to Facebook”. Facebook has also developed a specific tool allowing developers to make queries in Facebook’s database: FQL (Facebook Query Language). Javascript also has its own Facebook version: FBJS.
The most striking thing during this development stage has been the quality of information available to developers concerning the API. The Facebook developer community is really active, offering on the Wiki almost all the answers that are necessary to be efficient in Facebook languages really quickly. Numerous scripts, easily customizable, are also available, as well as numerous updates.
The launch
I finally launched it on Thursday, and what interest me most in this adventure is having first-hand data to analyze the famous network effect. I started by sending invites to my friends, and my girlfriend did the same: 30 of them added the application until now. But in 6 days I managed to reach 395 users, with 24% of them being qualified as “active” by Facebook. You can see below the day-over-day growth rate in the table. Only 10 removed it to date (which is, completely subjectively speaking, a good ratio). What is more worrying is that only 107 “tests” have been done, which means that the feature allowing you to guess your friends’ Chinese portrait is not used a lot (only 25% of users on average have tried to guess one of their friends’ Chinese portrait), which is probably due to the low penetration to date.

What is a bit frustrating (but fortunately for privacy reasons) is that developers can’t make elaborated statistics on the users of their app, because if these users are not part of the developer’s friends, he has no access to their information. I would have loved to analyze the geographical spreading of my app: as most of my friends are French, I would like to know when the proportion of French users of my app will start to decrease. I would like to know how many American users I have: as there are many more relations between American users, the value of an American user must be on average superior to the value of another one because of the potential viral adoption he will generate.
You can try my “If I were” application here. Do not hesitate to give me feedback about it; it will be obviously much appreciated.
As a software developer, one of the most difficult challenges to have a interesting career path is to be able to adapt to changing environments, even when you are an expert in a specific framework. I think there are 2 majors reasons to explain this necessity: the first one is that technology evolves very quickly, so you have to be able to be on top of the new “killer” programming language (e.g. currently RoR); the second one is that the essence of a software developer job in almost every company lies in the ability of being assigned to different projects with different practices and programming languages. These changes in assignments are most of the time unexpected, unless you consider that you have to expect them all the time! In all cases, you must be efficient and productive very quickly: an in-house software developer almost always has to prove that he can do the job better than a service provider and that internal development offers more advantages than outsourced one. This is of course not always true, but the variety of a software developer job often depends on this assumption. To illustrate that, I remember the case of HCL America, a provider of software development services, loosing its clients because software developers at the client’s company threaten to leave the company if external developers were about to take some of their functions, even for the restricted time of a project.
Jérémy suggested that I describe my different experiences as a software developer in a set of articles, and I found this approach really interesting. I will start here with my first big experience as a developer during my company creation, and then I will continue with the different projects I’ve realized in my current company. I apologize in advance for not being able of giving some deep details sometimes, as confidentiality matters prevent me from doing this.









