First of all, it's important to note, that this is not going to be a "Bash Mojang" post. This is simply going to detail why/how I think Mojang could improve.
Mojang is by far one of the fastest growing companies I've had the pleasure of working with in the past year. They have a great product, and even greater employee's, however, they have one fatal flaw that countless other companies have fallen victim to in the past years.
They don't learn from their mistakes.
We all do it, we think that the circumstances have changed, we think that this time it will be different for reasons A, B, and/or C. However, it's not.
First off, I don't know Mojang's development practices, nor do I know Java all that well, however I know that if you haven't caught up to the Behavior Driven Development paradigm, then you're doing it wrong.
You should never write code, and then decide what it should do. You should detail out what you want your code to do, and then write the code to do it.
This will give you a much greater understanding of your project, and also allow you to consolidate or even remove parts that you though you would need.
Secondly, FFS, if you have made over $100k on your project, you should have seperate development, staging, and production environments. Every patch/update you send out should hit that staging setup first, and you should have a subset of users do testing for you. That way, silly little things will be caught by the group of users who KNOW they are being testers.
That leads me to my next point. Beta. Yeah, we know, Minecraft is in beta. But so was GMail for years, and I can't remember when they went down. If I can expect stability from a beta project from one company, then whether or not you like it, they have set the precedent of how a beta project SHOULD behave.
We're not talking about random bugs, or things randomly appear in game. We're talking about keeping your servers up. Ensuring that when you do maintenance, that people are given a time frame as to when to expect things to go down, and when they will go up. If you had a staging environment, you should have very little downtime for your production systems.
Next point. Everyone loves to goof off at work, but when you have a buggy product, and your customers are upset, it's best not to let them see you tweeting every 30 seconds about nerf guns or how popular you're becoming.
Next point. Use your resources wisely, and when you need to, swallow your pride. One of the best parts of the internet is the ability to network with like minded individuals. The ability to talk to someone half way across the world about how something isn't working, and the possibility of them having the fix already on hand is slim, but on the off chance they do, then you BOTH are a hero. If you'd rather shut the door on free help, then at least be prepared to do it right. If you don't, then you just look foolish, as you have 30 thousand tweets about how to fix your issue, and all of your customers see that.
Next point. Hire enough people so that you have at least one person available 24/7. When you sell a global product, it's asinine to think that your customers should bow to your time zone.
My final point isn't really a point, it's just a reminder. If you're starting a company with a product that people love, your number one goal should be to ensure that those people CONTINUE to love it. If not, you're going to be up a creek without a paddle on your next venture, because everybody will remember how your last project went.
I for one send praises to Markus and his group for the amazing work they have done, and are undoubtedly doing. The above points are not issues that Mojang may currently be having or even had in the past, I think they are points that had Markus known from the beginning, would have helped him in the long run.