About me

A not so organized story about me

Nama saya As'ad Saleh Umar Ghanim

Saya adalah seorang profesional di bidang kayasa perangkat lunak (RPL), dengan spesialisasi di bidang pengembangan aplikasi web dan mobile.

Utamanya, teknologi yang saya kuasai adalah di bidang front-end development; tetapi saya juga tertarik pada teknologi backend, seperti NodeJS, Golang, Rust. Saat ini, teknologi yang biasa saya gunakan hari-hari adalah ReactJS (Vite) atau NextJS, TailwindCSS, dan TanStack's (terutama Query dan Router).

Teknologi yang dikuasai

Git

HTML

CSS

JavaScript

TypeScript

ReactJS

NextJS

Remix

SASS

TailwindCSS

NodeJS

Express

Postgres

MongoDB

Redis

Vite

TanStack

React Native

Dart

Flutter

Android

Go

Alat lainnya

PM2

Linux VPS

Vercel

Supabase

Docker

Prisma ORM

Firebase

Microsoft App Center

Google Play Console

arrow down

Chapter0: Titik Balik Perjuangan 🇮🇩

Sabtu, 2 September 2017.

Yup, itu dia waktunya. Sehari setelah lebaran idul adha. Tanggal yang mengubah segalanya. Dari seorang tanpa penghasilan, menjadi seorang yang bisa menghasilkan uang sendiri. Dari seorang yang tidak punya pekerjaan, menjadi seorang yang bisa bekerja. Dari seorang yang tidak punya masa depan, menjadi seorang yang punya masa depan. Dari seorang yang tidak punya tujuan, menjadi seorang yang punya tujuan. Dari seorang yang tidak punya mimpi, menjadi seorang yang punya mimpi.
Puitis sekali ya. Tapi ini bener loh.

Gue lulusan Fisika, bukan anak ilmu komputer. Pernah ngoding dikit pake bahasa Fortran untuk skripsi. Habis itu gue nganggur setahun lebih setelah gue lulus kuliah. Nah, dari situ gue belajar ngoding. 5 hari seminggu, 8 jam sehari. Selama 6 bulan. Yang gue pelajari mulai dari HTML, CSS, JavaScript, dan terakhir React. Setelah gue bisa React, gue bikin 3 website sederhana. 1 buat nampilin informasi cuaca, 1 untuk nampilin infographics, 1 lagi lupa buat apa. Ini kayaknya gue kerjain dalam waktu 1 bulan. Ini disebut portofolio ternyata.

Dulu gue belum tau, tapi dengan portofolio, mentor gue cukup yakin gue bisa mulai kerja. Nah, setelah itu gue mulai internship di kantor mentor gue selama 2 bulan. Setelah internship dan cocok, gue mulai kerja sebagai Junior Frontend Developer. Alhamdulillah. Ternyata selama ini gue dikader untuk menjadi programmer. Gue seneng banget bisa kerja sebagai programmer.

Jujur kalau dilihat kebelakang, waktu jeda kuliah sampai kerja gue cukup lama. 1 tahun lebih dan belum jelas arah mau ngapain. Itu rasanya bangun tidur males banget gak tau mau ngapain. Tapi pas udah ada kegiatan belajar ngoding rutin tersebut, gue kayak punya semangat baru. Walaupun belum tau bakal kerja sebagai software engineer, tapi dulu seneng aja waktu mempelajari JavaScript, React, cara kerja internet, client-server, API, dan sebagainya.

arrow down

Chapter1: A late bachelor degree, RubyH

Jakarta, Indonesia. Full time. RubyH is an Indonesian software house that helps startups/companies outsource their tech needs. We work with clients including PwC, Midtrans, Akseleran, Transfez, etc. Tech stack includes: React, Redux, ReduxForm, React Native, TypeScript, Apollo GraphQL.

Sebagai seorang software engineer yang belajar sendiri, perjalanan karir saya dimulai di RubyH. Ini adalah tempat dimana saya belajar banyak tentang software development itu sendiri. RubyH sendiri adalah software house, jadi mayoritas kode yang saya tulis adalah untuk klien pihak ketiga, tapi ada juga satu produk internal. Karena ini pertama kalinya saya kerja, saya memposisikan diri sebagai "orang paling bodoh" di ruangan, jadi saya banyak bertanya tentang banyak hal! Dan itu membantu saya untuk tumbuh dengan cepat sebagai seorang software engineer.

Tahun pertama di RubyH, kerjaan saya kebanyakan pegang ReactJS (web). Lalu React Native di tahun kedua. Peran saya di awal hanya sebagai developer, tapi waktu saya keluar, saya sudah menjadi mentor untuk 2 junior react devs dan membantu membuat keputusan teknologi front-end yang akan digunakan di proyek. Salah satu produk yang kami kerjakan adalah ERP untuk SMEs. Dibungkus menjadi solusi web dan mobile app yang dijual sebagai SaaS yang menyediakan ERP dengan harga terjangkau untuk UMKM Indonesia. Di sini saya pegang aplikasinya menggunakan React Native, yang berinteraksi dengan backend GraphQL menggunakan Apollo Client.

arrow down

Chapter2: A place called home, IDN

Jakarta, Indonesia. Full time. Infradigital is a B2B Edtech Startup providing financial, compliance & supply chain services to over 20,000 low-income schools. I was a part of the engineering team, tasked with developing & maintaining the apps & services. Tech stack including: Flutter, React, NextJS, Go, NodeJS, Android (Java), and Redis.

Key achievements:

  1. I maintain an existing Android and NodeJS app for student payment. We successfully decreased the number of crashes significantly.
  2. Lead the mobile team to build a new cross-platform (Flutter) mobile app from scratch with main features: online payment, student's records & file uploads, student financing, and newsfeed. I act as a mobile lead – leading a team of 3. We develop the app to 100K downloads in Google Play Store.
  3. Assist my company in obtaining PTD (Penyelenggara Transfer Dana) certification from Bank Indonesia
  4. Build internal web-based tools to help the sales team generate MoU documents on the fly.
  5. Promoted to engineering manager and technical leader for the Frontend and Mobile development teams. Leading a total of 5 software engineers across 2 teams.

Even though I'm enjoying my time at RubyH, I'm hungry. I'm not learning enough. I know my potential is limitless. Then I decided that I need to move to a new company: IDN. I came to IDN as a mobile developer. But right now I'm happy to call myself just a software engineer. This is because, during my time here, I had to switch between product teams and technologies several times. I'll try to highlight the most important ones here, as the full summary of my journey is available on my CV.

At IDN, I was given a chance to lead a Flutter mobile app development called "Pelajar". I was always curious to try Flutter, but this is the first time that I really had the chance to use it. As the lead developer, I need to make quick decisions because the deadline is short. My prior knowledge from RubyH really helped me here as I already understand the hard concept, e.g., state managers, route management, and so on. Alhamdulillah, I managed to release the app to Google Play Store, and not only that, being a good communicator between Engineering, Product, and Customer Support team. The team consists of 3 mobile devs, 2 backend devs, a QA, and a product lead.

My most challenging problems is when I implement offline-support for Pelajar's Flutter app. I write a local store which allows form data to be saved even though there is no internet connection, then it will automatically sync to our DB when the connection is back online. The experience is really thrilling because our boss wanted this feature in MVP, but we're clueless at that time, because Flutter is new to all of us. With extensive discussion with peers, we managed to pull it off in like 3 weeks time. The first 2 weeks is like banging my head around the wall. Everything seems too hard to work. However, after several iteration, it clicked and we can write the simple yet effective implementation. We tested it, it worked, and deployed it to production.

The second role I wanted to highlight is when I was asked to help the Pordi team. It's a difficult decision to leave a product that I raised like my own child, but I also understand the impact of this product on IDN, thus I decided to move. Here, I meet ReactJS again, one of my loved frameworks, and help the team to meet the release date of the revamped Pordi web apps. I learned NextJS and React Query here while also working on a lot of features and bugs. I also started to use git rebase daily. At the end of the day, the web app is released.

arrow down

Chapter2.2: Introduction to teaching

Lecturer & mentor at DigiTalent Scholarship's Frontend Class

Jakarta, Indonesia. Part time. We teach JavaScript & React in a 3-months online course to 20+ students in Digitalent Scholarship (DTS) 2021, a program held by Indonesia's Ministry of Communication & Informatics. Course material consists of delivering theory through online class & mentoring student's final project.

arrow down

Chapter2.7: More teaching

Lecturer & mentor at Binar Academy's

Jakarta, Indonesia. Part time. We facilitate a class (10-person, 6-months program) to be excellent at full-stack web development by delivering course material accompanied by live coding examples & mentoring student's final project.

arrow down

Chapter3: A far-far away journey, Mainstream

US, Remote. MainstreamLabs is a startup with a vision to provide a governance platform for web3 organizations. Tech stack includes: NextJS 14 (RSC), Stripe API, NodeJS, Supabase. As a Full-Stack Developer, I helped the team to polish the previous app, which is a twitter-like web3 app for users to manage & follow their interest in available DAOs. I also helped the team develop a new app -a notification service SaaS- from scratch to production in record time.

At 6 am in the morning, I got a phone call from a recruiter. He ask why I haven't got into the zoom meeting with the potential employer. Ouch! Right, I was scheduled for an early meeting to discuss the potential of me joining the team. I quickly got ready and joined the meeting. The meeting went well, and I was asked to join the team. I was excited, but I also need to think about it. I'm happy at IDN, but I'm also curious about the new opportunity.

Couple of weeks later, I got laid off from IDN. I was sad, but thankfully I have a next place to go. I joined Mainstream as a Fullstack Engineer. Here, I'm working on a NextJS project for web3 applications. I'm learning new things here and I have a fair amount of control of the project.

In this role, I lerned new technologies, such as Web3 itself, Supabase and Stripe. I feel just like my time in early careers, when everything is new and the world is a vast unknown place. I also learned a lot about the blockchain, the terms used in crypto world, and basic things in blockchain that I think I know, but turns out I don't know. Overall, I'm happy with my time here.

However, 8 months later, Mainstream and I can't go toghether anymore (the L word). It was hard, however I respect their decision. In the end, it has been a good experience and I met good friends there.

arrow down

Chapter4: Alone in the dark

It's been a month since I left Mainstream. To be without a job is hard. How do we keep our head sharp?

Maybe I need to grind LeetCode?

Or maybe, should I re-create LeetCode?

Thus....

2 months later I created an online learning course from scratch called Tangga Belajar which focuses on self-paced code learning, similar to LeetCode. The site is up and running. It focuses on helping fellow Indonesians so all content is in Bahasa Indonesia. It has a generous free course with 100 topics and questions, and a paid course coming soon.

It's created with NextJs, NodeJs (Fastify), Docker, Neon Postgres. Hosted in Vercel and Contabo. The platform is 100% completed, but I am still working on inserting reading materials and questions.

Go check it out! And make sure to tell people about it 😊

The story continues...