An old coworker of mine (who is still an android dev) asked me a question earlier today:
Why has it become acceptable in our industry to have tools that are such poor quality?
He was referring to Android Studio, but we could ask the same question about Xcode, which is also bad:
I mean no offense to the teams working on these products. It’s not their fault. Programming is hard, etc.
The reason mobile IDEs are bad is that Apple and Google have little economic incentive to make them good. Twitter, Spotify, AirBnb, etc. aren’t going to not build a mobile app just because XCode and Android Studio are both difficult to work with. Instead, most companies are going to tell their devs to suck it up. Bad developer experience doesn’t seem like such a large problem compared to the 30% cut they have to give for in-app purchases.
Facebook can build their own IDE and their own cross-platform development solution, but again, the experience here won’t be stellar for the rest of us because of the lack of economic incentives. Any tooling improvements that don’t eventually contribute to Facebook’s bottom-line will be a second-class project. We aren’t going to get first-class experiences from second-class projects.
Lately, I’ve moved from doing mobile development to web development and the above theory holds up in this new context.
Example: VSCode is a pretty solid editor. Why? Again, economic incentives. VSCode is really an extension of Microsoft’s cloud business, a business which is becoming increasingly important given it’s failure to gain a foothold as a mobile platform and given that Google is raising a whole generation of kids who won’t buy Microsoft office.1
Another example: I just started using IntelliJ Ultimate for web dev. It’s damn good. IntelliJ Ultimate and Android Studio are based on the same open source project. The difference in quality is largely explained by a difference in incentives.