Tembak dan Maju

From The Joel on Software Translation Project

Revision as of 17:39, 6 September 2007 by Andika (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

6 Januari 2002. Original English article

Ada satu saat dimana saya tidak dapat menyelesaikan apapun.

Tentu, saya datang ke kantor, melamun, memeriksa emailku setiap sepuluh detik, baca web, bahkan melakukan beberapa tugas yang tidak perlu berpikir seperti membayar tagihan American Express. Namun proses untuk kembali ke flow untuk menulis program tidak kunjung terjadi.

Saat-saat yang tidak produktif ini biasanya berlangsung selama satu atau dua hari. Namun pernah juga beberapa kali di dalam karir saya sebagai seorang pengembang dimana saya tidak dapat menyelesaikan apapun selama berminggu-minggu. Seperti yang mereka katakan, saya sedang tidak dalam flow. Saya sedang tidak di dalam zona. Saya sedang tidak berada dimanapun.

Setiap orang mengalami perubahan suasana hati; bagi orang-orang tertentu ada yang ringan, untuk orang lain, bisa jadi perubahannya lebih jelas atau bahkan tidak berfungsi sama sekali. Dan saat-saat yang tidak produktif tersebut nampaknya berhubungan dengan suasana hati yang murung.

Hal ini membuatku berpikir tentang para peneliti yang mengatakan bahwa pada dasarnya orang tidak dapat mengendalikan apa yang mereka makan, jadi setiap usaha untuk diet hanya terbatas untuk jangka pendek dan berat badan mereka akan naik turun kembali ke berat alami. Mungkin sebagai seorang pengembang software, saya sungguh tidak dapat mengendalikan kapan saya bisa produktif, dan saya harus mengganti saat lambat saya dengan saat saya sedang cepat dan berharap bahwa secara rata-rata akan ada cukup baris kode yang dihasilkan agar saya dapat dipekerjakan.

Yang membuatku gila adalah sejak pekerjaan pertamaku, saya telah menyadari bahwa sebagai pengembang, rata-rata waktu produktif untuk membuat kode adalah sekitar dua sampai tiga jam sehari. Saat saya menghadiri pelatihan musim panas di Microsoft, seorang teman pelatihan mengatakan pada saya bahwa dia hanya benar-benar bekerja dari jam 12 sampai 17 setiap hari. Lima jam, dikurangi makan siang, dan timnya mencintai dia karena dia tetap menghasilkan jauh lebih banyak di atas rata-rata. Saya menyadari hal yang sama juga benar. Saya merasa sedikit bersalah saat saya melihat betapa kerasnya setiap orang kelihatan bekerja, dan saya bekerja sekitar dua atau tiga jam yang berkualitas dalam sehari, dan saya tetap selalu menjadi anggota tim yang paling produktif. Itu mungkin merupakan alasan bagi Peopleware dan XP yang memaksa untuk menghilangkan kerja lembur dan bekerja disiplin 40 jam setiap minggu, mereka mengetahui dengan pasti bahwa hal tersebut tidak akan mengurangi hasil sebuah tim.

Tetapi yang merisaukan saya bukanlah hari-hari di mana saya "hanya" memiliki dua jam untuk menyelesaikan sesuatu. Melainkan hari-hari di mana saya tidak dapat melakukan apapun.

Saya telah lama memikirkan hal ini. Saya mencoba mengingat saat saya menyelesaikan pekerjaan paling banyak dalam karir saya. Mungkin saat Microsoft memindahkan saya ke dalam kantor baru yang indah dengan jendela besar bergambar dan memperlihatkan halaman batu yang cantik penuh dengan pohon ceri yang sedang bersemi. Setiap hari adalah bekerja. Selama berbulan-bulan saya bekerja tanpa henti mengerjakan spesifikasi detail untuk Excel Basic -- segundukan kertas berisikan perincian yang luar biasa membahas sebuah model object dan lingkungan pemrograman yang sangat besar. Saya hampir tidak pernah berhenti. Saat saya harus pergi ke Boston untuk MacWorld, saya membawa laptop, dan mendokumentasikan Class Window sambil duduk di teras HBS yang menyenangkan.

Sekali anda sudah masuk ke dalam flow, untuk terus maju tidaklah sulit. Banyak hari-hari saya berjalan seperti ini: (1) Masuk kerja (2) periksa email, baca web, dll. (3) memutuskan bahwa saya sebaiknya makan siang dulu sebelum bekerja (4) kembali dari makan siang (5) cek email, baca web, dll (6) akhirnya memutuskan bahwa saya sudah harus mulai (7) cek email, baca web, dll (8) memutuskan lagi bahwa saya sungguh harus mulai bekerja (9) jalankan editor dan (10) menulis kode tanpa berhenti sampai saya tidak menyadari sudah pukul 19:30.

Kelihatannya ada bug di antara langkah 8 dan langkah 9, karena saya tidak selalu dapat melewati jurang tersebut.

Bagi saya, hanya untuk memulai merupakan satu-satunya masalah besar. Sebuah benda diam akan cenderung tetap diam. Ada sesuatu yang sangat berat di dalam otak saya yang luar biasa sulit untuk mencapai kecepatan tertentu, namun sekali dia sudah bergulir pada kecepatan penuh, tidak dibutuhkan usaha apa pun untuk mempertahankan tetap bergerak. Seperti sebuah sepeda yang diisi dengan perbekalan untuk perjalanan sepeda lintas alam -- saat anda pertama kali mengayuh sepeda dengan semua gigi-giginya, sulit dipercaya begitu besar usaha yang diperlukan untuk bergulir, namun sekali anda telah melaju, rasanya seperti semudah mengendarai sepeda tanpa gigi.

Mungkin kunci dari produktivitas adalah: langsung mulai saja. Mungkin saat melakukan pemrograman berpasangan berhasil karena bila anda menjadualkan sesi pemrograman berpasangan dengan teman anda, anda saling mendorong satu sama lain untuk mulai.

Ketika saya menjadi anggota pasukan terjun payung Israel, seorang jendral mampir untuk memberikan kami ceramah sedikit mengenai strategi. Dalam pertempuran infantri, dia katakan kepada kami, hanya ada satu strategi: Menembak dan Maju. Anda bergerak mendekati musuh sambil menembakkan senjata anda. Tembakan tersebut memaksa musuh untuk menundukkan kepala sehingga dia tidak dapat menembak anda. (Itu yang dimaksud pasukan saat mereka berteriak "lindungi saya". Itu artinya: "tembak musuh kita sehingga dia harus menunduk dan tidak dapat menembak saat saya melintasi jalan ini". Itu berhasil.) Gerakan tersebut akan memungkinkan anda untuk menaklukkan teritori dan mendekati musuhmu, di mana tembakan anda akan lebih mudah mengenai sasaran. Jika anda tidak bergerak, musuh akan menentukan apa yang terjadi, yang bukan merupakan hal yang bagus. Jika anda tidak menembak, musuh yang akan menembaki anda, mematikan anda.

Saya ingat hal tersebut untuk waktu yang lama. Saya menyadari bagaimana hampir semua bentuk strategi militer, dari pertempuran di udara sampai manuver kelautan skala besar, didasari pada ide menembak dan maju. Saya memerlukan lima belas tahun lagi untuk menyadari bahwa prinsip menembak dan maju merupakan cara anda menyelesaikan sesuatu di dalam kehidupan. Anda harus maju ke depan sedikit, setiap hari. Tidak perduli apakah kode anda cacat dan banyak bug dan tidak ada yang menginginkannya. Jika anda maju terus, menulis kode dan memperbaiki bug secara konstan, waktu berada di pihak anda. Perhatikan saat kompetitor anda menembaki anda. Apakah mereka hanya ingin memaksa anda untuk tetap sibuk bereaksi terhadap serbuan mereka, sehingga anda tidak dapat maju?

Pikirkan mengenai sejarah dari strategi akses data yang dihasilkan oleh Microsoft. ODBC, RDO, DAO, ADO, OLEDB, sekarang ADO.NET - Semuanya baru! Apakah semua teknologi ini mengesankan? Hasil dari sebuah kelompok pendesain yang tidak kompeten sehingga perlu menemukan cara untuk akses data setiap tahun? (Mungkin itu ada benarnya.) Namun hasil akhirnya adalah hanya tembakan perlindungan. Para pesaing tidak mempunyai pilihan selain menghabiskan waktu mereka untuk porting dan mengikuti, sehingga mereka tidak mempunyai waktu untuk menulis fitur baru. Perhatikan baik-baik pada lansekap software. Perusahaan yang berhasil adalah yang tidak terlalu tergantung dengan perusahaan besar dan tidak perlu menghabiskan seluruh siklus mereka untuk mengejar dan implementasi ulang dan memperbaiki bug yang hanya muncul di Windows XP. Perusahaan yang melakukan kesalahan adalah yang menghabiskan waktu terlalu banyak untuk membaca pertanda dari daun teh untuk menebak arah Microsoft di masa depan. Orang khawatir dengan .NET dan memutuskan untuk menulis ulang seluruh arsitektur mereka untuk .NET karena mereka kira mereka harus melakukan hal tersebut. Microsoft sedang menembaki anda, dan itu hanya tembakan untuk melindungi agar mereka dapat bergerak maju dan anda tidak bisa, karena ini adalah cara permainan ini dimainkan. Apakah anda akan mendukung Hailstorm? SOAP? RDF? Apakah anda mendukung mereka karena customer anda membutuhkannya, atau karena seseorang sedang menembaki anda dan anda merasa anda harus merespon? Tim penjual dari perusahaan besar mengerti mengenai tembakan untuk melindungi. Mereka mengatakan kepada customer mereka: "OK, anda tidak perlu membeli dari kami. Beli dari vendor yang terbaik. Namun pastikan bahwa anda mendapatkan produk yang mendukung (XML / SOAP /CDE / J2EE) karena kalau tidak, anda akan Terkunci di dalam peti." Lalu saat ada perusahaan kecil mencoba menjual kepada orang tersebut, hal yang mereka dengar adalah CTO yang mem-beo "Apakah anda memiliki J2EE?" Dan mereka akan menghabiskan semua waktu mereka untuk membangun J2EE bahkan jika hal tersebut tidak juga membuat penjualan, dan tidak memberikan mereka kesempatan untuk menampilkan diri mereka. Ini menjadi sebuah daftar fitur -- anda melakukan hal tersebut karena anda mau daftar tersebut menyebutkan bahwa anda memilikinya, namun tidak ada orang yang akan memakai atau memerlukannya. Dan ini adalah tembakan untuk melindungi.

Menembak dan Maju, untuk perusahaan kecil seperti milik saya, mempunyai 2 arti. Anda harus memiliki waktu di pihak anda, dan anda harus maju terus setiap hari. Cepat atau lambat anda akan menang. Hal yang saya lakukan kemarin adalah memperbaiki sedikit warna latar di FogBUGZ. Cukup bagus. Ini semakin baik setiap saat. Software kami semakin hari semakin baik dan kami memiliki lebih banyak lagi pelanggan dan itu semua yang penting. Sampai perusahaan kami sebesar Oracle, kami tidak perlu memikirkan strategi besar. Kami hanya perlu datang setiap pagi dan dengan cara apa pun, menjalankan editor.

Personal tools