Essential Facebook Development: Making Great Applications
There are more than 350,000 applications in the Facebook Application Directory, and more than 70 percent of Facebook users engage with them each month. However, only around 5,000 of those applications have 10,000 or more monthly active users. The success of an application can be short lived, so making it near the top doesn't mean that an application will stay there.
What separates the top applications from the rest? In some cases, it is just luck, combined with effective use of the various integration points. However, the applications with staying power tend to exhibit the same quality; they deliver actual value to users. That value can be quick fun, better interaction with friends, or a new way for users to express themselves. Great applications focus on providing value and continuously improving themselves in response to user feedback and Facebook changes.
Although there have been many good applications, there have been a lot of bad ones—applications that try to trick users, are difficult to use, or that create huge amounts of spam. This has caused some user backlash and, as a result, Facebook encourages developers to start creating high-quality applications. It created a set of Guiding Principles (described in the section, "Facebook's Guiding Principles") and several programs to verify and reward great applications, which are covered in Chapter 5, "Facebook Terms of Service and Application Programs."
Begin with a Plan
Before you create an application, it is important to understand what your goals are and how you plan to implement them. This section provides the key areas on which to focus.
Why are you building this application? Is it to make money, promote or integrate an external brand, show off a new technology or service, or are you building it for yourself? Knowing the objectives will help you understand what metrics to employ to track your success, what areas to focus on in development and in responding to user feedback, and what areas of Facebook communication to focus on. Just like in life, if you don't have any goals, it is difficult to score.
Who do you want to use this application? Facebook has many different demographics, and choosing to focus on one or more of these affects how you develop your application. For example, an application that requires a long attention span is unlikely to succeed if it targets high-school and college students. Instead, focus on providing quick value and communication to fit their usage patterns.
It might also make sense to create applications that are location-specific. An application that centers on Turkish culture might be wildly successful in Turkey and achieve your objectives, even if it isn't popular in the United States.
Of course, after launching the application, an unexpected demographic might dominate the user base. This is a great opportunity to reevaluate both objectives and focus to continue to grow and improve the application.
Why will users want this application? So many choose to ignore this question and produce applications that gather dust, regardless of how good they look or how much time was spent developing them. Users aren't looking to help you spread your application; they just want something out of it, especially if you ask them to authorize the application instead of just visit it.
Spend the time to really think about what users will get out of your application. The Facebook Guiding Principles and the application profiles shown later in this chapter can help with this process. Remember, one of the best values you can offer your users is a simple-to-use interface.
Why is your application better than your competition's? Make sure to look through the Facebook Application Directory to find applications that offer similar functionality. Read through the forums and Wall posts on each competitor's application About page to find out what users like and don't like about them. You don't have to provide everything for everyone or even match your competitors' features, but you need to provide them with a good reason to use your application.
Involving the User
How will users interact with your application? Facebook applications were once all about having a great profile presence and sending invitations. Now, they focus on creating Feed stories, and profile boxes are not as important. Make sure that your application is designed from the start to use the integration points to your advantage. Use Feed forms to create short stories from inside your application and the Publisher to let users interact from their Home page or profile. Applications can also integrate with Facebook Chat for real-time communication.
You also need to plan the workflows for how users will engage with the application. Try to refine long sequences of actions—some users will give up at each step. Also, plan to build in A/B testing and metrics for a solid understanding of what is working and what isn't.
How will your application respond to feedback? Most applications do best when they create something good enough quickly and then release updates as they gather usage data. It's a good idea to have a set of plans for future releases, but recognize that responding to user feedback can result in the application taking a completely different track than what it started with.
Having clearly defined goals up front helps you decide when to make a set of changes and when to stay the course. It is possible that the users you first acquire are not the ones you were expecting, and the feedback they give might lead you down a path that's inconsistent with your objectives.
Planning for Growth
Do you have a scalability plan? As discussed in the introduction to this chapter, most applications are not successful, so chances are likely that you won't need to allocate dozens of servers at the start. However, doing some planning can prevent you from repeating the experience of the iLike application's founders after their user count dramatically increased—driving around in a truck trying to find more servers for the data center.
Chapter 16, "Improving Application Performance and Workflow," goes over some scalability tips, but you need to design the system up front to use multiple servers. Think about how you can use Facebook's own servers to help take on some of the burden. Also, choose a host that supports autoscaling and pricing based on actual usage, rather than paying by the month.