About me
A not so organized story about me
Nama saya As'ad Saleh Umar Ghanim
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
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.
Chapter1: A late bachelor degree, RubyH
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.
Chapter2: A place called home, IDN
Key achievements:
- I maintain an existing Android and NodeJS app for student payment. We successfully decreased the number of crashes significantly.
- 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.
- Assist my company in obtaining PTD (Penyelenggara Transfer Dana) certification from Bank Indonesia
- Build internal web-based tools to help the sales team generate MoU documents on the fly.
- 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.
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.
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.
Chapter3: A far-far away journey, Mainstream
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.
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 😊