Apa saja mitos di industri software development Indonesia?

Sejarah mencatat kalau penggunaan komputer di Indonesia dimulai di sekitar tahun 1970-an dan cabang ilmu komputer atau teknik informatika mulai berkembang di Indonesia sekitar akhir tahun 1970-an. Bila memang benar cabang ilmu komputer masuk di Indonesia di tahun tersebut, berarti hampir 40 tahun industri software development di Indonesia tidak mengalami banyak kemajuan yang berarti.

Kenapa demikian? Karena selama satu dekade belakangan, tingkat turnover di industri software development di Indonesia masih tergolong tinggi dibandingkan di industri lainnya, delivery date yang tidak sesuai perencanaan dan fitur-fitur yang tidak sesuai permintaan kostumer.

Namun walaupun dengan semua permasalahan pelik tersebut, masih banyak saja praktisi IT di Indonesia yang melakukan hal yang sama seolah-olah kegagalan dalam 40 tahun belakangan belum menjadi cukup bukti kuat untuk mereka merubah cara berpikir dan cara berperilaku dalam software development.

Seharusnya orang yang telah gagal berkali-kali langsung belajar dari kegagalan dan tidak melakukan hal yang telah menyebabkan ia gagal untuk kedua kalinya, namun hal tersebut seolah-olah tidak berlaku di Indonesia karena banyak orang Indonesia yang menggunakan kaca mata kuda yang tidak memperhatikan perkembangan dan perubahan di belahan dunia lain.

A problem can’t be solved from the same state of mind that created it.
— Einstein

Pada hari ini, pada saat anda sedang membaca artikel ini, di Indonesia ada proyek software development yang sebentar lagi akan gagal dan pada saat yang bersamaan ada beberapa software developer yang baru saja bekerja di perusahaan selama kurang dari satu bulan berniat untuk mengundurkan diri dari perusahaan dimana ia bekerja.

Banyak manajer dan petinggi perusahaan yang masih memiliki pola pikir dari teori manajemen dari tahun 1900-an dalam mengelola proyek software development di abad 21. Oleh karena itu banyak dari manajer IT ini yang perlu diganti karena mereka belum menyesuaikan diri dengan perkembangan jaman.

Apakah ini hanya merupakan kesalahan mereka saja? Tidak juga, perilaku mereka yang tradisional ini juga banyak dipengaruhi oleh atasan mereka yang berlagak tidak mau tahu dan sebuah departemen yang sering disebut Human Resource Department (HRD) yang masih menggunakan teori-teori jaman kuda yang sudah banyak disangkal oleh ilmuwan dan psikolog. Saya menyebut orang-orang yang duduk di Manajemen dan HRD sebagai partners in crime to demotivate people in the workplace. Saya menyebut teori jaman kuda yang mereka anut tersebut sebagai mitos.

mitos (n). sebuah pemikiran mengenai pengelolaan software development berdasarkan teori dari jaman kuda yang tidak manusiawi dan sudah tidak relevan lagi di abad 21.

1. Software Developer = Resource

Di setiap training yang saya jalankan, selalu ada saja yang mengkorelasikan software developer sebagai resource.
“Pak, bagaimana apabila resource kami terbatas? Apakah Scrum … ?”

Pertanyaan seperti itu selalu langsung saya potong karena resource yang dikorelasikan dengan software developer sangat mengganggu kuping saya. Menurut kamus bahasa inggris, arti dari kata resource adalah:

resource (n). a place or thing that provides something useful and can be used whenever it is needed.

Sayangnya software developer bukanlah a thing (benda) yang bisa dimanfaatkan sewaktu-waktu bila dibutuhkan. Software developer memiliki pemikiran dan perasaan.

Apa itu manajemen?

Banyak teori manajemen yang dianut di Indonesia didasari oleh teori Scientific Management, yang berkembang di sekitar tahun 1910-an. Teori ini berkembang dari lingkungan produksi di pabrik.

Oleh karena itu teori ini lebih banyak menekankan pada efisiensi dan produktifitas karyawan pabrik. Teori ini sangat menekankan posisi manajer yang bertugas untuk mengatur karyawan pabrik (labor).

Peran manajer dipandang sebagai peran yang sangat penting oleh karena itu manajer haruslah orang-orang yang pintar. Tapi sayangnya Scientific Management ini tidak relevan di industri software development di abad 21.

Manager’s responsibility is not to make people work, but to make it possible for people to do their work.

Sifat pekerjaan dalam lini development tentunya sangat berbeda dengan lini produksi di pabrik. Software developer bukanlah buruh yang menulis kode seperti buruh pabrik.

Hal ini dikarenakan kode yang ditulis oleh software developer sifatnya tidak selalu sama dan algoritma yang ditulis oleh software developer memerlukan tingkat kecerdasan yang tinggi.

Paradigma dimana software developer adalah resource didasari oleh pemikiran kalau software developer adalah spare part yang dapat digantikan. Pola pikir tersebut membuat banyak perusahaan di Indonesia menekan biaya software developer serendah mungkin karena software developer hanya dipandang sebagai spare part (resource).

People are NOT Resource

Dalam ilmu akuntansi, resource atau sumber daya seperti mesin fotokopi, komputer, alat tulis, kendaraan kantor maupun gedung dilihat sebagai expense dikarenakan seiring dengan waktu resource ini akan mengalami penyusutan atau depresiasi nilai.

Buruh-buruh pabrik pun di dalam pembukuan akuntansi dianggap sebagai expense. Karena buruh dipandang sebagai expense, di banyak perusahaan di Indonesia, software developer pun dilihat sebagai expense. Software developer diperlakukan sebagai “sumber daya” yang harus digunakan semaksimal mungkin daripada diperlakukan seperti manusia yang potensinya perlu dikembangkan.

Cara berpikir bahwa software developer adalah resource dan expense ini memiliki kejanggalan karena software developer sebenarnya adalah sebuah capital investment untuk perusahaan.

Software developer tidak akan mengalami penyusutan, namun sebaliknya seiring dengan waktu mereka akan menjadi semakin pintar karena mereka adalah knowledge worker yang menggunakan otaknya untuk bekerja bukan ototnya.

Ilmu yang ada di dalam kepala software developer tidak akan usang, kecuali mereka tidak mau terus menerus belajar dan up-to-date dengan perkembangan jaman lagi. Dan bila mereka semakin pintar, maka software yang mereka kembangkan akan semakin berkualitas tinggi.

Software developer bukanlah resource yang perlu dimanage. When software developers are over-managed, they will under-manage themselves. Mereka adalah manusia. Mereka adalah knowledge worker. Mereka adalah capital investment dimana capital utama mereka adalah pengetahuan.

2. Software development = pekerjaan prediktif

Chaos theory adalah sebuah bidang ilmu yang mempelajari sebuah dinamika sistem yang sangat sensitif terhadap keadaan di awal yang menyebabkan keadaan di akhir tidak dapat diprediksi. Lorenz system adalah salah satu contoh dari chaotic system dan sebagai kontras gravitasi dapat dikatakan sebagai sebuah sistem yang memiliki tingkat kepastian yang tinggi.

Adik saya yang sekarang masih duduk di bangku SMA saat ini bekerja paruh waktu di sebuah rumah makan saji cepat yang makanan utamanya adalah burger. Salah satu kebiasaan dari rumah makan saji cepat ini adalah mencari tenaga kerja yang masih duduk di bangku SMA dikarenakan gaji harian seseorang yang masih duduk di bangku SMA jauh lebih murah dibandingkan seseorang yang sudah berkeluarga.

Hal ini tidaklah aneh dan bisa diterima oleh akal sehat karena proses untuk membuat burger sifatnya repetitif dan tidak rumit, bahkan seseorang yang masih duduk di bangku SMA pun dapat diberi pelatihan singkat mengenai pembuatan burger kurang dari sehari. Kalau proses mengembangkan software sama dengan proses membuat burger, mungkin cara berpikir bahwa pengembangan software adalah pekerjaan prediktif dapat diterima.

Sayangnya pekerjaan mengembangkan software bukanlah pekerjaan prediktif seperti membuat burger karena software developer tidak pernah membuat software yang sama lebih dari satu kali. Mengembangkan software bukanlah sebuah proses produksi. Bila kita ambil contoh industri otomotif, kita dapat melihat disana ada sebuah divisi R&D (Research & Development) dan ada bagian factory yang bertugas memproduksi mobil yang didisain oleh divisi R&D.

Keahlian orang-orang yang berada di divisi R&D berbeda dengan orang-orang yang berada di factory. Orang-orang yang berada di divisi R&D berisi para inovator yang kreatif berbeda dengan orang-orang yang ada di factory yang cukup mengikuti prosedur standard. Para inovator di divisi R&D tidak pernah mendisain mobil yang sama lebih dari satu kali namun orang-orang yang bekerja di lini produksi dapat membuat tipe mobil yang sama berkali-kali dalam sehari. Bila kita ingin menghubungkan sifat pekerjaan software development, maka lebih cocok untuk dihubungkan dengan divisi R&D daripada dengan lini produksi di pabrik. Software developer adalah inovator, bukan buruh pabrik.

Namun sangat disayangkan sekali banyak manajer proyek yang masih menganggap kalau tipe pekerjaan di software development adalah pekerjaan yang dapat diprediksi dari awal seperti pekerjaan membuat burger. Manajer proyek akan berusaha semaksimal mungkin untuk membuat work breakdown structure (WBS) yang mendekati sempurna supaya proyeknya tidak gagal.

Dan ketika proyeknya gagal, di proyek berikutnya mereka akan berusaha untuk menghabiskan lebih banyak waktu untuk membuat WBS-nya semakin mendekati sempurna lagi dan kalau perlu kali ini tambahkan buffer. Cara berpikir seperti ini sangat tidak relevan di software development karena kebanyakan teori manajemen proyek yang dianut manajer proyek banyak dilandaskan oleh teori manajemen proyek konstruksi yang sifatnya memang cenderung prediktif.

Proses konstruksi bangunan yang banyak menggunakan teori teknik sipil dan teori fisika membuatnya cenderung prediktif. Anda tentu masih ingat di SMA kalau pelajaran fisika sering disebut sebagai ilmu pasti. Kalau saja mengembangkan software didasari oleh rumus-rumus fisika, mungkin kita bisa menggunakan WBS dan kita tidak perlu memiliki software developer yang cerdas, cukup yang sekelas kuli bangunan saja.

Andaikan saja manajer proyek ini memiliki kerendahan hati untuk mengakui kalau ilmu manajemen proyek mereka tidak relevan di software development, mungkin lebih banyak software developer saat ini yang bahagia dan tidak menyesali kenapa dirinya adalah seorang software developer.

Coercing people into commitments then blaming them for not meeting those commitments is an abuse.

Mitos ini semakin diperparah oleh salesman yang memberikan janji palsu kepada klien hanya agar dia mendapatkan proyek dari kostumernya. Si salesman akan mendapatkan bonus dari perusahaan karena sudah menggolkan proyek, sedangkan software developer harus menderita karena deadline yang dijanjikan oleh salesman kepada kostumer sering kali tidak masuk akal.

Bukankah ini adalah proses pemanipulasian yang sangat kejam? Banyak salesman di perusahaan software yang berpikir kalau membuat software sama seperti membuat mi instan goreng telur. Dan jangan salahkan bila software yang dikembangkan oleh software developer menjadi berkualitas rendah.

Software developers don’t work effectively when they’re pushed into a no-win situation.

Untuk tipe pekerjaan yang memiliki banyak ketidakpastian seperti software development, metode empiris lebih tepat untuk digunakan.

Manajer proyek yang mengira kalau tipe pekerjaan software development sifatnya prediktif kemungkinan tidak pernah terlibat atau sudah lama tidak terlibat dalam software development atau memang timnya mengembangkan software sederhana dengan teknologi sederhana yang jumlah penggunanya hanya satu orang.


Artikel ini akan saya sambung di part 2 agar tidak terlalu panjang dan membosankan untuk dibaca.
Semoga bermanfaat.

Sumber