Things I Learned on 2 Years of Full Time Software Engineer

Things I Learned on 2 Years of Full Time Software Engineer

Akhir bulan ini, gue udah kerja selama 2 tahun sebagai full-time software engineer. Gak kerasa, selama 2 tahun ini banyak banget hal yang terjadi dan banyak banget hal yang bisa dipelajari. Makanya, biar kaya artikel medium orang-orang, sesekali gue mau share hal-hal yang gue pelajari selama kerja haha. Sekalian juga ngelanjutin artikel gue yang ini sih, kasian udah lama tenggelam.

Akhir bulan ini, gue udah kerja selama 2 tahun sebagai full-time software engineer. Gak kerasa, selama 2 tahun ini banyak banget hal yang terjadi dan banyak banget hal yang bisa dipelajari. Makanya, biar kaya artikel medium orang-orang, sesekali gue mau share hal-hal yang gue pelajari selama kerja haha. Sekalian juga ngelanjutin artikel gue yang ini sih, kasian udah lama tenggelam.

Stop gimmick, let’s start.

====

Technical Skill

Fundamental sepenting Itu

Salah satu hal yang gue pelajari pertama waktu kerja adalah pelajaran kuliah sepenting itu. Ilmu-ilmu fundamental kaya gimana cara kerja database, algoritma dan struktur data, kompleksitas algoritma itu kepake banget. Walau mungkin nanti tools dan resource yang kita pake bakal beda-beda, tapi pada dasarnya prinsipnya mirip-mirip, sehingga kalo kita tau basic cara kerja suatu benda, kita bisa lebih cepat beradaptasi dengan “barang baru”. Selain itu, dengan kita tau cara kerja suatu tools, kita bisa identifikasi apa yang disolve dengan tools ini, apa kira-kira bottlenecknya dan apa yang bisa diimprove dari tools tadi.

Engineering is about problem solving

Selama gue kerja, gue menyadari bahwa skill yang paling penting dipunya semua engineer adalah problem solving. Kebetulan, gue sekarang kerja di industri game, dan setiap fitur di dunia game itu dibuat dengan imajinasi penuh sang product managernya. Fitur-fitur yang ada itu punya kompleksitas dan tantangan yang cukup beragam. Tiap hari, kita disuguhi beragam problem: gimana caranya ngevalidasi kata yang disubmit ribuan user ke corpus berisi puluhan ribu kata dengan cepat & hemat memori, gimana caranya bikin game balapan yang melibatkan jutaan concurrent user, gimana caranya bikin fitur real time leaderboard dari jutaan user yang datanya berubah-ubah dengan cepat. All that need proper problem solving skill. Asal punya creative problem solving skill, sebenarnya banyak banget fitur yang bisa dibuat cuma dengan simple server + database + cache aja kok. What matters is how we connect things and arrange it into solutions.

Always Sharpen Yourself

Kita kerja di dunia teknologi yang berkembangnya sangat cepat, dengan permasalahan yang makin kompleks, dan dengan tuntutan yang makin besar. Dulu, pas gue masih kuliah, gue taunya react itu framework buat frontend. But later on, sekarang react udah bisa jadi framework backend. Dulu, kebanyakan proyek IIT yang gue ambil bisa diselesaikan dengan simple CRUD, sekarang wallahualam bisyawab. Dulu, kalo ada bug di kode tugas kita, paling konsekuensinya nilai matkul tersebut kecil. Sekarang, kalo ada bug, bisa jadi ada jutaan user yang terdampak sama kerjaan kita. Kalo kita ga terus keep up dan mengupgrade diri, most likely lama-kelamaan kita yang bakal tertinggal dan terhimpit oleh masalah yang kita punya. You won’t fit if you don’t make yourself sharper. Gue sendiri sekarang menginisiasi gerakan leetcode tiap pagi di kantor gue, hopefully it will return a great dividend later on.

Collaborating with Team

Banyak masalah justru bisa diselesaikan lewat negosiasi

Sewaktu kerja, kita pasti pernah punya kerjaan dengan requirement yang cukup aneh dan sulit untuk dicapai. While it’s great if we can overcome those problem with our skillset, but often most cases actually could be resolved by negotiations. Di dunia tech, bakal banyak ketemu edge-case yang pengerjaannya akan sangat ribet, tapi potensi kejadiannya sangat jarang. Bakal banyak requirement-requirement yang sebenernya ga terlalu penting dan impactful dari sisi user, tapi bakal ngebikin pengerjaannya nambah waktu yang lumayan lama. We often have to make a pushback, cari alasan kenapa suatu hal perlu dikerjakan dan apakah ada alternatif yang lebih gampang dikerjakan tapi bisa punya dampak serupa. Disini, skill negosiasi menjadi skillset yang penting. Siapatau, setelah negosiasi, ada solusi yang win-win, gampang dikerjakan dan berdampak buat user.

Explain Like I’m 5

Mengerjakan suatu produk adalah kerja kelompok dan didalam kerja kelompok, komunikasi adalah kunci penting. Sayangnya dengan latar yang berbeda-beda, belum tentu semua orang punya gaya bahasa yang sama. Kita bekerja bersama banyak orang, dengan latar yang berbeda, dengan point-of-view yang berbeda, dengan skillset yang berbeda-beda. Sebagai developer, gue juga kadang berurusan dengan tim marketing, yang mana belum tentu ngerti teknologi per-informatikaan, atau Product Manager, yang orientasinya condong kepada keberjalanan fiturnya, atau kadang juga berurusan dengan sesama developer, yang punya pemikiran dan point-of-view yang beda-beda juga. Berkomunikasi dengan orang-orang dengan latar yang berbeda merupakan is a great challenge to conquer. Ada satu metode menarik: Explain Like I’m 5. Gue sendiri sedang mengasah metode ini sih, dimana gue memaksa diri gue biar bisa menjelaskan sesuatu supaya anak umur 5 tahun aja bisa paham. Hopefully it will be helpful investment later on.

Tempatkan diri di posisi lawan

Gue akan mengulangi frase gue diatas: mengerjakan suatu produk adalah kerja kelompok. Kadang, dalam membangun produk, kita perlu berpikir sebagaimana teman kelompok kita berpikir. Kebetulan, gue cukup sering mendesain arsitektur dari suatu fitur, sehingga kadang perlu berpikir, kira-kira nanti dari FE flownya UInya gimana, kira-kira nanti buat data engineer data apa aja yang bakal diperluin, kira kira nanti dari PM setuju ga ya kalo ada adjustment di fiturnya kaya gini. Untuk mendesain tadi, kita kadang-kadang perlu tau orang lain bakal butuh apa aja, sehingga kadang penting untuk mengetahui kebutuhan mereka. Banyak hal yang miss kadang-kadang karena ada kebutuhan di tim lain yang tidak dipikirkan. Sering-sering berdiskusi, sering-sering cari tau cara kerja di tim lain, sering-sering berempati, agar nanti yang kita kerjakan dapat berjalan dengan lancar.

Work Ethics

Sometimes, we made mistake. It’s not about why that mistake happen but how do you react on your mistake.

Waktu kerja, gue pernah bikin suatu kesalahan di live environment, yang kalo dipikir-pikir sebenarnya beneran rookie mistake yang harusnya ga terjadi. Tapi, yang menarik adalah apa yang terjadi setelah kesalahannya terjadi. Instead of blaming me, yang kolega kerja gue tanyain ke gue adalah gimana cara memperbaiki kesalahannya. Setelah bugnya kejadian, yang kolega kerja gue cari adalah bagian testing mana yang ga kecover dan apa yang bisa diimprove dari sistem kerja kita setelah kejadian. I guess, we are human, afterall. We made mistakes, and maybe it’s nice if we find someone to blame behind the mistake. But to improve, we need to find our weakness and work together improving it.

Attention to detail vs Speed

Sewaktu awal-awal kerja, gue terlalu semangat buat ngerjain tugas-tugas yang di-assign ke gue, sehingga seringkali kerjaan gue selesai jauh lebih cepat dari timeline seharusnya. Maybe, it’s a good branding, people will recognize you as a fast person. Tapi, tradeoff dari speed seringkali adalah quality. Kadang, kita terlalu antusias terhadap menyelesaikan suatu tugas, sampai kadang lupa ada hal-hal kecil yang mestinya juga diperhatikan. Try to balance those things.

About boredom

Seseru apapun kerjaan kita, seasik apapun masalah yang kita pengen solve, at one point kita bakal ketemu dengan yang namanya boredom. Gue sendiri sekarang merasa ada di titik itu, dimana kerjaan yang gue lakuin tiap hari feels not that challenging anymore. Gue ga tau gimana cara ngatasinnya, tapi gue suka banget kalimat-kalimat ini: “Apa yang ngebuat orang bisa hebat bukan karena dia sesekali bikin sesuatu yang keren, tapi karena dia terus konsisten bikin sesuatu yang berkualitas. 10 kerjaan jelek, menghasilkan 1 kerjaan biasa. 10 kerjaan biasa, menghasilkan 1 kerjaan lumayan. 10 kerjaan lumayan, menghasilkan 1 kerjaan oke. 10 kerjaan oke, menghasilkan 1 kerjaan bagus. 10 kerjaan bagus, menghasilkan 1 kerjaan konsisten. 10 kerjaan konsisten, menghasilkan 1 hal berkualitas. Tantangannya adalah tetap konsisten melawan rasa bosan memproduksi ratusan kerjaan, sehingga kelak bisa konsisten menghasilkan kerjaan yang punya kualitas.”

Office Politics

Secepat mungkin bicara career progression dengan atasan

Salah satu hal pertama yang gue diskusiin sewaktu one-on-one bareng atasan gue adalah gimana caranya menaiki career ladder selanjutnya. Dan itu lumayan berdampak ke karir gue yang sekarang. Dengan diskusi, gue bisa tau sebenarnya apa sih yang dicari dan dikejar oleh perusahaan, sehingga gue bisa ikut mengambil peran dan berkontribusi kemudian. Dengan diskusi, gue juga bisa di-assign kerjaan-kerjaan yang mungkin lebih challenging, lebih banyak hal yang dipelajari dan lebih impactful. Dengan diskusi, mungkin sewaktu appraisal tiba, atasan kita bisa lebih tau apasih yang udah kita kerjakan, sehingga penilaian kinerja bisa jauh lebih optimal. I guess, this kind of thing is important to be talked first while we start the career progression.

Harus pinter jualan & sering pamer

Sebagaimana politik pada umumnya, di dunia tech juga ketika berpolitik, kita mesti pinter jualan dan pinter pamer. To become outstanding, we have to create something outstanding. Ketika berpolitik, penting untuk membuat inisiatif yang nantinya bisa dipamerin. Cari tau apasih pain-point yang dirasain oleh tim, sehingga kita bisa come up with solution yang beneran impactful ketika diimplementasi ke banyak tim. Misal, kalau didalam tim ada bagian-bagian yang ngerjainnya sangat nguli, mungkin inisiatif buat mengautomasi kerjaan tersebut menjadi menarik dan outstanding. Kedepan, inisiatif-inisiatif yang udah kita lakukan di company kita, bakal bisa dipamerin untuk progresi karir kedepannya. Gue sendiri sebenarnya lagi eksplore punya living document, mendokumentasikan inisiatif & kontribusi apa aja yang gue lakukan selama berkarir, let’s see it’s impact later on.

There are things that out of your control, focus on yourself.

Kita bisa aja berusaha semaksimal mungkin, udah megang project bagus, udah punya banyak inisiatif yang beneran impactful, udah presentasi sana-sini, but in life, there are certain things that’s out of our control. Dalam karir, ada 4 hal: Skill, Scope, Title, and Compensation, yang mana keempat hal ini tidak selalu berjalan beriringan. Kita bisa aja punya skill sejago senior, tapi punya title masih junior. Kadang, kita bisa aja punya scope kerjaan sebesar CTO, tapi dapet compensation sebesar intern. I guess, orientasi saat bekerja adalah jangan mengharapkan apa yang ga bisa kita kontrol (title, compensation), tapi keep on investing on things we can control (skill & scope). Ketika bekerja dengan scope yang lebih besar, jadikan alasannya agar kita dapat belajar mengemban tanggung jawab yang lebih besar, bukan agar dapat kompensasi/title yang lebih besar. Ketika membuat suatu inisiatif, jadikan alasannya agar kita punya skillset di bidang tersebut, bukan sebagai bahan agar dapat title yang lebih besar. Berharap kepada hal-hal yang ga bisa kita kontrol biasanya berujung mengecewakan. Fokus ke hal-hal yang bisa kita kontrol, berinvestasi pada diri sendiri agar kelak ketika ada pintu baru yang terbuka, kita sudah siap.

Social & Networking

WFH vs WFO

Kayanya gue akan menyesali omongan gue yang ini, tapi WFO has it’s own perks. Pertama, kerjaan akan lebih cepat. Kalo misal ada hal yang mau ditanyain/didiskusiin bareng kolega, lo bisa tinggal nyamperin orangnya, instead of nungguin orangnya bales chat lo yang entah kapan bakal dibalesnya itu. Kedua, ada banyak yang bisa dipelajari hanya dengan mengobservasi orang lain kerja. Ada banyak tools dan resource menarik yang gue dapet dari temen kerja gue saat ngeliatin mereka kerja, yang mungkin ga bisa kita lihat kalo misal kerja online. Kita bisa ngelihat gimana cara orang ngesolve problem sewaktu ngoding, bisa ngelihat cara orang lain latihan sebelum presentasi, bisa ngelihat cara orang lain buat lebih produktif, yang barangkali kita bisa praktekin ke diri sendiri. Ketiga, ketemuan bareng orang kadang bikin kerja tidak se-membosankan itu. Obrolan ga penting waktu pagi-pagi, gimmick nyamain warna baju bareng temen kerja, jalan-jalan keluar tiap jumat malam is a perk that makes work became less tiring. Kalo lo masih berada di fase-fase awal karir dan belum punya sesuatu yang beneran membutuhkan waktu, gue akan merekomendasikan untuk kerja WFO, sih, buat sekarang.

Kalo punya kesempatan buat punya mentor, ambil

Salah satu pain point bagi banyak orang adalah ga punya mentor dalam mengembangkan karirnya. Menurut gue, kalo lo bisa punya opportunity buat punya mentor dalam hal apapun, take it. Adakalanya, kita bakal butuh second opinion terhadap pilihan karir, Adakalanya, kita bakal butuh pencerahan terhadap masalah yang dihadapi saat ini, Adakalanya, kita bakal butuh motivasi untuk melewati hambatan besar yang ada didepan, dan menurut gue, mentor adalah salah satu solusi yang baik buat hal itu. Mendengar dan belajar dari pengalaman orang yang sudah pernah melewati langkah yang akan kita jalani, will always have a good impact on our path later on. Ini hal yang lagi gue eksplorasi, hope it will grow results later on.

Joining community is helpful

Satu hal yang lagi gue explore sekarang adalah community. Ketika kita tiap hari berada dalam suatu bubble –rekan kuliah dan kerja kita selama ini–, gue rasa gaada salahnya buat sesekali expand our horizon, berkumpul dengan sesama tech-worker membahas asam-garam kehidupan. Kita bisa belajar dari pengalaman orang lain, bisa juga punya pintu-pintu baru ke kesempatan-kesempatan menarik di masa depan atau setidaknya punya tempat buat bertanya ketika punya masalah. I guess, this approach will played a major role on my career later on, let’s see.

====

Well, walaupun 2 tahun ga bisa dibilang sebentar, tapi gue masih merasa ini adalah sebuah permulaan. Masih banyak yang pengen gue alami, masih banyak yang pengen gue pelajari, masih banyak yang pengen gue capai. Hoping a bright future shining through our path ahead!

Udah sih gitu aja, bye!


© 2023. All rights reserved.