photo credit: lulabyspoon

Memimpikan ekosistem software development ideal di Indonesia

Siang hari itu, di sebuah kafe di daerah Kemang saya bertemu dengan seorang wanita yang sangat terkenal dalam kalangan technology startup dan software development Indonesia. Namanya semakin sering saya dengar belakangan ini semenjak ia resign dari perusahaan yang pernah ia rintis. Namun untuk bertemu dengan dirinya untuk membicarakan ekosistem software development di Indonesia tidak pernah saya bayangkan sebelumnya. Gaya saya dengan gaya dia dalam membicarakan perubahan seperti dua ekstrim yang saling bertolak-belakang. But that is life. Full of mystery and unwritten future.

Pembicaraan kami dimulai dengan keprihatinan saya dengan semakin ngetrennya tech-startup maupun beberapa korporasi di Indonesia yang memiliki Chief Technology Officer (CTO) dari negara-negara seberang seperti India. Saya bertanya kepada dirinya apakah memang pada tingkatan tertentu software developer Indonesia kalah pintar dengan software developer dari negara seberang seperti India? Hal ini terjadi karena selama puluhan tahun dosen-dosen di jurusan teknik informatika di banyak universitas menekankan kalau software developer hendaknya jadi profesi batu loncatan saja. Doktrin yang berkembang adalah seorang sarjana teknik informatika hendaknya jadi system analyst hingga menjadi manajer proyek saja. Kalau dulu mahasiswa didoktrin untuk menjadi system analyst, sekarang ini dosen-dosen di universitas mengajar mahasiswa untuk membuat proposal ke investor daripada membuat great product. Akhirnya Indonesia pun mengalami defisit software developer hebat sehingga posisi strategis seperti CTO dan Vice President (VP) Engineering diisi oleh orang-orang dari negara-negara lain.

Pembicaraan kami pun berlanjut membahas tentang permasalahan ekosistem software development di Indonesia yang begitu kompleks dan sistemik. Di siang hari itu kami belum bisa memformulasikan bagaimana mengurai permasalahan yang begitu sistemik ini. Dari diskusi itu kami cuma bisa datang dengan model ekosistem software development yang ideal di Indonesia yaitu ketika:

  • customer memiliki compassion;
  • manajer memimpin dengan melayani;
  • dan software developer yang berdiri teguh di atas professionalisme.

1. Compassionate customers

When faced with our human imperfection, we can either respond with kindness and care, or with judgment and criticism.
 — Kristin Neff
compassion (n): sympathetic consciousness of others’ distress together with a desire to alleviate it.
compassion (n): the feeling that arises when you are confronted with another’s suffering and feel motivated to relieve that suffering.

Sebagian besar permasalahan di dalam software development terjadi karena tidak adanya compassion dari kostumer terhadap software developer. Ketika manajer pasrah tidak bisa berbuat apa-apa yang menyebabkan software developer stress dan lembur, hal ini terjadi karena kostumer yang bersikap tidak peduli dan tidak mau tahu. Arogansi kita seringkali menyakitkan pihak lain yang ada di belakang layar.

Manifestasi perilaku ‘uncompassionate’

Low respect

The more interested you are with others, the more interesting you become.

Manifestasi dari tidak adanya compassion tersebut adalah dengan menganggap remeh sifat pekerjaan software development. Perilakunya adalah dengan menggunakan bahasa-bahasa seperti:

  • “Ini gampang kok, cuma ganti teks, paling 5 menit juga selesai.”
  • “Ya elah, masa gitu aja gak bisa sih.”
  • “Kemarin ini kan sudah pernah dilakukan.”

Sebagai kostumer kita berpikir kalau software developer adalah orang yang bisa membaca pikiran kita dan kita beranggapan kalau membaca pikiran seseorang adalah pekerjaan yang mudah.

Low trust

Manifestasi lainnya dari tidak adanya compassion adalah dengan tidak adanya rasa percaya terhadap software developer yang dilanjutkan dengan denda bahkan tidak jarang ditambah dengan ancaman. Ekosistem software development menjadi lingkungan dimana semua orang mencari aman supaya tidak ada yang terkena hukuman. Ekosistem software development di Indonesia juga penuh dengan kecurigaan. Semua orang jadi pandai berpolitik dan tidak berani untuk transparan. Low trust antara klien dan vendor software terjadi hampir dimana-mana di negeri Indonesia ini. Dan bukannya berusaha membuat ekosistem software development yang penuh dengan trust, orang-orang di negeri ini justru menambahkan lapisan demi lapisan ancaman dan hukuman dalam kontrak ataupun perjanjian kerja.

Mengharapkan kepastian

Our limited knowledge creates a distorted perception of the reality.

Dalam kamus kita, sebagai kostumer kita adalah raja karena kita adalah pihak yang membayar sehingga kita berhak untuk mendapatkan apapun yang kita mau. Pada dasarnya kostumer adalah pihak yang demanding. Namun apakah hal tersebut masih relevan ketika sebagai kostumer kita justru tidak tahu apa yang kita mau? Banyak permasalahan yang terjadi dalam software development seperti pemanipulasian estimasi dan tidak adanya transparansi dalam kualitas software dimulai dari perilaku kita sebagai kostumer yang tidak memiliki kerendahan hati untuk menerima ketidak-pastian. Belum lagi kerugian waktu yang terbuang-buang hanya untuk mendapatkan requirement yang sempurna yang pada akhirnya juga akan berubah di masa depan.

Cara berpikir yang lebih alami

Focus on goal than quantity of features

Our job isn’t to stick to the plan — it’s to steer our course for the best result, not some fixed target.
 — Ron Jeffries

Sebagai kostumer kita memiliki mindset untuk mendapatkan lebih dengan harga minim. Oleh karena itu kecenderungan kita mengukur suksesnya proyek dengan berapa banyak fitur yang telah dihasilkan oleh software developer. Namun jumlah fitur tidak menandakan kita telah mencapai goal kita ataupun mendapatkan value dari fitur-fitur tersebut. Kita bisa saja mendapatkan ratusan fitur yang tidak menghasilkan value sama sekali untuk bisnis kita. Di sisi lain software developer mindsetnya akan terpaku hanya untuk menghantarkan fitur sebanyak mungkin tanpa peduli dengan nilai ekonomis dari fitur yang dihantarkan. Tidak jarang software developer akan memangkas kualitas asalkan seluruh fitur dihantarkan. Dan dalam keadaan seperti itu sebenarnya kita juga sudah rugi materi karena kita mengeluarkan uang untuk fitur-fitur yang tidak meningkatkan value untuk bisnis kita.

Short Feedback Cycle

Don’t wait for things to be perfect before you share them with others. Show early and show often. It’ll be pretty when we get there, but it won’t be pretty along the way. And that’s as it should be.
 — Ed Catmull

Feedback bernilai tinggi. Membuat perencanaan berdasarkan apa yang kita tidak bisa prediksi itu tidak realistis. Feedback dibutuhkan ketika kita tidak tahu apa yang kita mau. Feedback ini didapatkan sesering mungkin sepanjang proyek. Daripada menghabiskan waktu untuk mendapatkan kepastian yang realitanya hampir tidak pernah ada dalam software development, kita membuat short feedback cycle dari harian dan mingguan melihat working software untuk menjaga resiko return on investment kita tidak maksimal.

Dalam proses pembuatan film animasi, Pixar melakukan daily dan weekly cycle untuk melihat progress film sampai anggaran pembuatan film habis. Walaupun di awal mereka membuat story board film secara keseluruhan namun mereka meninjau pekerjaan mereka di dalam daily dan weekly cycle karena mereka menyadari banyaknya ketidak-pastian sebelum mereka memulai proyek. Keluaran dari daily dan weekly cycle ini mereka memantau apakah mereka perlu mengganti haluan agar target mereka bisa tetap tercapai. Hanya dengan adanya short feedback cycle ini kita jadi benar-benar tahu mengenai apa yang sebenarnya kita inginkan. Mindset yang paling penting adalah tidak mengharapkan kepastian namun mengakui kalau yang pasti adalah adanya ketidak-pastian.

Dalam software development, karena sebagai kostumer sebenarnya kita tidak tahu apa yang kita mau dan software merupakan benda yang abstrak dimana requirementnya sulit diterjemahkan ke dalam dokumentasi, maka cara yang lebih efektif adalah software developer akan menunjukkan progress software ke kostumer setiap hari untuk mendapatkan feedback apakah nilai (value) dari softwarenya hingga hari ini sudah sesuai keinginan kostumer. Setiap minggu sampai setiap dua minggu kostumer akan berkolaborasi dengan software developer untuk mengukur apakah software yang telah dihasilkan tersebut sudah memberi nilai yang tinggi untuk bisnis sesuai investasi awal. Dari feedback mingguan atau dwi-mingguan tersebut kostumer dan software developer akan membuat perencanaan untuk cycle berikutnya sampai anggaran proyek yang kita miliki habis atau hingga momentum yang ditargetkan tercapai.

Engaged Customers

You can’t just ask customers what they want and then try to give that to them. By the time you get it built, they’ll want something new. 
– Steve Jobs

Sebagai kostumer kita harus membuka diri untuk berkolaborasi dengan software developer di cycle harian hingga cycle mingguan untuk meningkatkan nilai dari software yang dikembangkan. Mindset yang penting adalah kolaborasi bukan penggunaan kekuatan politik. Bukankah pada akhirnya ketika software tersebut sesuai dengan harapan kita dan dapat meningkatkan nilai untuk bisnis kita akhirnya kita juga yang diuntungkan?


Menjadi kostumer yang demanding dan otoriter itu sangat mudah. Bukankah hampir semua kostumer seperti itu? Tetapi yang menjadikan kita beda dan yang bisa merubah ekosistem software development adalah diri kita sendiri. Memiliki compassion terhadap software developer tidaklah mudah karena membutuhkan kerendahan hati. Kita bisa membawa perubahan dengan merubah diri kita sendiri terlebih dahulu dengan cara merubah ekspektasi kita terhadap software development dan berusaha memahami sifat pekerjaan software developer yang kompleks.

Referensi terkait:

2. Leading by serving managers

When people respect you only because of your authority, they will give you the minimum effort.
 — Jim Whitehurst
egalitarianism (n): a belief in human equality especially with respect to social, political, and economic affairs

Sebagai masyarakat Indonesia kita terbiasa dalam sistem kehidupan yang lebih menghargai seseorang karena otoritas. Kita adalah masyarakat yang percaya dengan hirarki, masyarakat Indonesia bukanlah masyarakat egaliter.

Seseorang yang memiliki otoritas memiliki kekuatan politik dan dianggap lebih powerful di perusahaan. Dalam dunia korporasi, seseorang yang memiliki otoritas dan kekuatan politik akan cenderung menggunakannya untuk mengatur dan memerintah sub-ordinat lainnya. Tidak jarang kekuatan politik yang digunakan tersebut membuat kehidupan software developer semakin tertekan. Saya pernah memberikan coaching di sebuah perusahaan software house yang menekan kembali software developernya karena kostumer mereka tidak compassionate. Saya bertanya kepada pimpinan perusahaan mengenai apa yang bisa ia lakukan untuk dapat merubah nasib software developer? Jawabannya sangat mengecewakan, “ya kostumer kita memang sudah seperti itu, mau diapain lagi?”. Kekuatan politik yang ia miliki hanya digunakan untuk menekan kembali software developer bukan untuk mengedukasi kostumer dan membuat perubahan. Sebagai seorang pemimpin ia lebih memilih untuk mempertahankan jabatannya sendiri.

Fokus banyak pimpinan perusahaan hanyalah pemaksimalan keuntungan, tanpa peduli kalau di sisi lain hal tersebut kadang dapat menurunkan tingkat kebahagiaan software developer. Perusahaan tersebut pun terjebak dalam status quo, manajemen yang memiliki kekuatan politik yang diharapkan dapat membuat perubahan justru hanya bisa diam saja. Inilah realita di banyak perusahaan di Indonesia, pemimpin-pemimpin di dalam perusahaan yang tidak berani untuk menggunakan kekuatan politiknya miliki untuk membela software developer dan mengangkat software developer, putting himself last before others.

Developer tidak lebih dari angka-angka yang perlu di-manage

Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
— Bill Gates

Di banyak perusahaan hingga hari ini software developer hanya dianggap sebagai resource, software developer tidak lebih dari angka-angka yang perlu di-manage. Manajer-manajer terobsesi untuk mengukur software developer hingga level paling mikro. Software developer pun akan dengan cerdas memanipulasi estimasi ataupun metrik-metrik lain yang digunakan untuk mengukur produktifitas mereka agar manajer mereka pun puas melihat angka-angka tersebut.

Sebagai manajer yang melayani, manajemen akan fokus untuk memanage lingkungan yang produktif bagi software developer daripada me-micro-manage produktifitas software developer lewat angka-angka. Dengan kekuatan politik yang dimiliki oleh manajemen, manajer hendaknya menjadi seorang coach bagi software developer untuk memperbesar potensi mereka daripada menggunakan kekuatan politik untuk menekan software developer. Manajer-manajer di abad 21 perlu belajar ilmu coaching agar dapat memperbesar potensi software developer, melepaskan kontrol dan memberi trust kepada software developer untuk dapat self-manage.

Unsafe place to fail

Management’s job is not to prevent risk but to make it safe to take risk and to build the ability to recover from risk fast.
 — Ed Catmull

Ekosistem software development di Indonesia secara umum belum menjadi lingkungan yang aman untuk software developer. Saling menyalahkan dan saling menghakimi antar pihak masih sering terjadi dan terkadang malah dianggap biasa. IT menyalahkan business user yang tidak memiliki konsep dan requirement yang jelas. Business user pun sering menyalahkan IT karena terlalu lambat dalam menghantarkan software dan tidak mengerti apa yang diinginkan oleh pihak bisnis. Belum lagi click tester dan software developer yang saling menyalahkan satu sama lain mengenai kualitas software. Ditambah lagi pihak manajemen yang menyalahkan software developer yang tidak bisa menghantarkan software sesuai deadline dan dengan kualitas tinggi.

Saling menyalahkan ini membuat banyak orang takut untuk mengambil resiko. Ketakutan orang-orang untuk mengambil resiko menyebabkan tidak adanya inovasi. Hal ini sungguh ironis karena untuk pekerjaan yang melibatkan kreatifitas dan inovasi seperti software development, orang-orang justru diharapkan untuk berani mengambil resiko dan berani untuk gagal. Di korporasi apalagi di BUMN safe-to-fail dianggap sebagai sebuah utopia. Di BUMN kegagalan artinya dipanggil oleh Badan Pemeriksa Keuangan (BPK).

Manajer-manajer di abad 21 perlu merubah perilaku dari mengatur manusia ke mengatur sistem korporasi agar budaya kerja di perusahaan menjadi lingkungan yang safe-to-fail. Lingkungan safe-to-fail adalah lingkungan dimana orang-orang dapat merasa aman untuk melakukan hal-hal yang dalam sistem tradisional hanya akan berakhir pada blaming, judgment dan punishment seperti men-challenge ide dari bos, mengambil resiko, keluar dari zona nyaman, mengatakan tidak terhadap deadline yang hanya berakhir pada penurunan kualitas, dsb.


Menjadi manajer yang otoriter sudah biasa. Bukankah banyak manajer software development di Indonesia yang seperti itu? Kalau kita ingin membuat perubahan kita harus beda dengan manajer-manajer lainnya. Menjadi manajer yang menggunakan otoritas yang kita miliki untuk melayani dan mengangkat kualitas hidup dan potensi software developer lewat coaching tidaklah lumrah di Indonesia. Dibutuhkan kerendahan hati dan keterbukaan pikiran untuk menjadi manager as coach. Ekosistem software development Indonesia butuh lebih banyak lagi servant leaders karena banyak software developer yang sudah memiliki stigma kalau menjadi software developer dirinya hanya akan ditekan oleh manajemen dan kostumer.

Referensi terkait:

3. Professional software developers

Continuous attention to technical excellence and good design enhances agility.
– Agile Manifesto 9th principle

Jujur saja saya sering dikritik oleh manajemen perusahaan-perusahaan di Indonesia kalau terlalu berpihak pada software developer dan jarang mengkritisi software developer sendiri. Memang tidak bisa dipungkiri kalau rendahnya trust dari kostumer dan manajemen adalah karena tidak profesionalnya software developer. Yup memang dalam banyak kasus software developer tidak bisa / tidak sempat untuk bertindak profesional karena kostumer dan manajemen yang otoriter. Oleh karena itu permasalahan di ekosistem software development Indonesia bersifat sistemik. Dan sekarang kita sedang membicarakan impian mengenai keadaan yang ideal di ekosistem software development Indonesia bukan?

Dalam software development, profesionalisme bukanlah pilihan namun sebuah keharusan. Profesionalisme adalah melakukan hal yang benar walaupun tidak ada yang melihat.

Buffer untuk cari selamat

Software developer memberi buffer estimasi karena seperti yang saya jelaskan sebelumnya bahwa ekosistem software development di Indonesia masih belum safe-to-fail, kostumer masih mengharapkan tanggal yang fixed dan manajemen akan memberikan hukuman bila tanggal dari kostumer tidak tercapai. Software developer yang professional artinya tidak memberi buffer terhadap estimasi hanya untuk mencari selamat. Professional artinya menekankan kejujuran walaupun hal tersebut akan menyebabkan posisi kita tidak aman. Sebagai software developer yang professional lebih baik kita dipecat karena berkata jujur daripada disayangi atasan karena pintar memberi buffer.

MVP sebagai alasan untuk memotong kualitas

Saya sering ketemu dengan software developer yang menggunakan istilah MVP (Minimum Viable Product) sebagai justifikasi kenapa mereka harus memotong kualitas. Namun realitanya kode dari MVP tersebut tidak pernah di-refactor lagi dan test pun tidak pernah ditulis 5 tahun kemudian yang akhirnya justru menyusahkan developer berikutnya yang harus memaintain kode tersebut. Kejadian ini sering terjadi di technology startup di Indonesia. Software developer yang professional artinya menekankan technical excellence (seperti refactoring, clean coding dan test-driven development) dan tidak mengambil jalan pintas hanya agar dapat memenuhi deadline. Kejadian yang menimpa Volkswagen dan Samsung seharusnya sudah menjadi pelajaran bahwa memotong kualitas hanya demi memenuhi deadline dapat berdampak buruk terhadap perusahaan.

Believe that their job is only to write code

Seorang CTO dari sebuah startup yang cukup ternama di Indonesia mengatakan kepada saya kalau menurutnya dia digaji hanya untuk menulis kode sedangkan dia tidak terlalu suka berinteraksi dengan software developer lainnya lewat daily scrum ataupun praktik seperti mob programming. Masih banyak software developer yang mengira dirinya adalah kode yang dia tulis. Dia tidak pernah berpikir kalau software development adalah pekerjaan yang melibatkan sosiologi. Software developer yang professional adalah software developer yang tidak hanya berpikir kalau tugasnya hanyalah menulis kode dan hanya mengikuti dokumen requirement yang diberikan oleh kostumer. Software developer yang professional tidak egois, rendah hati untuk berinteraksi dengan manusia lainnya dan komitmen terhadap keputusan yang telah dibuat bersama oleh tim. You are not your code.

Expecting fixed requirement

Tidak dipungkiri bahwa perilaku software developer yang tidak mau mulai bekerja sebelum requirement sudah fixed dipengaruhi oleh perilaku kostumer yang mengharapkan kepastian dalam estimasi. Software developer seringkali berargumen bila requirement tidak fixed maka nanti arsitektur sistemnya tidak akan kokoh. Namun software developer seperti ini menurut saya tidaklah professional. Software developer yang professional seharusnya melayani kostumer bukan memaksa kostumer untuk melayani mereka dengan membuat requirement untuk mereka. Software developer seperti ini tidak mau meng-upgrade dirinya untuk belajar teknik-teknik emergent architecture.

Software yang dirancang dengan fixed architecture seringkali justru menjadi sulit untuk dirubah di masa mendatang karena rancangannya biasanya tightly coupled. Dan hal ini sudah sering terjadi. Mengembangkan software tidak sama dengan membangun rumah. Arsitektur software tidak bisa disamakan dengan arsitektur rumah. Software developer yang mengharapkan fixed requirement dengan argumen demi arsitektur bukanlah software developer yang professional karena realitanya sudah banyak praktik yang memungkinkan pihak kostumer bisa mengadaptasikan keinginannya tanpa fixed arthitecture.

Continuous Learning

It’s hard to learn if you can’t admit that you might be wrong.

Software developer yang professional adalah software developer yang selalu mau belajar hal baru dan tidak percaya dengan adanya kebenaran absolut di dunia software development. Mereka tidak pernah percaya kalau ilmu apapun yang telah mereka miliki sekarang sebagai satu-satunya kebenaran. Bukan hanya manajemen dan kostumer saja yang perlu memiliki pikiran terbuka dan kerendahan hati, software developer yang professional pun mau membuka pikiran dan hati untuk praktik dan teknik baru yang dapat meningkatkan performa tim dan kualitas software yang dikembangkan. Mereka selalu mau untuk meningkatkan software craftmanship-nya demi terhantarnya software yang bernilai tinggi untuk kostumer. Hanya dengan profesionalisme dapat terjalinnya lagi trust antara software developer dengan kostumer dan manajemen.


Bersikap professional bukanlah sesuatu yang dianggap popular di ekosistem software development Indonesia. Software developer selama ini dianggap kuli koding yang hanya perlu untuk mengembangkan software sesuai dokumentasi. Mindset yang dianut adalah “yang penting cepet selesai”. Software yang memiliki emergent architecture, kualitas kode tinggi dan test code tidak terlalu ditekankan di ekosistem software development Indonesia bahkan hampir tidak pernah dibahas sama sekali di bangku kuliah. Memberi buffer estimasi pun dianggap sudah biasa karena perilaku tersebut mereka tiru dari manajer proyek mereka yang juga mendapatkan telah mendapatkan ajaran untuk memberi buffer estimasi dengan alasan untuk manajemen resiko.

Referensi terkait:


If you set a crazy, ambitious goal and missed it, you still achieve something remarkable.
 — Larry Page

Ah sudahlah. Membicarakan permasalahan sistemik ini tidak ada ujungnya. Compassion, servant leadership dan professionalism bukan kata-kata yang popular di kalangan software development Indonesia dibandingkan ancaman, otoriter dan “yang penting jadi”. Pembicaraan kami pun harus berakhir karena hari sudah semakin sore, kopi kami sudah habis dan besok pagi kami harus kembali bekerja. Untuk melihat ekosistem software development yang ideal di Indonesia mungkin membutuhkan pergantian beberapa generasi, atau bahkan mungkin tidak akan pernah terjadi sama sekali mengingat permasalahannya sangat mengakar dan budaya bangsa Indonesia yang kental dengan model kepemimpinan top-down dan authoritarian di mana yang memiliki otoritas selalu benar. Kami berdua pun cuma bisa melakukan yang terbaik di area kami masing-masing untuk membawa perubahan di ekosistem software development Indonesia. Kalaupun kami berdua tidak dapat melihat perubahan, paling tidak kami sudah melakukan yang terbaik semampunya kami.


Jangan lupa untuk menekan tombol 👏🏻 di bawah sebanyak mungkin agar lebih banyak orang di Indonesia dapat melihat artikel ini dan ekosistem software development di Indonesia bisa menjadi jauh lebih baik bagi kita semua. Satu dua orang saja tidak bisa merubah permasalahan di ekosistem software development Indonesia yang begitu sistemik. Artikel ini adalah sekelumit pemikiran saya untuk buku saya yang kedua.

Artikel lainnya: