My Three Years as a Mobile Engineer in Indonesian Unicorn Startups
Experience-based story for you who starting your engineering career
Hi guys! I’m so happy to publish this story, as my first personal writing on Medium. After I published a story (belongs to Traveloka’s publication), I felt that I get an expectation to publish more software-engineering related stories. So I decided to start with this topic, an easy-to-read one. Hopefully, you could get something useful here :)
Why Mobile Engineer?
In 2016, I graduated with an Informatics (Computer Science) degree. I also had experience as a part-time software engineer and some mobile app side projects. Most of my college friends who had started their careers earlier chose software engineer as their first try. So did I, precisely I only followed the waves. The main reason was I enjoy coding and the offer is interesting for me at that time.
Back then, I had tried Android app (native), backend (mostly Java-based framework), and Angular based app development. From all those pieces, what made me enjoy the most is developing mobile apps, so I chose it.
Choose a role that give the most enjoy feeling
Why do I Choose to Join Unicorn Startup?
Currently, I already spent 3 years++ on two Indonesian startups. Until now, I only applied to three companies, two of them are Indonesian and another one is Singapore based. Why?
My biggest reason, I want to try developing mobile apps with high standards that used by millions of people. Before starting my career, I could only build mobile apps from scratch and it was installed less than 1k users. I want to improve a lot, how to build great apps and how to work with great coworkers that have deeper knowledge than me. I’m sure that a big tech startup is suitable to fulfill my curiosity. However, it doesn’t rule out the possibility that newborn startups can also fit those expectations, since we can always describe what job we expect when doing interview process.
Apply and join company that fit our expectation to grow up
Prepare for a Job Application, Always
As I told about my three job applications, fortunately, I passed two of them (the Indonesian startups) but failed one for the Singapore based startup. For me, applying a job is something that I should be serious with full intention. I’m not interested to send applications to many companies and waiting who answers. I prefer to apply for a specific role at a specific company that I really want to join.
Prepare our skills and define an expectation. I know it was corny, but the first reason I failed in a job application is I didn’t prepare for it. For example, taking a programming test needs exercise although we code almost every day. In my case, I applied for a job in Singapore that I knew has a higher programming standard, but I overlooked that and didn’t make preparation, then I failed. Maybe some of you don’t need special preparation, for example, if you are a competitive-programming person, but not for me.
For an interview, we can try to refresh our knowledge. I prefer reading documentations and watching tech-conferences. Make sure we can also define our expectations to the job we are applying to. Describe it to the interviewer. I did it when applying to my current job and I think I get what I expect quite enough.
Better to refresh our tech-skills before take an engineering job application. We also need to define an expectation about the job we’re applying for.
Daily as a Mobile Engineer
If you like user interfaces and prefer a more-flexible time to code, I think you are suitable to choose mobile apps. My days as a mobile engineer mostly filled up with either feature development or doing technical-excellence things. I’ll talk about technical-excellence later. However, when you join a company as a mobile-app engineer, I’m sure one of your main jobs will be user-flow feature development.
Another good point as a mobile engineer is having more flexible time. Since usually feature release will be around once in a month. We will have a large development time (of course with an appropriate scale of tasks), so we can manage our time more flexibly depends on our preference.
For me, if you love coding, user flows, and a more flexible time, apps engineer is a good choice
UI Things are Harder
I’m not sure that everyone agrees with this :), but I often spend more time making the UI seems perfect than doing on another layer. Sometimes I feel this is a plus point for front-end engineer, that means we give attention to UI into very details. But we have to know the worthy limit to make it perfect. Given a time slot to finish a feature, basically, I won’t stop finishing my UI if it doesn’t look perfect for me. But if I face difficulties, I’ll move on to another layer, so that I can achieve the mvp first. After it’s done, I can freely use my time to fix the imperfect UI.
Make the UI as perfect as we can define, but let’s try to sort our task priority
Meet Technical Excellence
I’m a product engineer on my first and second job, that means building and maintaining product feature are my core responsibility. But, there were times when handling features made me feel bored. I want to try other kinds of tasks to give colors to my days. In the interview when applying for my current job, I told that I want to learn something new besides developing and maintain product features, which might be platform related tasks, performance, etc. For me, a plus point when we are working on a million user apps, we should maintain a high standard in quality. Quality means several things, included but not limited to performance, testing coverages, code quality, suitable architecture, and build time. In the company I’m working on, it’s
technical excellence .
Should We Try other Platforms?
I got an opportunity in my first job to try React Native and in my current job to try iOS development on some simple features. They’re additional skills that I requested to learn about. For me, I love developing mobile apps, not only Android actually but I focus on Android. Learning something new beyond our responsibility can also help us to avoid boredom. I’m not sure this kind of experience is a must, but it makes me feel happy, challenging, and more valuable.
It’s nice to try new skills beyond our base responsibility
Read and Review Codes
I’ve read somewhere (forgot the link, sorry) that we should spend our time not only to write codes but also to read more codes. I agree with that. Especially when we are a new joiner in a company, we will find it’s hard to align the context and speed up our working performance. Reading other’s code will help. I often use code review as a time to read other’s codes. By doing that, we can get a new point of view, a broader context, and new insight. Not only reading codes when reviewing, I sometimes visit random pull requests with a high number of comments to read the discussions and feedbacks that might be useful for me.
Not only spends our time to write codes, let’s read more codes
Give Back to Community
I feel that I’m not good at this point. I’m not a community person, rarely join public talks. But I really aware the importance of giving back to the community. Why? Because almost every day we read something that produces by the community (at least Stack Overflow :D). I did my first worthy engineering-related contribution to the community in my third year of career. It’s a bit late but it’s still ok though.
How should We Grow as a Mobile Engineer?
How can I grow? It’s not easy to answer since I’m still thinking a lot about this. However, from my personal thought, as a mobile engineer, we can grow from some possible ways:
1. Focus on the platform, increase technical skills by mastering a topic and doing a challenging platform spesific projects. However, from my experiences, it’s a bit hard to find many projects like that, which means most of the projects are still feature development. Comparing to more stable startups abroad that published kinds of open source libraries (e.g. Dagger by Google, Retrofit by Square), I hope working on Indonesian startups will have more interesting projects like that in the future.
2. Find something new to make an additional responsibility to our current job scope, it could be multidiscipline, multi-platforms, learning to manage, or other things that I’m still thinking too.
3. Try a higher standard job. Like, who doesn’t want to work abroad at Google? Mentioning this doesn’t mean I want to move ya. It’s a general option in career-life that we could improve ourselves by moving to a higher standard environment. But don’t think about it as a short decision. As long as we love our current employer, let’s try to grow there.
What Makes Us Love Our Job?
I do want to share this. I feel very grateful because I love my job. I choose it on my own preferences and alhamdulillah I can get it and feel enjoy doing it. Having a job that matches our preferences will encourage us to always give dedications. I feel very fine to give more effort than it should be if needed and I believe that I will get benefits from it in some ways.
My second point to mention is that I love my job as I can meet with great and talented coworkers every workday. I’m not good at giving compliments, but trust me, I admire a lot of my coworkers' dedication and performance. They can deliver high-quality works and make it perfect by showing professionalism in the process. I learn a lot from them and feeling grateful to know them.
The third reason I love my job is that I feel safe. Safe means a lot, included but not limited in financial. Why I use safe term? because it can represent the current and future. I feel safe that currently, I think I can get competitive compensations and personally, it’s more than enough for me. I also believe this could last for a long time in the future. That safe feeling obviously can boost our performance at work.
I will conclude this with a big thank you to all my coworkers from my current and previous job to fulfill my career life. Oh ya, this is my personal story and thoughts, please let me know if any point is wrong or better to not be mentioned. Last but not least, thank you for reading this and I hope this story can be useful.