How I released an app within 20 hrs
I released a scientifically designed personality test app which took only 20 hrs to build. End result was an app as you can see here.
It was a choice based quiz that analyzes the choices to come up with personality traits of the user. In a single day, the app was ready to be used. It took another 6 days to tune the accuracy of the results and finally get it published on the play store. From concept to release, it took 20 hours of my work time in total.
From the perspective of the software engineering process, it was a challenging job to deliver production ready app within a week. Now I wonder, how I did that! It was a couple of years ago when I did that. I have shipped many products within 20hrs after this. Back then, I had no idea about sprints. Today, I break it down into pieces for you.
Day 1: Idea
We used to have a hack day every week where we would just brainstorm and flirt with new ideas. On one such day, Gautam(a Desi friend who was just back from the US) was excited to share information about the personality types, personality tests, and related things. I was unwillingly listening. Even after noticing my disinterest in the subject, he went on telling about the authenticity of these personality tests, how MBTI test is being used by organizations in recruitment, employee well being, etc. Yet, I was not impressed.
My take: Personality tests are bullshit. Everyone’s personality is unique. So, to judge personalities accurately for everyone, you would need to define billions of personalities, one for each.
And above all, however scientific it is, personality tests are boring. So, I really don't care about them. But, this conversation started getting interesting. We started wondering if there is any scientific premise, on which we can categorize personalities and we happen to come across Raymond Cattell, a psychologist, who has defined 16 personality factors based on 4 categories, which form the basis for MBTI(a widely used personality test for employment).
These 4 categories are:
- Favorite world: Do you prefer to focus on the outer world(Extroversion) or your inner world(Introversion)?
- Information: Do you prefer to focus on the basic information you take in(sensing) or interpret and add meaning(intuition)?
- Decisions: When making decisions, do you prefer to first look at logic and consistency(thinking) or the people and special circumstances(feeling)?
- Structure: In dealing with the outside world, do you prefer to get things decided(judging) or do you prefer to stay open to new information and options(perceiving)?
Understanding more about the subject also sparked more interest. Gautam forced me to take an MBTI test. The results seemed accurate but it demanded 1hour of my time. Next step in this activity was to talk to a real psychologist. Gautam happened to know one. I talked to her and things got clearer. We learned that results based on only these tests were not reliable. Life history and experimental data are crucial for accuracy.
I was bored by now. I started carefully observing personality types in famous celebrities and listed down some, with whom I shared some common traits(like Will Smith).
And here comes the idea behind app’s more accurate results:
Do we feel more connected with people who have similar personality traits?
On a small sample size of 2(me and Gautam), it seemed so. But, we needed to test it on a larger scale. What if we ask people about their favorite celebrities? Will it reveal their personality traits?
Day 1-2: Brainstorming & building App
A UI was sketched, with a simple quiz, to show two celebrity faces. The user was asked to choose their favorite. In the next 5-6 hours, I had brought the app to the following look:
Day 2-4: Test-Validate-Improve
Our first opinion, POOR RESULTS. After testing on some friends, we figured out we need to go deeper in logic to make some sense out of the user interaction with the app.
Here is another catch we faced. Will Smith being favorite of two people, doesn't mean they share the exact same personality traits. There could be some common personality traits, not all. There could be some errors also because of biases(e.g. a male user may choose a female celebrity over a male celebrity. Choice here is not related to personality trait but an attraction to the opposite sex), which we need to eliminate. This can be solved with more questions. But no one likes 60min of the test(I wouldn't like even 5 min). We set out to minimize the number of questions being asked. But there were more than 256 choices we needed to give to get accurate results. For this, we improved the algorithm, which enabled it to learn from every answer. The contextual questions helped us reach the conclusive decision about personality traits under 20 questions.
Day 4-7: Re-test and fine-tuning
We again shared with friends and this time they were impressed by seeing the result. At times, we also faced some glitches, for some people. We tuned the weight of certain parameters, added one text question and we had a perfect product. Finally, when the app was published, Google rejected it for using the images of celebrities. We had to remove the images and then publish it again.
And that's when we had the final app released within a week with 20 hours of work. And we were feeling like this...
Play this sound track to feel how we felt :)
So what did we learn here?
"Learning without reflection is a waste. Reflection without learning is dangerous." - Confucius
7 lessons to ship products faster
Think minimal: This one tops the list because almost every product owner is in the illusion that they are thinking minimal. But, there will be a lot to cut down. Top reasons for this illusion are:
- Emotional attachment to the idea
- Fear of failure
- Not accepting the fear of failure
- Counting features as a matrix for success
Simplify the idea, pick one thing that matters, leave the rest. Trust yourself, be more open, definitive Yes and definitive No, both are good answers.
Small teams move fast
If we were more than 2, it would have taken more time or possibly haven't been published at all. Even if you have a big project that cannot be handled by a team of <3 people, divide the project into small sub-projects, give autonomy to the teams of 2-3 people. For any software development project, the magical combo is
1 designer + 1 backend developer + 1 frontend developer. Less is good. If you want to dive deep into this topic, read the book Mythical Man Month.
Bias towards action
This is no brainer. Be biased towards action than ideas. Users' feedback makes the whole process of "getting it right" fast. Make mistakes fast.
Re-define perfection with ability to iterate
When thinking of executing a project faster, I see people thinking that they need to let go of their habit of perfection and it bothers them a lot. It used to be the same to me, but here is a bigger perspective for you. Don't change your habit of perfection, think perfection in the long term instead of short term. To achieve perfection in the long term, you will need to make mistakes faster, exposing yourself to users who will say that your app is bullshit. Live with that for "long-term perfection". It would have taken you more time figuring it out by yourself or wouldn't have been possible to know without shipping it to users. Ship it fast and be honest to your users and listen to them.
Don't reinvent the wheel, get help
Ride on the shoulders of giants and experts. In our case, it was the Android platform, open source libraries and experts’ opinion on the subject.
Minimize systems to manage
Can we do this without deploying a server? More the systems that app needs to interact with, more the workload. Go local whenever you can. We made everything work locally, it benefited in speeding up things and maintaining the privacy of users. It wouldn't have taken more time to spin up a server. But, it would have definitely have taken huge time to maintain, fix bugs, iterate, if we had server.
The fewer moving parts, the better!— Pradeep Sharma (@pradeep_io) May 10, 2018
Does it really need an explanation? If you are not ready to work hard, forget about everything else you learned here.
By the way, building this app gave me some insights. Building an app which helps people understand their psychology and that of their friends, requires a lot of effort. When you really wish the best for your users, then it shouldn’t be about just showing some information on the screen. We should consider the environment and mental conditions they will be in when learning what is displayed on the screen. When someone is in stress or suicidal mindset, should we show the information in plain English or in some other fun way which helps them see things in an optimistic way? I believe in the latter. We did that at a very low scale with a simple idea. But, doing it at a larger scale, requires a lot more psychological expertise, which needs huge investment. Also, the app thus designed, might not make any money(would you pay $10 for a fun app that helps you understand deep questions about yourselves or your known people?). So, we did not update it, after releasing the first stable version. If you think we made a mistake and we should release the next version, please check out the app and support its development by sharing this post with friends. Share with me the features you'd want in the next version. Invide community is always ready to contribute to projects which can make an impact. Email: