Appointy Nine – Why we scrapped our code that took 9 years to build?
This blog is about why and how we were able to scrap 9 years old code and started thinking fresh.
APPOINTY IN THE MAKING
Between 2004 to 2006, we used to develop websites over WordPress for the Health and Wellness industry. There was a WordPress plugin for almost every need – except a scheduling plugin. We got so many requests for a scheduling plugin, that we could not keep up!
So, we wrote our own script. A script that would allow us to save time by not having to build the same code again and again. One of the first challenges that we faced was that every vertical has specific requirements. So, we created scheduling rules to generalize our script for different verticals.
Soon the demand for scheduling increased and Appointy first went live in Jan 2008 with “Do it Yourself” concept.
Unfortunately, in our zeal to please every customer, we kept on adding features and Appointy become overwhelming. And then the same customers started complaining. We realized that we are moving away from the Do-it-Yourself concept. So we went back to the drawing board with the idea to make it simple again while keeping the functionality.
It costed us one whole YEAR. But we learnt an important lesson.
Appointy is a bootstrapped company (never raised any external funds) and had to make money from customers to survive. We believe that the best way to make money is to solve someone’s problem first and then ask for a fair price. The more we can help our customers, the more we will grow.
We started improving our on-boarding and support process. But we soon realized that every business is unique in nature and needs something different. It simply meant that we not only needed to add to our support team but also that we needed to get more programmers. We needed a way to scale vertically in all departments.
We started hiring more programmers. After a few months, during a scrum meeting, a new team member shared that he was happy that something that he had written was live on our production site. For him, it was definitely an achievement. However, I was not happy. I realized that there is something wrong in our setup if it is taking months for new programmers to becoming productive.
It was time to move out of comfort and take some bold decisions. We could simply not scale as quickly as we wanted at this rate!
HARDEST BUT ONE OF THE BEST DECISION
Next day, I talked to a few senior guys and tried to understand the problem. The problem came down to the architecture that we created 9 years ago. Technology is changing every year and so technically, we were almost 9 years behind.
I did not know how to tell my team to change the entire code they have been writing for 9 years. I didn’t want to look crazy and decided to first take the plunge myself. After all, I was once a programmer myself (and a pretty good one at that :)!)
I always write down an objective before starting any new task. So here was my objective – Create a modular architecture with a learning curve of less than a week and develop a blazing fast app.
If Google can fetch the right results from trillions of rows in less than a second then why can’t Appointy.
I came across a term RxJS on Angular.io. Followed the topic for a few hours and really liked the idea of streaming the data. The concept was simple, would you watch a video on Youtube if you had to wait 5 minutes every time you wanted to watch?
I decided to give it a try but the reality was I couldn’t do it myself. I would need help from the senior guys.
Next day, I just explained the streaming concept to my team and tried to create interest. For the next few days, I continued the process until our rock stars (who are way better programmers than me now) picked up the rhythm. The first seed of change was sown.
In a few days, we were able to implement the entire streaming concept in the existing code of Appointy. As expected, it was working well, but was not great. We needed to do more.
TIME TO UNFOLD SUSPENSE
There were 2 more issues that still needed to be addressed
- User Interface and User Experience (UX/UI)
- Loading speed
1.5 months had already gone and we had only gained knowledge. No action yet. I was not able to ask the senior guys to work on UX/UI else they would know that we are trying to scrap the old code and I didn’t know what would have happened.
So, I decided to work with one of the interns we had hired. This new intern had a different approach to coding. He wanted to be fast, faster than anyone else. He helped me implement tools so that I could check the changes live and give him feedback instantly. We both started coming early at 6 am and by the time our office would start, we would already have put in a few hours of work. The new product started taking shape.
After a few days, I realized that everything was working great. We were on track and it was time to unfold the suspense to the entire team. Now I had some proof-of-concept to justify that 9 years of code can be scrapped but not without our rock star team.
The day arrived. Showed the new UI and explained the next steps to go live. Our rock star team started believing that it can be achieved. That is just what was needed.
Now after 4 months, our first version is in testing phase.
- We are able to reduce the “Admin Area” load time from 10 seconds to 2 seconds. (Yes, 5 times faster!!)
- We are able to reduce load on our servers by 50%.
- We are able to get new programmers productive within a week.
- Finally, I got the time to write a blog.
- The first step is to port the existing software. Next step would be build badly needed features (We have been compiling feature requests from our customers and our priority list is ready)
- Our API is ready which can either used by our team or external teams to integrate different apps. For example, we would not need more than a week to add a new payment gateway anymore.
- We would have more bandwidth to tie-up with other companies who can add more value to your business. We have already tied up with Reserve with Google to help you get new customers.
PS: During these 4 months, we have not only created Appointy from Scratch but also successfully created another conference room scheduling product from scratch. We sold it for USD 130,000+ without even meeting the customer in person.
Next: I would be covering technical details and processes we used to build Appointy from Scratch in less than 5 months.
If you have any question, please feel free to comment below. I usually reply within 48 hours. 🙂
What was the most toughest task in the whole process and why?
Did you make any mistakes during this process?
Hey I want to use the appointy apis if any can you let me know if they are released or not