Hi HackerNoon!
My name is Dmitrii Konstantinov. I am a product manager, and I love developing mobile apps. I'm passionate about them and believe that some things are much more convenient to do on a mobile app than on a desktop. I thought about which of the challenges I solved as a product manager that I remember the most and why. The answer will no doubt be "that one startup.”
There are a lot of "Is" in this introductory section, so it's about me personally. But this entire article has a structure and a title with the word "We" because I did not go through this experience alone, but with a team.
All my reflections in this article are a kind of retrospective. I worked at this startup for a little over three years and left it a long time ago. The last updates of the mobile apps came out in the last month of my work. My memories of the company are exceptionally good, and we said goodbye to each other in time. I tried to describe the business moments and the technical challenges we had to face. In the screenshots from the app, the text will be in Russian because the app was created for the Russian market.
This article may also be of interest to managers, designers, and engineers. Let's start!
In a startup, with the right management, you can have a family-like atmosphere when you order pizza with beer on Fridays after work and play "Broforce" (not everyone loves FIFA) on the PlayStation.
One of the questions at the interview, when I applied for a job in this company, was why I put a certain number in my CV in line with the expected salary. I honestly answered that when the number was 20% lower, no one called me for interviews. After that, we laughed, and a little later, I accepted an offer. I hope that I got it not only because of this joke.
The former CTO is now the host of one of the largest RU IT podcasts and is developing marketing in the company that is the author of the current main Android language. The former iOS developer wrote a famous article about two jobs and sometimes reflects on "that one startup.” The former android developer works in the UK's fastest scaling FinTech and etc. Our team was quite talented.
A ‘startup’ is a company that is confused about:
- What its product is.
- Who its customers are.
- How to make money. – Dave McClure, 500Startups co-founder
The first idea of the startup was to create two mobile apps ("Mobile First" approach!) - one for customers who buy services and one for beauty industry workers who provide these services.
The whole focus was on the first app. It was the main one. It had a much larger number of screens and was created as the main and only way for an organic interaction with the service. Organic user - the external user who saw an advertisement for our app in a famous social network banned in Russia. The app contained a catalog of services and a list of salons and workers. Immediately after placing the order, a potential customer could discuss all the details in a chat with the worker. It was also possible to order the services of a worker at home (yes, the "Uber" from the title was not clickbait).
We had a small department that moderated the workers who wanted to become part of the service. Registration in the app for the workers was first through the request on the landing page; later, we added it to the mobile app for workers. One of the advantages of moderating workers is that we took a professional photo of each of them, and they looked very cool on the worker selection screen (yes, I'm talking about you, the worker who took a selfie in the car and put on your avatar, when we added the ability to put a personal photo for a few weeks).
We monetized the app for customers. At first, we did not have banking features and only had the option of paying in cash directly to the worker. What exactly did we earn? We took a percentage of each order for bringing customers to the worker. The worker signed a contract where he agreed to behave well, not to cheat and share percentages. In theory, the worker could share personal contacts in the chat so that the customer would go to him directly next time, bypassing our service, but this was a necessary risk that we, as a business, had to take.
The customer had three options when placing an order:
Come to our signature, highly expensive, and luxurious salon, which our founder freshly named "Spot"
Come to the worker’s salon, which some of them decorated right at home with our permission. What could go wrong if the user selected this option? For example: once I came to the master, whose husband sat right in the room in his pants in front of me and watched some cartoon at high volume. (I do not recommend this option)
Invite the worker to your home. The order automatically included an additional service with a dynamic price called "Home visit" The nearest available time was calculated based on a distance from the city center. The worker in the app had the ability to select the metro stations where he was ready to come, and we calculated about 1.5 km of the available radius from the metro station and did not allow placing an order further.
A little later, we added the ability to pay through the user’s bank directly in the app. In the worker’s app, we added the ability to upload a card to receive money.
Let's stop talking about business for a second. I promised technical cases and challenges. So, here is a short story about the most typical case that we solved then.
When we designed the beauty services table in the database, we did not expect that the price of coloring was not a fixed price but a delta. The reason is that neither the worker nor the customer knows how many consumables (hair dye, shampoo, conditioner, etc.) will be used at work, so the customer always carries more money with them, and the worker tells them an approximate delta. Therefore, a little later, we had to add a new attribute to the API and add the crutch condition "first look there, and only then there" in mobile apps.
Here is another story.
We needed to implement the ability to communicate through mobile apps between the worker and the customer. Write and build SDK from scratch? Why bother if you can take a solution from a famous dating app? Mobile developers sometimes dream about WebSockets. We also dreamed about them. How to make a live chat that will be updated with every message? Update the chat via push notifications!
So far, so good, right? Well, we couldn't answer the third question from the quote I mentioned above. The service didn't grow fast enough. In the system that we built, we needed to scale thirty-fifty times faster than we did, and only on a gigantic turnover of funds would we begin to bring an acceptable profit. This was impossible to do in the market in which we existed. Therefore, the pivot decision was made.
If Plan A doesn’t work, the alphabet has 25 more letters.”
– Claire Cook, Author.
Time to stop and ask ourselves, what do we have?
Two native mobile apps for iOS (for the customer and for the worker), two native mobile apps for Android (for the customer and for the worker), web landing for customers, a server, an admin CRM panel that has not yet been completed, and last but not least two signature highly expensive and luxurious spots! (Customer's option 1, remember?)
If the business cannot scale up, then you need to pivot! When a business pivots, it means that it’s changing some aspect of its core products or services. Businesses might pivot to better meet customer demand, shift their target audience to boost sales or some combination of both.
We came up with the idea to turn our spots into beauty coworking spaces. Our target audience has changed from customers to workers. Now the workers are our main customers, but in the article, I will continue to stick to the old naming. The secondary app began to require a lot of improvement because it has now become the main one.
The audience of workers is much smaller. If with customers, our MAU (Monthly Active Users) was measured in thousands, then with workers, it was hundreds. But the workers have much more LTV (Lifetime Value), and it is easier to work with them because they come to the salon and provide all the services in it.
Let's take a closer look at what we have at this point in the worker’s app. Calendar with order schedule, chat, statistics, and ability to manage your list of services and portfolio. The worker himself decides which order to accept, and all accepted orders are displayed in the calendar. The master in the first version of the app had a very simplified calendar in which he could set free time in a particular salon and see the order in the schedule.
We needed to monetize the worker’s app and scale our server to a business pivot, significantly improving the ordering API method because most of the orders in coworking are booking a chair for a certain period. We also needed to refine the customer app by changing the payment system because now he pays the entire amount to the worker, and we charge the worker at the rate for how many hours he worked on the chair.
The following options have been removed from the customer's app: for the customer to visit the worker in the salon (sometimes at home, haha) and for the worker to visit the customer at home (goodbye "beauty uber").
Business pivots usually do not go smoothly. In our case, a decent part of the development and management team left. Fortunately, we managed to hire new people who have not yet burned out and wanted to actively create, prove and develop the service and platform.
What technical challenges did we face? The most unexpected challenge was that the new guys who came in could not scale the code written by people before. Therefore, the difficult decision was made to write the methods from scratch (and, in fact, the whole server) but in the JSON API structure that was used before in order to minimize changes in mobile apps as much as possible. We planned the work, and I made a Gantt chart for mobile development, which was based on the deadlines in the Gantt chart for the backend.
At a certain point, we realized that the API methods had changed a lot, and this timing coincided with the time when the last Android developer left us.
Tip! Have at least two developers on the same platform so that the bus factor is not the minimum possible (1.0)
What did we have to do? One front-end web developer took the initiative, but a month later, we realized that nothing was working out for him, and this problem could not be fixed by some kind of code review because we had no Android experts left. At the same time, we were writing a widget for the web, which reproduced the flow of the mobile app for customers.
The terrible idea came out of itself because we had no other choice. We made an Android app that contained only WebView with our web widget.
I have a pen, I have a apple
Uh! Apple-Pen!
I have a pen, I have pineapple
Uh! Pineapple-Pen!
Piko-Taro, singer/songwriter
With the change of focus and target audience to another app, we had a unique opportunity to talk to literally all the masters that we had. We conducted over 100 interviews. We studied why they chose us and what turned them off before they came to us. We saw the patterns in the interviews, and based on these patterns, we made a new "Welcome" screen, where we wrote about the benefits of our service based on the fears and needs of users. The screen consists of videos of the beauty industry workers at work and a slider with our main advantages. Yes, I understand videos on the "Welcome" screen are out of favor these days, but 2019 was the heyday of vertical videos and TT (back then, it was under a different name). We spoke to the worker on this screen without capital letters but with emojis in the style of the company's brand book.
What fears and needs for service did the workers have?
Work chairs in the coworking space will be dirty.
The need to purchase consumables, preferably at a low cost.
How and where to meet a customer?
Will there be a confirmation call after booking a seat in the mobile app?
The workers have two options when placing an order:
Booking (the booking flow is in the screenshot below)
Customer order (by entering a phone number and name). The customer order created in the master app automatically registers the customer if he is not registered in the system. We will send this customer an SMS the day before the order with a link to the mobile app. This is where the advantage of the "Mobile First" approach comes in. The customer has the same flow during registration and authorization, and they only enter the phone number and code from SMS. No logins and passwords. Awesome!
Next, we implemented the onboarding flow for placing the first order (in the screenshot below).
Our founder had an idea that the master could "pull" time intervals in the calendar (like in Google Calendar) to select the desired order duration. Personally, I liked the implementation similar to Apple Calendar, where you can easily change the beginning of the interval by moving your finger, while in the Google Calendar, the finger is "stuck" at the first point where the user tapped. My team and I came up with what I think is an amazing progress bar solution, combining the best of Apple and Google Calendar. The progress bar filled up in just over one second. You can see how it works in the screenshot above.
We made and successfully released the site and apps on time. Our main metric of success was the overall chair occupancy, and this metric was growing successfully. Everything was fine and promising until Covid came. Almost the entire IT team was disbanded. Later CTO from IT outsourcing contacted me and asked about the business part and the architecture of the mobile apps. Most likely, they planned to pick up the development, but judging by the lack of mobile app updates, it did not work out.
Here's what the pictures of the worker’s app look like on the App Store right now.
The service continues to exist and flourish. You can see that beauty industry workers are still available for booking. WebView app is still available in Google Play! (Google, I have questions for you)
In conclusion, I would like to note that a startup is a great opportunity for vertical growth in a company. You can develop your hard and soft skills anywhere, but in a startup, you can grow (or change) the title of your position. I came in as a QA and very quickly grew to Head of Mobile and reporting directly to the founder. If you are open and ready to work hard 24/7, then go to a startup instead of a corporation.
Thanks to everyone who read to the end! Leave a like and comment below - I would be pleased.
Also published here.