Perjalanan dari Frontend ke Backend dan Cloud Engineer: Sebuah Cerita Karir

Perjalanan dari Frontend ke Backend dan Cloud Engineer: Sebuah Cerita Karir

Zakiego

Zakiego

@zakiego

Baca dalam Bahasa Inggris 🇬🇧

Catatan

Tulisan ini adalah refleksi pribadi tentang perjalanan karir, berisi pengalaman dan pembelajaran, tanpa pembahasan teknis mendalam.

Titik Awal

Telah menjadi sebuah kelaziman, bagi kebanyakan programmer pemula, memulai perjalanannya menjadi seorang Frontend Engineer.

Hal ini karena membangun tampilan muka dari sebuah web adalah pekerjaan paling terlihat dan manfaatnya cepat dirasakan. Sebagai pemula, tentu kita ingin sesegara mungkin memetik apa yang kita tanam.

Dari pengalaman pribadi, perjalanan saya dimulai dengan belajar HTML dan CSS, kemudian berlanjut ke JavaScript, melompat ke Next.js, baru kemudian mundur, untuk kembali mempelajari React (kisah lebih detail bisa dibaca di tulisan ini: Kilas Balik 2021)

Mulai Memasak Di Belakang

Sejujurnya, saya bukanlah Frontend Engineer tulen. Sejak awal, saya lebih condong ke Full-Stack Engineer. Ini karena saat membuat frontend terbiasa menggunakan Next.js, pada akhirnya saya menjadi familiar dengan konsep API yang merupakan salah satu fitur Next.js. Namun, karena Next.js bukanlah sebuah framework khusus untuk backend, saya merasa kurang percaya diri untuk mengklaim sebagai Backend Engineer.

Waktu berjalan, kemudian di tempat menulis kode saat ini, saya sangat beruntung mendapatkan ruang yang sangat leluasa untuk belajar dan berkembang. 

Tiba satu saat di mana diberi tugas untuk bergabung ke sebuah sub-tim, guna memigrasikan sebuah service backend dari Express.js ke Nest.js.

Terkait Express.js, saya tidak buta-buta amat, pernah menggunakannya, tapi tidak terlalu dalam. Namun bagaimana dengan Nest.js? Saya tidak pernah menggunakan framework ini, sama sekali. Mau tidak mau, sebelum mengerjakan inti dari tugasnya, saya harus terlebih dahulu belajar Nest.js.

Har-hari pada minggu pertama, kepala rasanya berdenyut setiap malam. Ini adalah framework yang opinionated—seperti memiliki dunianya sendiri dan berbeda dari framework lain. Tidak mudah memahaminya.

Provider, inject, guard, DTO—apa arti dari istilah-istilah dan konsep-konsep ini?

Meskipun merasa sangat tidak nyaman, bingung, dan sulit memahami, saya tetap memaksakan diri untuk mempelajarinya. Karena sebuah keyakinan, bahwa ini semua hanya soal, mau belajar atau tidak. Selanjutnya, saya terus memaksa diri, untuk membaca dokumentasi, membaca kode, bolak-balik sampai akhirnya perlahan menjadi paham.

Seminggu berlalu, saya mulai terbiasa dengan gaya penulisan berbasis class (jujur saja, sebelumnya, tidak pernah menulis class di JavaScript—semuanya berbasis functional). Karena sudah mulai paham mengenai Nest.js, kemudian sedikit demi sedikit, pekerjaan terkait migrasi ini mulai dilakukan. Hingga akhirnya selesai, dan PR tersebut berhasil di-merge ke branch main.

Bermain Awan

Meskipun tidak pernah diminta oleh siapa pun, dahulu, pernah belajar GitHub Action sekadar hanya karena rasa penasaran. Dari situ kemudian saya selalu berusaha menerapkan CI/CD sebaik mungkin, walaupun itu hanya sekadar proyek pribadi.

Kegabutan masa lalu ini kemudian berbuah manis. Kebetulan sekali, saat awal masuk ke tim sekarang, ini merupakan tim yang benar-benar baru dibentuk. Sehingga memulainya dari nol. Belum ada aturan baku bagaimana proses penulisan kode akan berjalan.

Semua ditentukan oleh generasi awal.

Disebabkan oleh kekosongan tersebut, saya mulai berinisiatif untuk mengimplementasikan CI/CD. Dari yang awalnya hanya untuk melakukan proses build, kemudian ditugaskan untuk melakukan deploy ke cloud.

Terdapat keberuntungan lain, sebelumnya, saya juga sudah pernah belajar Docker meski tidak ada yang menyuruh. Semua hanya karena rasa penasaran. Kemampuan menggunakan Docker ini penting untuk bisa melakukan deploy aplikasi ke server.

Jujur saja, saya tidak punya pengalaman mendalam untuk mengurusi production app di cloud, seperti AWS, Google Cloud Platform, atau pun Digital Ocean. Namun, dengan modal kemampuan men-setup CI/CD dan Docker, kemudian tinggal sedikit lagi, hanya perlu belajar mengenai cloud provider yang digunakan. Lambat laun, saya kemudian menjadi familiar dengan dunia cloud.

Hampir-hampir tidak percaya, hanya dalam waktu sekitar tiga bulan, saya yang awalnya tidak pernah menyentuh layanan cloud yang berbayar, kini sudah cukup memahami produk-produk GCP seperti Compute Engine, Cloud Storage, Cloud Run, dan lainnya—meskipun masih pada level dasar.

Kesudahannya

Berkaca pada cerita yang telah lewat, kemudian menilik pada masa sekarang, kini saya lebih sering diberi tanggung jawab untuk mengelola backend dan cloud. Meski sesekali juga ditugaskan untuk membantu frontend.

Dengan kemampuan menangani pekerjaan dari ujung-ke-ujung (end-to-end), jenis tugas yang bisa saya kerjakan menjadi lebih beragam. Lead pun bisa mempercayakan tugas apa pun yang dianggap penting dan krusial.

Kalau ada waktu, mungkin saya akan bercerita, bagaimana tugas saya sekarang lebih sering melakukan perbaikan error yang tidak ada dokumentasinya.

Buah Tangan

  • Memiliki lead dan ekosistem yang supportive adalah sebuah privilege yang sangat mahal. Diberikan izin dan kepercayaan untuk menangani tugas baru—meskipun tanpa pengalaman sebelumnya—merupakan kesempatan yang sangat berharga.
  • Memperluas cakrawala keterampilan pada masa-masa awal karir sangat penting, dari mulai frontend, backend, mobile, cloud, devops, data, ui/ux, dll. Dengan luasnya skill ini, memperbesar kemungkinan untuk bisa mendapatkan pekerjaan.
  • Sangat baik menjadi generalis pada awal masa-masa belajar, kemudian memperdalam satu bidang dan menjadi spesialis saat bekerja.
  • Konsistensi belajar dan eksplorasi di luar tuntutan pekerjaan bisa membuka peluang tak terduga di masa depan.

Selesai ditulis pada 18 Oktober 2024, 00:13, Banjarmasin

Selesai disempurnakan pada 5 Januari 2025, 02:26, Pelaihari