← Back to blog

Journey into Programming

Began as a curiosity, ended up as a part of my identity


On 10 August 2018, I officially resigned from working in a metal factory. I had no concrete plan of what came next. But my parents told me to apply for a state-owned company. So I did.

While waiting for that process, I looked for a new purpose. The Ministry of Communication and Information Technology (Kominfo, now Komdigi) announced a program called the “Digital Talent Scholarship,” or “Digitalent,” running from October to December 2018. I applied for the Cybersecurity track. Around the same time, I browsed for tech events around Jakarta and found Compfest X. It was hosted by Universitas Indonesia (UI) students on 22-23 September 2018. “Looks fun,” I thought. So I registered and attended.

Sponsored by Gojek, Traveloka, and Tokopedia, Compfest X truly opened my mind to the software engineering landscape in Indonesia at that time. Startups were flourishing, and it was cool to see tech stack logos on display, like JavaScript, Docker, and Ruby, even though I had no idea what any of them actually did. But somehow, it clicked.

Compfest X

A day after I took the first test at the state-owned company, I confessed to my parents that I didn’t want to continue the recruitment process. It took some time and huge courage to say it. Heated arguments were inevitable. The tension escalated quickly because they insisted I stay on course with my mechanical engineering background.

“What do you want? What’s your next plan?” they asked. I didn’t know, and I couldn’t answer. I felt lost. All I knew was that I had reached a point where I was completely worn out by following orders.

Sometime after those arguments, my parents told me to look into universities. I had a call with a university admissions office, but they didn’t recommend Informatics because I had no background in it. The closest field I could choose was Information Systems. This is where my view differed from my parents’ perspective. While they prioritized having a degree above all else in a career, I felt that in my current situation, enrolling in a master’s program was not ideal for switching fields. I had two reasons: (1) it would mean at least two years of unemployment, and (2) it would be even harder to find a job afterward due to a lack of hands-on experience. The only exception, maybe, would be if I applied to become a lecturer.

Fast-forward to October, when the digital talent program began. It introduced me to the development environment. It was the first time I had installed a Linux-based OS (Ubuntu), making it a dual-boot system with Windows. During this time, I also learned how Git and GitHub work and published my first-ever website.

Ubuntu & my first website, yay!

Then in November, I stumbled upon something called a “bootcamp” and learned more what was it about. This was the middle ground I was looking for: hands-on learning to be industry-ready, and a hiring-partner program that gave me a chance to jump into the industry once I graduated. I took that path and joined Hacktiv8 in December 2018, right after finishing the Digital Talent Scholarship. Though, sometimes I miss riding the morning commuter line to UI (the train was spacious because I was traveling in the opposite direction), riding the yellow bus aka Bikun, and enjoying good foods at Kantin Teknik after class.

Digitalent moments

The bootcamp consisted of four phases: Phase 0 to 3. The zero is intentional, because in programming, indexing starts from 0 instead of 1.

Phase 0 was a 6-week preparation to think like a machine by giving clear instructions to achieve a desired output. I learned to write pseudocode, use Git and GitHub, and build logic with JavaScript, Node.js, conditionals, looping, and data types. Starting from the third week, there were weekly live code exams. The pressure was real that you could forget everything you had prepared. At the final week, we were assigned to create a web page.

Wanna know what I made? A riddle called “Rescue the Accountant”. I had recently watched The Accountant and the Jason Bourne movies, so I mixed them up. It was so ambitious, built with a very convincing movie-like narrative.

Rescue the Accountant

Phase 1 was where the real thing was: building a backend server, heavy with reading documentation. Object Oriented Programming, SQL Database, Object-Relational Mapping, you name it. And, of course, there were still weekly live codes. Mind you, sitting next to a friend with a mechanical keyboard during live codes is highly intimidating, especially if they finish first. It was so difficult that I had to start the phase over.

Hacktiv8 had a two-attempt policy: fail three times and you would be dropped out. During my second attempt, I honestly envied my friends who had advanced to Phase 2. But over time I realized the skill issue was on my side, and I was glad I understood backend better this time before moving on.

Jumpstart Coffee, my companion

Phase 2 focused on the Vue frontend framework and flexible databases like MongoDB. After weeks of strict SQL tables, MongoDB felt very strange. You could just… store things???

It was not as technical as the previous phase, but it was the busiest of all. Every day you learned about A in the morning, and before you even grasped it, you had to learn about B in the afternoon. Then every Thursday, every student was assigned to a random group, and each group had to build an app that integrated third-party services, like weather forecasts and news headlines. It had to be demo-ready by Friday afternoon, which was you had to build it under 24 hours. New week, new teammates, new APIs to figure out before the deadline. I once spent midnight in a fast-food restaurant working on one with my teammates.

The frontend went through two stages. First came jQuery, with a fancy todo web app as my portfolio project. Then when Vue arrived, jQuery instantly felt like the past. From that point, everything I built was Vue-based: a mini WordPress clone, an e-commerce site, a kanban board backed by Firebase, a mini StackOverflow (is that thing still alive?) clone, and a group project that was a playable game in the browser. Somewhere in between, I picked up Vuex, localStorage, automatic background server tasks with Redis and Cron, and backend testing using Mocha and Chai.

My e-commerce portfolio in action

Deployment had its own progression too. First I set up a server on Google Compute Engine with files on Google Cloud Storage. Later it was Amazon EC2 and an S3 bucket. Uploading a project and seeing it live on the actual internet never stopped feeling like a small miracle. And through all of it, the live codes kept coming, including a full-stack REST API live exam and a live debugging session.

Phase 3 was mobile development, and one more frontend framework switch: React. Just when we had started to get used to Vue, we moved on to React and React Native for mobile apps, plus frontend testing with Jest and Istanbul for code coverage, and even a bit of D3 for data visualization. The portfolio projects kept coming too. I built a cinema web app that pulled movie data from The Movie Database (TMDB) and a password manager (basically a mini Bitwarden clone). It sounds like too much on one plate, but this phase was actually the most relaxed. Except for one thing. The final boss project was to build an app using React and one technology that had never been taught in class. After being handed a new tool almost every week, the last assignment was to go learn one on our own.

With a team of four, I led my teammates to build Eve, a mobile personal assistant chatbot. The never-taught technology we were using was Dialogflow, Google’s natural language service, which figured out what you actually meant. Ask her about food, and it pulled nearby restaurants from the Zomato API based on your location. Ask about movies, and she listed what was playing in cinemas through TMDB. Send her a photo, and Google Cloud Vision told her what was in it. She even had a face that changed expressions while she talked (which I recorded with my own face using Animoji lol) and a relationship meter.

Eve's facial expressions

Under the hood, it was everything the bootcamp had taught: an Express server with MongoDB, authentication, image uploads to Google Cloud Storage, Redux state management on the client, and backend tests using Mocha and Chai.

Eve whiteboard plan

24 May 2019. It was graduation day. My anxiety rocketed because I was afraid things would not go according to plan. My three teammates and I stood in our designated spots on the stage, each explaining our assigned sections. The audience? Representatives from various hiring partners! Luckily, everything went well. After all the groups showcased their projects, we mingled with the crowd. Among them were two people from Qlue, a smart city startup. I loved their vision, and it aligned with my values.

Hacktiv8 Batch 29 Graduation Day

Long story short, after going through several technical tests and interviews, I approached their HR representative to check on the status of my offer letter. Two other companies had already sent me offers, but I had put them on hold because I was waiting for this specific opportunity. On 24 June, I finally landed my first job as a programmer at the startup.

None of this would have happened without the support of those closest to me, the friends I met along the way, and the instructors who happily assisted their students at every phase. When I look back, I want to pat my 2018 self on the shoulder and say,

“Thank you for holding onto your worth when the very people who gave you life refused to see it.”

The notebok that started it all