Connect with us

Pemimpin pemikiran

Mitos Produktivitas dalam Teknik Perangkat Lunak

mm

Selama lebih dari dua dekade, konsep produktivitas telah berkembang dan meluas dalam berbagai arah dalam teknik perangkat lunak – pada banyak kesempatan dengan hasil yang membingungkan atau bertentangan. Selama tahun-tahun awal saya di bidang ini, saya berada di bawah kesan yang salah bahwa lebih banyak jam kerja, lebih banyak baris kode, dan lebih banyak “aktivitas” secara otomatis berarti hasil yang lebih baik. Namun, pandangan produktivitas – dari pengembang hingga pemimpin tim dan kemudian manajer teknik – hanya tampaknya bekerja melawan tujuan yang seharusnya dicapai, tidak hanya merugikan kualitas kode tetapi juga mengambil tol serius pada kesejahteraan pengembang.

Dalam artikel ini, saya akan membagikan beberapa kesalahpahaman yang saya temui dan membantah mitos yang paling merajalela seputar produktivitas di industri teknologi. Dengan mengambil dari kisah pribadi, pengalaman tim praktis, dan observasi yang didukung oleh penelitian, saya akan berargumen bahwa produktivitas yang sebenarnya memiliki lebih sedikit hubungan dengan sprint yang penuh kegiatan, dipicu oleh lembur, dan lebih banyak hubungan dengan fokus yang terarah, rutinitas kerja yang sehat, dan budaya organisasi yang seimbang. Saya berharap bahwa dengan melawan ilusi ini kita dapat mulai berpikir kembali tentang cara mengelola proyek perangkat lunak dan menangani orang-orang yang menciptakannya.

Ilusi Lembur

Salah satu ilusi produktivitas terawal yang saya kenal adalah fakta bahwa bekerja lembur selama berjam-jam secara otomatis menghasilkan hasil yang lebih baik. Pada tahun-tahun awal saya bekerja, saya telah mengambil proyek upgrade besar sistem pembayaran sebuah organisasi, dengan waktu yang sangat terbatas. Karena deadline yang mendekat, merasa terjepit, saya meyakinkan tim saya untuk bekerja larut malam dan akhir pekan selama hampir dua bulan.

Tapi kemudian retakan mulai muncul sekitar enam bulan kemudian. Bug halus, mungkin diperkenalkan selama sesi coding malam yang lelah tim, mulai muncul di produksi. Masalah ini, ketika diperbaiki, melibatkan waktu dan sumber daya tambahan, tetapi kepercayaan pelanggan juga merosot. Lebih parah lagi, dorongan lembur heroik ini hanya mungkin karena dua anggota kunci tim terbakar karena stres dan mengundurkan diri setelah mengutip kelelahan dan ketidakpuasan dengan pekerjaan. Kemudian itu menjadi jelas bahwa kesuksesan jangka pendek dalam memenuhi deadline telah datang dengan biaya jangka panjang yang besar. Jadi, mitos bahwa jam kerja menjamin produktivitas terbukti bencana.

Waktu Kualitas Lebih Penting dari Waktu Kuantitas

Kreativitas dan pemecahan masalah, dua keterampilan kunci yang diperlukan dalam teknik perangkat lunak modern, sangat terbatas oleh kelelahan. Menggunakan alat pelacakan waktu seperti RescueTime dan Toggl selama bertahun-tahun untuk mempelajari pola kerja tim saya telah menghasilkan beberapa hasil yang mengungkapkan: kode berkualitas tertinggi kami diproduksi ketika pengembang menikmati blok konsentrasi yang tidak terganggu selama 4-5 jam. Ketika individu mendorong ke hari 10 atau 12 jam, tingkat kesalahan sering melonjak, dan pekerjaan ulang dapat menghabiskan lebih banyak jam di bagian belakang. Dengan mengadopsi jadwal yang lebih terukur, kami telah melihat penurunan yang signifikan dalam bug, kenaikan kepuasan tim, dan akhirnya, waktu pengiriman yang lebih dapat diprediksi.

Kejahatan Fokus

Mitos lain yang tertanam adalah bahwa pengembang harus “terhubung” dan mengetik setiap menit untuk dianggap produktif. Kesalahpahaman ini dapat menyebabkan perusahaan menerapkan sistem pemantauan aktivitas yang keras, mengobsesi kegiatan pengetikan atau waktu layar. Saya telah melihat perusahaan mendorong budaya di mana muncul “online” selama jam maksimum yang mungkin dianggap sebagai tanda komitmen. Persepsi ini sepenuhnya melewatkan kegiatan tak kasat mata yang penting yang merupakan bagian dari pengembangan perangkat lunak, seperti perencanaan, diskusi, penelitian, dan desain konseptual.

Terobosan Jauh dari Keyboard

Salah satu demonstrasi paling mencolok dari ini datang tahun lalu, ketika tim saya berada di tengah-tengah pertempuran sengit dengan masalah arsitektur mikro layanan yang sulit. Selama dua minggu, kami mengeluarkan kode dengan frustrasi, mencoba memecahkan jaringan layanan yang rumit. Akhirnya, kami mengadakan pertemuan di ruang istirahat untuk percakapan yang lebih informal. Di atas kopi, kami membuat solusi yang jauh lebih sederhana, memotong banyak kompleksitas yang kami perjuangkan. 30 menit percakapan itu menyelamatkan kami dari apa yang pasti akan menjadi bulan-bulan perubahan yang menyakitkan. Ini adalah pengingat kuat bahwa pemecahan masalah yang efektif sering terjadi di luar batas-batas IDE.

Mempertanyakan Metrik Produktivitas

Jika “jam kerja” dan “aktivitas” konstan adalah metrik yang bermasalah, apa yang seharusnya kita lacak sebagai gantinya? Metrik tradisional produktivitas dalam teknik perangkat lunak biasanya fokus pada output permukaan: baris kode, jumlah komit, atau tiket yang ditutup. Sementara ini dapat memberikan beberapa wawasan tingkat tinggi, mereka rentan disalahgunakan. Pengembang dapat melakukan perubahan logis yang lebih sedikit atau mungkin memilih cara yang lebih verbos untuk melakukan sesuatu dengan tujuan menggertak ukuran baris kode. Secara umum, metrik ini tidak terlalu baik dalam melacak kemajuan pengembangan, karena banyak dari metrik ini bertentangan dengan meminimalkan masalah perawatan.

Pendekatan yang Lebih Holistik

Selama beberapa tahun sekarang, tim saya dan saya telah berusaha menemukan metrik output yang bermakna yang akan memberi kami kepastian bahwa upaya kami akan diterjemahkan menjadi keuntungan yang sebenarnya.

  1. Waktu ke Pasar untuk Fitur Baru
    Seberapa cepat kita dapat mengirimkan fitur yang sebenarnya berharga bagi pengguna nyata? Ini adalah cara yang lebih dapat diandalkan untuk mengukur throughput daripada perubahan kode mentah, karena membuat kita mempertimbangkan apakah fitur yang kita kirimkan sebenarnya berguna.
  2. Jumlah Insiden Produksi
    Tingkat insiden yang rendah mengimplikasikan kualitas kode yang lebih baik, pengujian yang lebih menyeluruh, dan keputusan arsitektur yang sehat. Insiden produksi yang sering menandakan utang tersembunyi atau sudut pengembangan yang dipotong.
  3. Skor Kemudahan Pemeliharaan Kode
    Kami menggunakan alat otomatis seperti SonarQube untuk mendeteksi duplikasi, kompleksitas, dan kerentanan potensial. Skor yang stabil atau meningkat seiring waktu menunjukkan kode yang lebih sehat, dengan budaya yang menghargai kualitas jangka panjang.
  4. Bagi Pengetahuan Tim
    Alih-alih fokus pada output individu saja, kami memeriksa seberapa banyak pengetahuan yang mengalir. Apakah pasangan mengambil tugas bersama, melakukan tinjauan kode yang menyeluruh, dan mendokumentasikan keputusan arsitektur utama? Tim yang terinformasi dengan baik dapat mengambil masalah secara kolektif.
  5. Peringkat Kepuasan Pelanggan
    Akhirnya, perangkat lunak adalah untuk pengguna. Umpan balik positif, volume tiket dukungan yang rendah, dan tingkat adopsi pengguna yang kuat dapat menjadi indikator yang sangat baik dari produktivitas yang sebenarnya.

Dengan fokus pada metrik yang lebih luas ini, kami tidak hanya mendorong keputusan yang lebih baik tentang cara menulis kode tetapi juga memastikan bahwa prioritas kami tetap sejalan dengan kebutuhan pengguna dan solusi yang dapat dipelihara.

Kekuatan Kebodohan Strategis

Saya dulu berpikir bahwa pengembang hebat adalah mereka yang akan melakukan ribuan dan ribuan baris kode setiap hari. Dengan waktu, saya menemukan bahwa sebenarnya bisa berlawanan. Bahkan, insinyur terbaik sebenarnya akan melakukan apa yang saya sebut “kebodohan strategis.” Alih-alih terjun ke dalam solusi yang rumit yang membutuhkan waktu lama, mereka mengambil waktu untuk menciptakan atau menemukan alternatif yang lebih elegan – satu yang membutuhkan kode yang lebih sedikit, ketergantungan yang lebih sedikit, dan perawatan yang lebih sedikit di masa depan.

Saya ingat sebuah proyek di mana seorang pengembang junior menghabiskan tiga hari untuk mengerjakan skrip pemrosesan data – dengan berat sekitar 500 baris kode. Ini hanya kikuk, tetapi berhasil. Kembali dan mengunjungi lagi sore itu seorang pemimpin tim saya dapat menunjukkan solusi yang ketat, 50 baris, lebih bersih, dan kinerja yang lebih baik juga, untuk boot.

Alat dan Teknik untuk Produktivitas yang Sebenarnya

Membangun lingkungan produktivitas yang sebenarnya – bukan hanya “pekerjaan sibuk” – membutuhkan baik alat yang tepat dan mindset organisasi yang tepat. Selama bertahun-tahun, saya telah bereksperimen dengan berbagai kerangka kerja dan menemukan beberapa strategi yang dapat diandalkan:

  1. Teknik Pomodoro yang Dimodifikasi
    Segmen Pomodoro tradisional 25 menit dapat terasa terlalu singkat untuk tugas pemrograman yang mendalam. Tim saya sering menggunakan blok fokus 45 menit diikuti dengan istirahat 15 menit. Ini mencapai keseimbangan antara periode perhatian yang berkelanjutan dengan waktu istirahat yang diperlukan.
  2. Hybrid Kanban/Scrum
    Kami menggabungkan alur kerja visual dari Kanban dengan siklus iteratif dari Scrum. Dengan menggunakan alat seperti Trello dan Jira, kami membatasi item WIP dan menjadwalkan tugas dalam sprint. Ini mencegah overload peralihan konteks dan menjaga kami fokus pada menyelesaikan tugas sebelum memulai yang baru.
  3. Pelacakan Waktu dan Analisis Hasil
    Mencatat jam dengan alat seperti Toggl dan RescueTime memberikan wawasan tentang jam produktif alami seorang pengembang. Dengan dilengkapi dengan informasi itu, tugas kritis untuk setiap orang dijadwalkan pada jam yang paling produktif dan tidak terbatas pada slot 9-5 yang kaku.
  4. Tinjauan Kode dan Pemrograman Berpasangan
    Budaya kolaboratif cenderung menciptakan hasil yang lebih baik daripada perilaku yang menyendiri. Kami sering memberikan tinjauan kode satu sama lain, berpasangan dari waktu ke waktu, yang membantu kami menangkap masalah lebih awal, menyebarkan pengetahuan, dan menjaga konsistensi dalam basis kode kami.
  5. Integrasi dan Pengujian Berkelanjutan
    Pengujian otomatis dan pipa integrasi berkelanjutan melindungi terhadap periksaan yang terburu-buru, ceroboh yang dapat menghancurkan proyek secara keseluruhan. Tes yang dikonfigurasi dengan baik menandai regressi dengan cepat dan mendorong perubahan yang berpikir dan inkremental.

Membangun Budaya Teknik yang Sehat

Mungkin mitos yang paling merusak adalah bahwa stres dan tekanan secara otomatis mengarah pada kinerja yang lebih tinggi. Beberapa pemimpin masih bersikeras bahwa pengembang unggul di bawah deadline yang ketat, sprint yang konstan, dan rilis yang berisiko tinggi. Dalam pengalaman saya, sementara deadline yang ketat mungkin menciptakan ledakan upaya jangka pendek, stres kronis akhirnya mengarah pada kesalahan, kelelahan, dan masalah moral yang dapat memundurkan proyek bahkan lebih jauh.

Keamanan Psikologis dan Harapan yang Berkelanjutan

Saya telah melihat hasil yang jauh lebih baik di mana keamanan psikologis dipastikan, dan pengembang merasa nyaman mengangkat kekhawatiran, menawarkan untuk memilih solusi lain, dan mengakui kesalahan lebih awal. Kami mempromosikan budaya ini dengan memiliki retrospektif secara teratur, yang tidak menunjuk jari tetapi mengeksplorasi bagaimana proses kami dapat diperbaiki. Kami juga menetapkan harapan yang realistis terkait jam kerja, memungkinkan anggota tim untuk mengambil istirahat dan pergi berlibur tanpa rasa bersalah. Ini bertentangan dengan intuisi, tetapi tim yang beristirahat dengan baik dan dihargai menulis kode berkualitas yang konsisten lebih tinggi daripada tim yang berada di bawah tekanan konstan.

Hari Tanpa Pertemuan dan Blok Fokus

Apa yang berhasil dengan salah satu tim saya sebelumnya adalah pengenalan “Rabu Tanpa Pertemuan.” Pengembang menghabiskan seluruh hari untuk coding, penelitian, atau pengujian tanpa gangguan. Produktivitas melonjak pada hari Rabu itu, dan setiap orang di tim hanya mencintai blok waktu sunyi itu. Kami mengimbanginya dengan jadwal pertemuan penting di hari lain, menjaga mereka singkat dan to the point sehingga kami tidak terjebak dalam diskusi yang berkepanjangan.

Pelajaran dari Studi Kasus Dunia Nyata

Ada banyak contoh di industri teknologi yang lebih luas yang menggambarkan bagaimana adopsi model yang seimbang, berorientasi pada kualitas, mengarah pada produk yang lebih baik. Perusahaan seperti Basecamp (sebelumnya 37signals) telah berbicara secara terbuka tentang konsep kerja yang tenang dan fokus. Dengan membatasi jam kerja dan mencegah lembur, mereka telah merilis produk yang konsisten stabil seperti Basecamp dan HEY dengan desain yang dipikirkan dengan matang. Berbeda dengan startup yang bertekanan tinggi, mereka beriterasi dengan terburu-buru, merilis fitur yang bermasalah, dan membakar kebaikan pengembang di jalur mereka.

Saya melihat satu tim benar-benar mengambilnya. Mereka mengubah semua jadwal di sekitar mereka, membangun istirahat, dan menetapkan batas keras jam. Dalam satu kuartal, skor kepuasan pengembang melompat – tetapi lebih baik lagi, tiket dukungan yang masuk turun dengan beberapa pesanan besarnya.

Mempertanyakan Arti “Produktivitas”

Pada akhirnya, pengalaman saya telah membawa saya untuk mendefinisikan produktivitas dalam teknik perangkat lunak sebagai: mengirimkan nilai yang berkelanjutan kepada pengguna akhir sambil menjaga lingkungan yang sehat untuk tim pengembangan. Ini sangat mudah untuk terjebak oleh output semu, seperti backlog sprint yang terisi penuh atau daftar pesan komit yang panjang. Tetapi di luar yang superficial, kode yang solid dan dapat dipelihara membutuhkan kejelasan mental, kolaborasi yang stabil, dan perencanaan yang dipikirkan dengan matang.

Persamaan yang Seimbang

Rumus untuk kesuksesan yang berkelanjutan menyeimbangkan tujuan yang jelas, alat yang tepat, dan budaya yang mendukung yang peduli dengan kesejahteraan pengembang dan kebutuhan pengguna akhir. Kami dapat membingkai pandangan ini dengan tiga prinsip yang memandu:

  1. Kerja Efektif Lebih dari Kerja yang Diperpanjang: Apa yang benar-benar penting adalah apa yang dikirimkan, bukan berapa banyak jam tim duduk di depan layar.
  2. Metrik Berorientasi Nilai: Pantau metrik terkait dengan hasil, seperti kemudahan pemeliharaan, tingkat cacat, atau kepuasan pengguna.
  3. Peningkatan Budaya Berkelanjutan: Produktivitas yang sebenarnya datang dari perbaikan inkremental dalam cara kerja, tim berkolaborasi, dan kode yang ditulis. Retrospektif, penjadwalan yang fleksibel, berbagi pengetahuan – itulah yang membuat kecepatan yang berkelanjutan mungkin seiring waktu.

Kesimpulan

Produktivitas yang sebenarnya dalam teknik perangkat lunak tidak tentang memadati lebih banyak jam ke dalam setiap hari atau menulis baris kode oleh ratusan untuk mengesankan seorang manajer. Melainkan, itu berarti menciptakan solusi yang kuat, diuji, dan memiliki nilai nyata bagi pengguna dan bertahan dalam ujian waktu. Ini sudah waktunya untuk mempertanyakan mitos ini, seperti pemikiran bahwa lembur mengarah pada kesuksesan atau bahwa coding konstan tanpa istirahat adalah lencana kehormatan tertinggi, dan mendefinisikan kembali apa yang terlihat seperti produktivitas bagi bidang kami.

Perjalanan pribadi mengajari saya bahwa “jam kerja” atau “tiket yang ditutup” – metrik seperti itu dapat menipu. Produktivitas yang sebenarnya datang dari tim yang berenergi, menulis kode yang bertanggung jawab, dan fitur yang sejalan dengan kebutuhan pengguna yang sebenarnya. Itu membutuhkan pendekatan yang holistik: penjadwalan yang dipikirkan, metrik yang bermakna, kebodohan strategis, dan budaya teknik yang kuat yang dihargai untuk kejelasan, kolaborasi, dan kreativitas. Jika kita tetap terbuka untuk investigasi metode baru, membuang asumsi yang telah kehilangan waktu, kita dapat membangun industri teknologi di mana produktivitas mendorong tidak hanya perangkat lunak yang lebih baik.

Denis Ermakov, seorang Insinyur Perangkat Lunak di Techflow, adalah Professional Scrum Master yang bersertifikat dan ICF ACC coach. Memulai karirnya bekerja pada markup HTML di era Netscape Navigator, ia mengelola tim perangkat lunak selama 15 tahun. Kecewa dengan industri, ia sekarang telah menemukan peran baru sebagai insinyur perangkat lunak yang berkontribusi.