5 Takeaways From My Past 5 Years With Coral, Prism, Midtrans and Gojek

A little over 5 years ago, I decided to resign from Traveloka and joined hands with my friends to help build Coral. It was an exciting project. I have a big interest in the social commerce space and Coral seemed to be a very good take at it. We built it, launched it, learned from it and in the end decided that the business model will not be sustainable. Our experiment was evidently working. Merchant's conversion rate reached over 20% on our platform but we couldn't monetise it. Then we took the decision to pivot. We took the best part of Coral, the chat-to-buy capability, and breathe life into Prism. The product helped businesses dive head first into the social commerce space with their existing platforms.


One thing that a lot of people don't know was that Coral and Prism was part of Midtrans from early on. It was acquired before launch. This enabled us to do the experiment without worrying about funding. Gojek acquired Midtrans during the closing days of 2017 and Prism was part of that. In mid 2018 I helped the Midtrans mobile team prepare for life after acquisition. By 2019 I started working on Gojek's offline payment products. Being in this space taught me a lot of interesting things.


Looking back, these past few years gave me very interesting lessons. During the closing days of 2020, which was a very interesting year due to the pandemic, I want to share 5 takeaways from the past 5 years.

Lesson #1: 
Take care of your people and your people will take care of you

Working in teams brings the biggest challenge of all tech teams, managing people. Based on my experience during the past 5 years, it's key for you to take a good care of your people.


I'm not gonna give a long lesson on how you should do that, it would be a very long post. I'll share important learnings on how you should take care of your people.


The first one would be, get to know them. Like, really, know, them. Understand their general character. Know their family, motivation and what makes them tick. The thing you need to identify are their strengths and weaknesses. You will need to make sure they're setup for success based on their strengths. You will also need to make sure that the weaknesses are addressed as well. By doing this, you are creating a clear map of the team's collective wisdom. You are also helping them grow. Make sure that they can get even better with their strength while also make sure that the weaknesses are not that much of a weakness anymore. In simple words, grow them.


The second one is be selfless. Take blame, give credits. Your main job as a leader is to ensure the team's success. Any problem that arises in the team is on you. It could be not enough preventive action. It could edge cases that you miss. It could be anything. It's your job as a leader to ensure these cases did not happen. Claim the blame publicly and shield your team. Make sure they know what's wrong and learn from it. Also make sure that there are measures to prevent the problem from happening in the future. In the event that you do achieve success, give credits to the team. You don't need the credits. If the team is successful, you are, on paper, successful. You give credits so your team can celebrate and have a better sense of belonging.


The third and final learning in this lesson is to give second chances. It's easy to judge failure and let people go. However, people often forget that to err is human. Human can learn and improve. Don't be so quick to label someone as a failure. A lot of factors can affect performances. You need to actually have a 1-1 session with that person and try to understand the underlying causes. Then you should assess. Is it because that person does not belong? Or is it because maybe the person lacked the required guidance. I've had several team members with this condition and I am glad that I didn't go to let any of them go. I took bets and put my neck out to the management to try and improve them. Sometimes it took hard conversations with them, but it boils down to one important thing. Showing them that you care, you want them to succeed and you will be there to help them go through their second chance. This is something that will usually be the turning point in their career. There's nothing more fulfilling than seeing someone go from almost being fired into one of the core team members. I'm thankful to have been able to experience it several times already.

Lesson #2: 
Be pragmatic and focus on solving the problem at hand

The tech scene nowadays is very interesting. We have a very fast flow of information and tech updates are happening everywhere at a very fast pace. If I look back at the time I was in university, it was way slower compared to nowadays, but we can be more focused since we have less noise back then. The noise we have right now can disturb our focus from the problem we're trying to solve. Hypes are happening everywhere and can cause confusion. I'll share the important learnings from the experience.


The first one is to always know the reason why you took a decision. Don't take a decision to use kubernetes because it is the hype thing right now. Does it really meet your use case? If it doesn't meet it then see what do you actually need. This applies to everything that you do. Why did you write that code in that approach? Why did you choose SQL over NOSQL? Ask these questions and understand more. Always focus on the problem at hand, understand them. This way you will know how you should solve them and what would be the best way to do it.


The second one is to ask the right questions. Don't ask questions simply for the sake of asking it. Ask questions to understand and to improve. There are no dumb questions when it comes to understanding the problem at hand. It's even better if your question can lead to the whole team getting the bigger picture and identifying solutions. Asking the right question is an art in itself. You'll get better over time as long as your goal is always to understand the problem and to improve things.


The last learning in this lesson is to keep an open mind. I've known a lot of engineers that are so close minded. Once they believe in certain approaches or tools or even language then everything should be done with it. This is something I oppose from the depths of my heart. You main goal in engineering is always to solve problems. To be able to do that you need to look at what the problem is and how you can do it best. A lot of times it involves new things, new approaches and things you never tried. Don't be afraid, open your mind and explore these new knowledge. You will only gain more wisdom.

Lesson #3:
Murphy’s law is real

Everything that can go wrong, will go wrong. So true. Experienced it a lot. Happens a lot in the tech space especially in younger not yet matured tech teams. We tend to overlook things. No matter how good you are, this will always happen. Below are some learnings from my experience.


First one is that you should always, always, always, prepare negative scenarios. Ask, what can go wrong. No matter how stupid it can be. If you can think of it, then it can happen. List them down, prioritise and set the measures needed to prevent it and then put it in place. I'm sure your team can't possibly list everything down. But, you can cover around 80-90% of everything. For the rest, you need to prepare the things you need to do in case things go wrong.


The second one is to not underestimate things. Things that are underestimated can come and haunt you later. Make sure even the smallest possibilities are handled. When you still have low traffic, these things might not matter. But, when you experience sudden spiked growth, these smallest things will haunt you. I'm no stranger to identifying that major production outage being caused by the simplest of things. Everything matters. You need to care more on an end-to-end delivery of the product.


The last one is to understand that shit happens. Don't dwell too long, learn from it. Have a good post-mortem session, make sure the team learn and then implement the preventive measures so it won't repeat itself in the future. Failing is okay, as long as you learn from it and prevent it from happening in the future.

Lesson #4:
Build your network

One of those things that I am thankful in my career is my network. I've met amazing people that I know, collaborate with and work with and I learn a lot from my network. How I got into Coral is also through my network. Being able to reach out helps me a lot in getting things done and it should be a skill every engineer also have. Below are some of the learnings:


The first learning is you should learn how to reach out. I know it's scary to reach out and talk to someone out of the blue. Especially if you're an introvert. However, you can actually have a standard introduction you can use. I have mine. I usually start with this:


Hi <name>, I'm <your name>. I work in <company> as <your title>. I mainly deal with <mention your main simplified responsibility>. I would like to reach out to you and understand more about <what you want to know>.


Not that hard, right? From there you can start taking things further. Remember to be polite and genuine. Be yourself. Also, it would help if you look up the person you're reaching out to at LinkedIn or other social media. Find similar point of interest that might help. Feel free to use my template.


My second learning is joining communities. I have associated myself with the Python ID communities for a long time for 2 reasons. First is that I give back to the community for what Python has given me over the years. Being a speaker and nurturing the community is how I try helping other people get the same benefit and maintaining the community too. Second reason is so I get a wider reach to other companies. Like it or not, you might need that in your work. Even sometimes I leverage it to get new talents. Community members come from various backgrounds and it enriches your network in ways you might not consider before.


The last learning point regarding network is how you to leverage your network. I reach out to people in my network for background checks, for recommendations, even getting jobs. I got into Coral because the founder is my friend, that's network effect. Prism got its pilot customer also from the network of people we have built. So it's amazing what you can get out of your network. Don't forget to maintain your network. Say hello from time to time and be a genuine friend. Remember, be sincere too.

Lesson #5:
Always be honest to yourself

Honesty is the best policy. There's a deep truth there. More so for yourself. Remember to always be honest to yourself. That's how you stay sane and how you survive. The tech world is full of pressure, you need to read signals from within you to maintain yourself. Here are some questions I often ask myself.


Are you okay? I ask this every morning for several aspects. My health, my wellbeing and my drive for doing things. If I'm not well physically, I need to take care of my health. If I'm not well mentally, I'll need to do things to maintain my sanity. If I'm not well in terms of my drive, I need to find a motivation to start the day. You should ask this first before you start doing things. This is even more important in the middle of this pandemic. Make sure to take time off whenever you need it.


Do you know what you are doing? In the middle of uncertainty, often times you still need to do things. Make sure you ask this. If your answer is no, you need to learn more before proceeding. This ensures you're still focused on what you should be doing and that you have the required means to go through it.


However, what I think is the most important thing is to ask yourself what you want. Doing things you're passionate about will help you get your drive and in the long run will increase your happiness. But, your passion for specific things might change from time to time. This question will be your bearing check. Are you still on course? Do you need to adjust things? Or maybe, is it time to change the course. Stay true and listen to yourself.

Closing Remarks

I hope these lessons can bring new perspectives into your point of view. I tried to make it as simple as possible. My intention was to make it a starting point for you to start asking yourselves.


Also, all good things will come to an end. I have a lot of time to reflect and be honest with myself. The result is that it's time for me to change the course. I'll be ending my 5 year journey and embark on a new journey at a new company, at a new country for the future at the end of 2020. It will be an exciting journey and I am really looking forward to it.


I thank everyone I work with during my time at Coral, Prism, Midtrans and Gojek. I've learned a lot from all of you and I hope that you have learned as much from me. This was the longest period working for the same org (in a way) in my career and I am thankful for the experience. May you all have a great ending to 2020 and may 2021 become a better year for all of us.


Here's a trip down memory lane...













Thank you Coral, Prism, Midtrans and Gojek.


Onwards and upwards!

Comments

Popular posts from this blog

Customizing Sanic's Logging output on Gunicorn

Lessons From Leading and Developing Product Engineering Teams - Part 1