How a scientifically designed personality test app was released just in 20 hours
In a single day, the app was ready. It took another 6 days to tune the accuracy of the results and finally get it published on the play store. All this took a total of 20 hours.
From the perspective of the software engineering process, it was a tough job to deliver production ready app within a week. Now I wonder, how I did that! It was a couple of years ago. 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
One day every week was dedicated exclusively for brainstorming amongst team members, halting our work. This used to give us ideas, which were hard to ignore. 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, which form the basis for MBTI.
The 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 his 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. It became so smart that, it came up with contextual questions, from which conclusions could be reached faster.
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 re-publish it again.
And that's when we had the final app released within a week with 20 hours of work. The most important part of this post is what's next?
"Learning without reflection is a waste. Reflection without learning is dangerous." - Confucius
Before reading further, you may play following music for an amazing reading experience
Learning: How 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: