If you spend enough time trying to predict the future, you learn that the more variables there are, the more difficult it becomes to determine a future. Take the weather for example. It’s not hard to predict tomorrow’s weather because there’s not much that will change over the next 12 hours or so. Try to predict the weather 7 days from now, 7 months or worse, 7 years from now, and your results will begin to vary dramatically.
This is certainly the case when it comes to writing apps. The bigger any one particular feature is, the more variables there are that affect it and thus the more difficult it becomes to predict how long it will take to finish. You don’t have to work in the software business very long to figure this out. Like most people in the software industry, we’ve been trying (with varying degrees of accuracy) to do this not just for our own internal planning but because we know you want, and need, to know as well.
The conclusion I have reached is that it’s not practical. It can be done to a degree (and we still take educated guesses) but the precision of prediction regarding large projects seems to be governed by a law similar to that of relativity. Einstein taught us that the faster you go, the more energy you need to continue to accelerate. In software, the precision of prediction is equal to the size of the feature multiplied by the precision with which you wish to predict it. Given that it’s the biggest features we create that you most care about, the energy required to accurately predict their completion dates is just too great.
You want to know when big features will be done so you can plan for them. The problem with this is that baked in is the assumption that when the given big feature is completed, it will provide everything you need for whatever it is you are planning. That may not be the case. For most of you it likely will be but for any one of you, it’s far less certain. Given this, we will no longer be making public predictions about when features will ship.
Instead, we will talk about what’s important and what’s a priority. If something is important, if we use that specific word, it means it’s something we are thinking about and likely even planning for in the not-too-distant future. If we say a particular thing is a priority, that means it’s either in active development or likely will be soon. However, you should not plan any more precisely than the accuracy of the information you have will allow. For example, when we announce we are going to be adding some big feature, we don’t usually publicly provide much in the way of details at that point. When we reach beta, however, there’s a lot of information available which allows you to plan far more accurately.
None of this impacts our commitment to regular releases throughout the year. That will continue unabated. This subtle but important change in how we communicate with you is all about making you happier with what we provide. Happiness, after all, is all about having your expectations met or exceeded. Going forward, hopefully, you will be even happier with us.