Unity is one of the most popular game engines in the world. Now our team creates plugins that are used by hundreds of thousands of Unity developers. But when we’ve just started, we made a huge mistake, which, fortunately, led us to a great experience. So let’s talk about the situation that almost crashed our careers.
There are two ways to create games or applications in Unity. You can write all the code yourself, which is very long and difficult. Or you can use ready-made plugins. These are packages with a set of development, design and other tools that you can just download and straight forward use in the game. Those plugins help to use all the parts of the project as playing with a constructor.
To simplify the development process, Unity created its own Asset Store (as an analogy of the App Store for iPhone), where developers posted and sold their plugins so others would not waste time and use ready-made solutions for their tasks.
At the same time, my colleagues from the Stan’s Assets team and me started developing such plugins for Unity. We are developers. This means that no one but us better understands how to create products that will make developer’s life easier.
Our plugins really made us well-known around the community. Soon, we became one of the top 5 teams by downloading at the global Asset Store. The most popular of our plugins are Ultimate Mobile Pro, iOS Native Pro, Android Native Pro.
Therefore, the support of the Asset Store recommended us for Unity users itself. Because of this, such famous companies as Moon Studios and OneSignal asked us to help with their development. And we successfully work with them to this day.
But just as in every good story, right when we became popular among Unity users, we made one of the biggest failures in our career.
Loss of control and money
We started working on plugins as soon as they appeared in Unity. Back than we didn’t have that much of a experience, so we thought we were doing everything right. But at some point, the process started to snowball. And here’s why.
The creation of the plugins looks like this:
- you create plugins and upload them to the store;
- other developers download and use them;
- if something does not work, they write reviews or requests to fix it.
Everything here is just like in any other service: you get feedback and start doing everything to improve the situation. So we have been releasing new plugins and at the same time have been fixing everything that users asked us about.
Meanwhile, the competition and the demands of our audience were growing. We were shown a problem – we solved it, we were given a request – we fixed it. But again due to lack of experience, it had turned out that our plugin architecture was really bad. We worked fast and tried to quickly deliver fixed products, but forgot about the quality of the original code.
At that time, we launched twelve plugins for general use, which we were “renewing” all the time. It took a lot of effort, and, of course, money. And we realized two things:
- Fixing all the problems people complain about is unrealistic. It’s easier to just rewrite everything.
- The financial costs of supporting and developing the project went beyond what we have earned at the Asset Store.
Basically we had earned $ 5-7k a month from plugins sales. And exactly the same amount was paid to developers to fix bugs. This is an perfect example how bad code and bad architecture “killed” a really good product – our plugins. We did not cover the cost of product development. And it could not go on like this.
So we made a very difficult decision. We stopped the current developing processes. We took a break, removed all our old plugins from the Asset Store and started writing new ones. It all took about a year. Every day we were writing new products from scratch. But this time it was different: it was a clean code and good architecture.
The effect was amazing. After we rewrote the products, it became 10 times cheaper to maintain them! Whereas in the beginning our developers spent days fixing problems, now it takes several hours a week.
Previously, plugin support cost us $ 7-10k, but now it costs only $ 800. After this incident, we have learned forever that the correct architecture, clean and well-thought-out code will help us to develop the product way easier, cheaper and better. This principle applies to any job, project, or career.
Always put quality first. Then you do not have to redo the work and spend money on fixing errors that could have been avoided and therefore there would be no need to risk your reputation.