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?
Why is it so hard to make a great app?
project;applications
Sounds like a question that would probably result in lists, but here are some thoughts, mostly to do with company politics: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.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.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.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.You need lots of time, and given the globally competitive nature of the industry, time is not on any developer's side.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.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...)