My Life as A DK Software Engineer Intern

Lalu Naufal Azmi
DKatalis
Published in
7 min readAug 15, 2022

Hello everyone 😁

I’m back again to the sharing session where I’ve previously shared about Journey of becoming a Google Certified — Associate Android Developer (AAD). It will be as exciting as the previous story, as it brings you to the wonderful world of tech startups.

So, since July this year, I’ve been interning as a software engineer for DKatalis, the engineering hub that builds the Jago app, People Xperience (PX) app, and AMAAN app. I got this opportunity from the Generasi Gigih program, which aims to help young Indonesian talents to gain hands-on experience in the tech industry. I was pretty pessimistic at first since there was a rumour that students in their 7th semester and above would be prioritized 😢.

Still, I tried to do my best without expecting to get an internship. Long story short, the announcement came out and my name was on the list! Here starts my journey as an intern at DKatalis.

Who is DKatalis?

I have briefly mentioned DKatalis above, now let me elaborate. DKatalis, or DK, describes itself as a company that “promotes growth by stimulating and, ultimately, catalyzing it.” The engineers here are collaborating from around the globe, but most of them come from three hubs: Jakarta, Singapore, and Pune.

I was assigned to work on the PX app project, which is developing an app that streamlines the employee-related processes in the company. Its features vary from reimbursement, workspace booking, to a mood meter for tracking employees’ moods. There are two teams working on this project: Lakshmi and Neith. I joined the Lakshmi team first, with Mas Dedy as my Buddy and Mas Oki as my Mentor.

New Experiences

Our first week here was spent learning about DK culture, habits, and the technology stack we would use. In developing apps, DK utilizes Hasura, Firebase Cloud Function, and Typescript; all of which I was unfamiliar with. Furthermore, we got to experience working with agile software development methods!

The team members began by doing Daily Standup to report on what they planned to do that day, followed by Daily Checkout in the afternoon to share what they had accomplished. There are also Sprint Planning sessions to discuss the details of the story we plan to do in this sprint, as well as Sprint Review to check on any resolved stories.

Once a week, the team holds a Sharing Session in which members discuss any topics that interest them, sometimes non-tech topics such as retirement investing. The team also encouraged us interns to share stuff that piqued our interest.

After two weeks of blending in, it was time for us to get our first assignment 👏🏼

My Tasks

Our first task was related to Hasura Event Trigger and Cron Trigger, with the goal of making it easier for anyone to trigger Cloud Function from Hasura. The Lakshmi and Neith interns worked together to complete this project.

We needed to clone the base project and set up the dev environment first, in which guidance from our Mentors and Buddies was needed. Luckily, they were all very kind to us and patiently explained everything until we understood 😁. After that, we divided the task between ourselves, and I was assigned to Create, Update and Delete Hasura Cron Trigger.

Before doing the assignment, I had to learn about the project structure first. FYI, doing big projects that involve a lot of code like this really excites me, as I can get new points of view about code development. While studying the project, I found one service related to my task that I think could solve the problem. However, it didn’t work as expected, so I created my own service to remove all unneeded attributes.

Short story, I was finally done with my work. The next step was to explain what we have done to our mentor and create documentation in Confluence about this story to help the next developer. The mentor provided a sample for us to follow.

I got my second assignment in the next sprint. They wanted me to make a webhook for trigger updates in user interface mobile apps using Hasura’s event trigger. I didn’t think it would be difficult at first, but I encountered some problems with the cloud function.

You see, if we want to test webhook triggers in Hasura, we need to deploy the cloud function first. I was terrified when I know learnt about this, even though it was still in the dev environment, haha 😂😂😂 . I consulted my mentor about this problem and requested the privilege to deploy cloud functions in the dev environment, which he granted right away. I managed to finish the task and document it.

My mentor wanted me to learn about frontend for the third task, so he suggested I work with the Lakshmi team, which primarily handled frontend stories. DK uses Flutter for frontend development, which I, fortunately, already knew a little about. Similar to the previous tasks, I needed to first clone the project from Gitlab and set up the project environment. Oh yeah, I also got a new Buddy and Mentor in this team, Mba Dinda and Mas Meon, who helped me set up everything we need to run the project.

Even with their help, I still encountered some errors before the project could run smoothly hahaha 🥲. Luckily, Mas Dedy guided me until I can run the project independently from my computer. Now, to the real assignment.

In this story, I had to help Mas Dedy create a user interface for the PX web portal. He tasked me to create a dynamic form using Flutter. “Oh my god 😂 dynamic form is the reason why I hate frontend and migrate from Android to Backend, haha,” I thought to myself. But no worries, I have to believe in myself first 😎 .

I started by working on the interface, which went smoothly until found a problem with the management state in the stateful widget. Mas Dedy swooped in to help me solve this problem. He explained the logic of dynamic form in Flutter to me until it worked. Overall I’m very happy because my mentor gave me a chance to learn Flutter deeper.

After the fight with dynamic form, I got my fourth assignment in the next sprint. The story was to change existing email to not existing email in the dev and staging environment, aiming to limit the number of people who can get an e-mail related to this stage. Mas Oki guided me in creating a whitelist in the e-mail pattern. Aside from his guidance, I also researched how to update queries and whitelist several people.

It didn’t take long to create the query and handed it to Mas Oki. After he approved it, Mas Oki asked me to implement it in Hasura Dev first. I asked for help from my buddy in Lakshmi, Mas Alev, who offered to pair with me to test my case. (FYI, in this sprint my assigned buddy Mas Dedy was on wedding leave, I was very sad because I didn’t know who to ask for help 😂 but Happy Wedding, Mas Dedy! Be happy forever).

I thought everything went without a hitch but tadaaaaaaa, we found a blocker during testing 😂. Changing the email triggered a side effect in Authentication, where people outside the whitelist need to use an email with a new pattern for login. Overall, we had two solutions to solve this problem:

  • Grant app testing access to a few people on the whitelist and deactivate the others.
  • Create a whitelist database and check it first before sending an email notification.

Finally, after discussing with Mas Oki, we went with the first idea. This incident taught me a new lesson: be more aware of each story and never assume you’re finished; always test first.

In my last sprint, I was assigned to set up data in the database for health assessment settings. But, I wanted to learn new things, so I asked Mas Oki about the QA Position in a team. He happily granted my request and introduced me to Mas Willy, the PX QA Engineer. Mas Willy was very open and shared a lot about the role, including how to study a story, read the acceptance criteria, and test it yourself according to the existing flow.

Funny Moment

My internship experience didn’t revolve around work alone. We were also encouraged to bond and build connections, so there were some leisure activities with the teams.

I forgot when this happened, but we interns were playing a game with everyone from the Lakshmi and Neith teams at that time. We were divided into groups of two or three, with one person in charge of guessing a word and the others providing clues. I was my team’s guesser and the word is a superhero name 😂. Unfortunately, I have never seen any superhero movies from either Marvel or DC; and despite my team’s desperate attempts to give clues, I could only say “Super Dede”, an Indonesian superhero 😂.

Of course, we lost the game, but thanks to my amusing guesses, our team was named the “most excited team”. My intern friend later told me to “Try watching superhero movies instead of just coding!” 😂

Conclusion

I can’t believe that three months have passed and my internship is coming to an end.

This activity taught me a lot of things. At first, I thought I wasn’t ready to enter the industry because my knowledge and mentality were insufficient. But, seeing how the DKatalis teams support one another, the fear fades and I gained confidence 😁.

Thanks to the guidance of my mentor, buddy, and teammate in the Lakshmi and Neith team, I also get to improve my skill in the technology used, such as Hasura, Firebase Cloud Function, and Flutter. They always make me feel amazing because they have solutions to every problem.

We, the interns, are also not discriminated against by the full-timers as they always include us in every activity. If we get stuck and ask for assistance, they always satsetsatset (Indonesian slang for quick action) offer to pair with us via Google Meet or offline, and provide us plenty of room to learn new things.

Thank you to all DKatalis friends for your patience, guidance, and support!

Do you thrive in an environment that encourages collective learning, peer sharing, and purposeful growth? If yes, then you’d be a great fit for our growing team. Join us!

--

--

Lalu Naufal Azmi
DKatalis

Hello, My name is Lalu Naufal Azmi. I'm a Software Engineer. You can follow me in Linkedin : linkedin.com/in/naufalazmi48