As developers, we get better over time. Each year we look back on what we built the previous year and we see ways that we could improve on it. We notice ways that we could have made a process more performant, or a UI more streamlined. Since we spent the last year honing our development skills and increasing our knowledge, we can easily identify pain points in past work. It is one of the natural flows of development.
Unfortunately, going back and refining a feature or improving an API is often not very high on the priority list. There are too many awesome new features to build instead!
In June of this year, my team and I released Easy Digital Downloads version 2.0. All things considered, it was a very significant release that spent many months in development. Once it was released, I was really proud of it. I felt we had done some truly great things to the platform with version 2.0. If you go and look at the announcement post for the release, however, you may notice that there were actually very few significant new features introduced. The most significant new feature was the introduction of a dedicated admin screen for API keys, but this is a feature only a small number of users use, so it’s really not that major.
2.0 was this major new version that we spent months developing, so why weren’t there many, many new features? What happened to dynamic discount codes? Where did the idea of dedicated sales page per products to? Why didn’t we add the ability to bulk import price variations? All of these would have been major new feature introductions, but we didn’t build any of them. Why? The answer is quite simple, actually: refinement.
When 2.0 was in development, EDD had reached a point of having tens of thousands of active users and a significant number of high profile sites relying on it for their e-commerce processing. This also meant that the amount of time needed to provide high quality technical support to all of these users had grown significant as well.
I had become painfully aware of just how many areas in the platform were in need of some significant improvement. For example, on average, we had one to three difficult support tickets per week related to the tax system not working properly, especially for European users.
My team and I have been very fortunate to experience rapid growth and a quick road to a sustainable business, and much of that was due to our rapid introduction of new features that helped make EDD attractive to a larger and larger user base. It also caused a problem.
We grew rapidly enough that our focus, at times, had to be placed on getting feature X or feature Y out the door while feature A, B, and C sat in the shadows, not-so-silently suffering from a lack of attention.
Version 2.0 was the release where I wanted to take a step back and look at what we had already done and determine which of those features we needed to improve.
Many people would say things like “what awesome new features are you building into 2.0? It is the big 2 dot 0, it must be awesome”. My answer probably disappointed a fair number of people: “we aren’t building many new features, we are focusing on refining what we have”.
EDD started as a simple e-commerce plugin to sell digital products. In version 1.0, it had the ability to take money in exchange for delivering a download link. That was it. There were no extensive reports, there were no logging systems, there was no REST API. So many of the features that EDD has today simply didn’t exist early on. While I love that we have been able to build a more expansive platform that more and more users love to use, a large part of me misses when EDD was a lot simpler. Over two years, EDD had started to lose the “easy” part of its name and I wanted to strive to improve that for version 2.0. That meant refinement, not feature introduction.
This morning, a rather negative post was released discussing some of the new highlights for the upcoming WordPress 4.0 release, and just how “underwhelming” the release is going to be.
First off, I’d like to be clear that I absolutely love what is coming in WordPress 4.0 and having nothing but huge respect for Helen (the release lead) and everyone else involved. They are working exceptionally hard to get 4.0 finished and to make it the best version of WordPress that has been released to date.
The post above makes the claims that WordPress is no longer innovating and getting boring because it isn’t introducing major new features with this release. According to many, 4.0 is supposed to be a major milestone release since it is the big 4 dot 0, and sure, there is some truth to that, even if it is just that we internally would like to see something huge and awesome.
I am really saddened that people can look at the upcoming WordPress 4.0 and say things like “not innovating”, “not pushing the limits”, “not working hard enough”. The amount of work and effort that goes into refining existing features is often magnitudes greater than the amount of work required to build a brand new feature.
When building something new, you don’t have to worry about all of the ways that developers and users may be using the feature since it doesn’t exist yet. However, when improving an existing feature, you have to be very mindful of what developers have built on top of the feature and how users may be using it because the last thing you want to do is fatally break thousands, or millions, of websites during an upgrade.
Refinement is excruciatingly difficult, especially when also striving for complete backwards compatibility.
I for one love what is coming in WordPress 4.0. If you do too, take a moment to thank Helen and everyone else involved for their superb work in making WordPress better and better.
New features are easy, refinement is hard—harder than many can imagine.