Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Maybe a better way to ask the question would be: why is the Facebook app so bad?

This is not so much a question specific to the Facebook iOS app, it just uses that as an example. What I want to know is how is it possible that a company like Facebook that has all the resources it needs can make such a bad app. Facebook is famous and "cool" so a lot of devs, designers and architects want to work for them, and it has the money to pay for the best of those. And it's not like it doesn't care about the app. It's not some small internal unimportant project, it's one of the most downloaded apps on the app store. But also one of the most complained about. This brings me to my question, how is it possible that an entity with such resources and desire can end up making such a bad product?

To put it another way, what are the main complexities involved in such a big project that can ultimately lead a collection of perfectly skilled individuals to collectively create something that is not so perfect? Put in a more positive way, what is required (other than skilled people) to make a great product?

share|improve this question
2  
They have an API. What are you waiting for? –  JeffO Dec 14 '11 at 22:35
    
I'm surprised no one has mentioned this, but Good Software Takes Ten Years. joelonsoftware.com/articles/fog0000000017.html The Mythical Man Month is applicable as well (adding manpower makes things take longer) en.wikipedia.org/wiki/The_Mythical_Man-Month –  BrianDHall Nov 10 '13 at 22:22
add comment

4 Answers

up vote 5 down vote accepted

Sounds like a question that would probably result in lists, but here are some thoughts, mostly to do with company politics:

  1. Software that doesn't earn the company much money often becomes neglected, even if the company's public image hinges on it. Ironically, I see this kind of myopia most often in companies run by marketing people.
  2. Companies often have interns or inexperienced/rusty programmers work on high-profile non-mission-critical programs to give them experience and/or boost their confidence. It often sucks for the end users, but it's a great way for people to learn and make better programs in the future.
  3. Companies also often have the originator of an idea implement the idea. They may have a great idea, but not be so great at programming.
  4. Having infinite resources doesn't necessarily mean you'll be able to make the best software. If you're developing, say, a menu UI, you can't have more than a two or three people working on it -- never, ever more than one graphics designer if you want to avoid fights, and a couple programmers at most working on a few pieces of code that responds to the UI. Too many chefs spoil the broth.
  5. You need lots of time, and given the globally competitive nature of the industry, time is not on any developer's side.
  6. Changes arise in the needs of the clients, or of the software itself. For instance, the customer might suddenly decide a week before release that they want this or that they want that; or, it might suddenly turn out that a library you were lying on didn't have adequate performance in a certain scenario. Painful and demoralizing backtracking ensues.
  7. In the same vein, programming inherently relies on the code of not just yourself or your teammates but of the code and code quality and maintenance of dozens, hundreds, maybe even thousands of other programmers. You usually don't have control over all of them, and your choices are often limited.

(With all that said, yeah, I feel that the iOS Facebook app really could use some improvement...)

share|improve this answer
add comment

Why is it so hard to write a good song? To shoot a good film? To paint a masterpiece?

This is a rhetorical question. Because not everybody is as gifted as Paganini, Spielberg or Da Vinci. And software development, like every craftsmanship or every art, depending upon you viewpoint, requires some talent and endurance. Obviously, not everyone has them both.

share|improve this answer
    
And someone can write a great song, but many people may not like it. –  JeffO Dec 14 '11 at 22:34
    
Yes, poor people, they can't understand the real greatness of this work! :) –  Alexander Galkin Dec 14 '11 at 22:42
add comment

The Facebook app is considered bad because people expect it to be a fully functional Facebook on a platform Facebook never was intended or likely planned to be on. Its like expecting a Prius to Preform the same as a Lamborghini.

share|improve this answer
1  
+1 for being fundamentally correct, but comparing the FB user interface (pick any one that you like) to a Lamborghini is a stretch. I'd say it's more like comparing a bicycle to a Trabant. But as I said in my answer, these things are quite subjective. –  Caleb Dec 14 '11 at 18:55
    
The Faceboook app has all of the features that I could want, and I still think it's bad, because basic features like going to a friend's wall and refreshing the updates doesn't work about 50% or more of the time. Instead I'm usually stuck with a message saying it's updating that never goes away. –  Gerald Dec 14 '11 at 20:23
    
It's really not the feature set. I can live with it not having a delete post button, but it's got some serious problems -- it's slow, it crashes, and the mobile version of facebook.com, which offers more or less the same features with the same UI layout, works a lot better. –  Rei Miyasaka Dec 14 '11 at 21:28
add comment

"Bad" is in the eye of the beholder; judgements about the quality of the Facebook app (or any app) are pretty subjective. What are the criteria by which you judge the app? Your list probably looks something like this:

  • Beautiful user interface.

  • Does exactly what I want, when I want it.

  • Impresses my friends.

  • Fun to use.

  • Doesn't crash.

What are the criteria that Facebook's development team uses? Probably something like:

  • Makes the FB executive team happy and results in a steady stream of paychecks.

Breaking that down a bit further, we might guess at:

  • Easy for anyone to figure out.

  • UI acceptable to iOS users.

  • Unlikely to offend many users.

  • Minimizes load on FB servers.

  • Doesn't crash.

As you can see, there's not much overlap there. I may have guessed wrong on your priorities, and I may have guessed wrong on FB's priorities, but even if I could magically divine the correct answers it's a good bet that the lists would still be different.

Also, realize that FB is famous for its web user interface adjustments, and FB users are famous for complaining about the FB user interface, particularly when it changes. The real lesson here is:

You can't please everybody.

To address your question more directly:

Put in a more positive way, what is required (other than skilled people) to make a great product?

• Understanding of the needs and desires of the users.

• Consideration of requirements from other stakeholders, such as service providers.

• Design skill (and political clout) to maximize the alignment of user requirements and other stakeholder requirements as possible.

• Marketing.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.