Joel Spolsky: Level Abstraksi untuk Pengembang

gambar

11 April 2006

Seorang pria muda tiba di kota. Dia terlihat bagus dan memiliki sejumlah uang di sakunya, mudah baginya untuk menemukan bahasa yang sama dengan wanita.

Dia berbicara sedikit tentang masa lalunya, tetapi jelas bahwa dia menghabiskan banyak waktu di perusahaan besar tanpa jiwa.

Dia tentu ramah dan mudah bergaul, tenang dan percaya diri, tidak sombong. Oleh karena itu, dapat dengan mudah mengambil sedikit pekerjaan dari papan buletin di Kafe lokal untuk programmer. Tetapi dengan cepat kehilangan minat pada proyek-proyek database asuransi, halaman web untuk ibu rumah tangga dan mesin penyelesaian keuangan.

Setahun kemudian, dia menghitung bahwa dia telah mengumpulkan cukup uang untuk membayar pengeluarannya yang sederhana untuk tahun itu. Karena itu, setelah berkonsultasi dengan gembala Jermannya yang setia, ia meletakkan komputer di ruangan yang bermandikan sinar matahari, sebuah apartemen sewaan dan memasang alat yang dipilih dengan cermat untuk bekerja.

Dan dia duduk untuk menulis kode.

Dan kode apa itu. Sempurna, artistik, elegan, tidak ada bug. Antarmuka pengguna meniru proses berpikir seseorang dengan sangat baik sehingga orang-orang yang kepadanya dia menunjukkan kode di Cafe untuk programmer hampir tidak melihat antarmuka pengguna. Ini adalah pekerjaan yang brilian.

Terinspirasi oleh umpan balik dari rekan-rekannya, ia mulai terlibat dalam bisnis dan bersiap untuk menerima pesanan. Kerendahan hatinya mengesampingkan klaim apa pun, dan setelah sebulan situasi di rekening banknya tidak terlihat begitu menggembirakan. Sejauh ini, hanya tiga pesanan yang telah diterima: satu dari ibu, satu dari dermawan anonim di Cafe of Programmer, dan satu diajukan olehnya untuk menguji sistem perdagangan.

Di bulan kedua, pesanan tidak lagi tiba.

Ini mengejutkan dan membuatnya kesal. Di sebuah perusahaan besar, produk-produk baru diciptakan secara teratur, dan bahkan jika mereka kasar dan tidak mencolok, mereka masih dijual dalam jumlah yang wajar. Salah satu produk yang dikerjakannya adalah produk besar.

Setelah beberapa bulan, situasi keuangannya mulai terlihat sedikit goyah. Anjing itu menatapnya dengan sedih. Tidak cukup memahami apa yang terjadi, tetapi melihat bahwa wajahnya terlihat lebih buruk dari biasanya dan dia tampaknya tidak dapat memperoleh kekuatan untuk pergi keluar dengan teman-teman, atau pergi berbelanja untuk mengisi persediaan, atau bahkan berenang.

Suatu pagi, seorang penjual lokal menolak untuk memperpanjang utangnya, dan bankirnya tidak mengangkat telepon untuk waktu yang lama.

Perusahaan besar tidak membalas dendam. Mereka mengenali karyawan yang berbakat dan senang mempekerjakannya kembali dengan gaji yang lebih tinggi. Dia segera terlihat lebih baik, dia memiliki pakaian baru, dan dia mendapatkan kembali kepercayaan diri lamanya. Tetapi ada sesuatu yang hilang. Percikan di matanya. Harapan bahwa dia bisa menjadi tuan atas nasibnya telah sirna.

Kenapa dia tidak berhasil? Dia yakin tahu. "Pemasaran," katanya. Seperti banyak pakar teknis muda, ia cenderung mengatakan hal-hal seperti: "Microsoft memiliki produk yang lebih buruk, tetapi pemasarannya lebih baik."

Istilah "pemasaran", diucapkan oleh pengembang perangkat lunak, berarti semua masalah bisnis ini: semua yang mereka benar-benar tidak mengerti dalam membuat perangkat lunak dan menjualnya.

Faktanya, ini bukan arti pemasaran. Microsoft memiliki pemasaran yang sangat buruk. Dapatkah Anda bayangkan bahwa setelah iklan dinosaurus ini seseorang benar-benar ingin membeli Microsoft Office?

Perangkat lunak adalah percakapan antara pengembang perangkat lunak dan pengguna. Tetapi agar percakapan ini dapat berlangsung, dibutuhkan banyak pekerjaan yang melampaui pengembangan perangkat lunak. Ini tidak hanya membutuhkan pemasaran, tetapi juga penjualan, dan hubungan masyarakat, dan kantor, dan jaringan, dan infrastruktur, dan pendingin udara di kantor, dan layanan pelanggan, dan akuntansi, dan banyak tugas pendukung lainnya.

Tapi apa yang dilakukan pengembang perangkat lunak? Mereka mendesain dan menulis kode, mereka membuat layar, mereka men-debug, mereka mengintegrasikan, dan mereka menguji hal-hal dalam repositori kontrol sumber.

Tingkat di mana seorang programmer bekerja (katakanlah Emacs) terlalu abstrak untuk mendukung bisnis. Pengembang yang bekerja di level abstraksi membutuhkan lapisan implementasi - organisasi yang mengambil kode mereka dan mengubahnya menjadi produk. Dolly Parton, yang bekerja di level “menyanyikan lagu yang bagus”, juga membutuhkan lapisan implementasi yang besar untuk merekam dan memesan ruang konser, mengambil tiket dan menyiapkan peralatan audio, serta mempromosikan catatan dan mengumpulkan biaya.

Setiap perusahaan perangkat lunak yang sukses akan terdiri dari lapisan tipis pengembang perangkat lunak yang didistribusikan di atas struktur administrasi abstrak yang besar.

Abstraksi ada hanya untuk menciptakan ilusi bahwa kegiatan sehari-hari seorang programmer (merancang dan menulis kode, memeriksa kode, debugging, dll.) Adalah semua yang diperlukan untuk membuat produk perangkat lunak dan membawanya ke pasar. Yang membawa saya ke poin paling penting dari esai ini:
Langkah pertama Anda sebagai manajer tim pengembangan perangkat lunak adalah membangun lapisan pengembangan abstrak.

Sebagian besar manajer perangkat lunak baru melewati titik ini. Mereka terus berpikir tentang model manajemen tradisional, perintah-dan-penaklukan yang mereka pelajari dalam film-film Hollywood.

Menurut Command-and-Conquer (Staf Umum), eksekutif mencari tahu ke mana bisnis akan pergi, dan kemudian memberikan perintah yang sesuai kepada letnan mereka untuk memindahkan bisnis ke arah ini. Letnan mereka, pada gilirannya, membagi tugas-tugas menjadi bagian-bagian yang lebih kecil dan memberi perintah untuk pelaksanaannya. Ini berlanjut ke bawah bagan organisasi sampai, pada akhirnya, seseorang di bawah melakukan beberapa pekerjaan. Dalam model ini, programmer adalah gigi di dalam mobil: pengemudi yang melakukan satu bagian dari perintah manual.

Beberapa bisnis benar-benar menempuh rute ini. Anda selalu dapat mengetahui ketika Anda berurusan dengan bisnis seperti itu, karena orang yang Anda ajak bicara sedang melakukan sesuatu yang tidak berarti dan dia tahu ini, dia bahkan dapat khawatir tentang hal itu, tetapi mereka tidak dapat melakukan apa-apa tentang itu. Ini adalah maskapai penerbangan yang kehilangan sejuta mil dari pelanggan selamanya, karena mereka menolak untuk mengubah tiketnya yang tidak dapat dibatalkan, karena ia tidak dapat terbang karena keadaan keluarga. Ini adalah penyedia Internet yang layanannya semakin buruk, dan ketika Anda membatalkan akun Anda, mereka terus menagih Anda, ketika Anda menelepon untuk mengeluh, Anda perlu memanggil nomor berbayar dan menunggu satu jam, dan kemudian mereka masih menolak untuk mengembalikan Anda uang sampai Anda memulai blog tentang seberapa banyak mereka menghisap. Ini adalah produsen mobil Detroit yang sudah lama dilupakan,cara membuat mobil yang mungkin ingin dibeli orang, dan alih-alih beralih dari strategi pasar ke strategi periklanan, seolah-olah satu-satunya alasan kami tidak membeli mobil jelek mereka adalah karena diskonnya tidak cukup besar.

Cukup

Lupakan saja. Sistem komando dan kontrol hierarkis telah diuji, dan itu bekerja selama beberapa waktu di tahun 1920-an, bersaing dengan mendorong gerobak, tetapi tidak cukup baik untuk abad ke-21. Pembuat perangkat lunak harus menggunakan model yang berbeda.

Dalam sebuah perusahaan perangkat lunak, prioritas pertama manajemen adalah menciptakan abstraksi ini untuk para programmer.

Jika di suatu tempat seorang programmer khawatir tentang kursi rusak atau sedang menunggu jawaban dari Dell untuk memesan komputer baru, maka abstraksi telah bocor.

Pikirkan lapisan abstrak perkembangan Anda sebagai kapal pesiar besar, cantik dengan motor yang sangat kuat. Itu dipertahankan tanpa cela. Hidangan gourmet selalu disajikan seperti jarum jam. Pembantu bekerja dua kali sehari di kabin. Grafik navigasi selalu terkini. GPS dan radar selalu berfungsi, dan jika rusak, ada cadangan di bawah geladak. Berdiri di jembatan, Anda memiliki programmer yang benar-benar hanya memikirkan kecepatan, arah, dan apa yang akan terjadi untuk makan siang: tuna atau salmon? Sementara itu, tim besar profesional berjinjit seragam putih kaku berputar di bawah geladak, menjaga semuanya dalam keadaan baik, mengisi tabung gas, kerang kerang, dan menghaluskan serbet di atas meja. Staf pendukung tahu apa yang harus dilakukan, tetapi mereka mengambil sinyal dari orang tua asin mereka,yang mengangguk sedikit ke arah tertentu untuk mengoordinasikan seluruh simfoni sehingga programmer bisa mengabstraksi dari segala sesuatu yang menyangkut kapal pesiar, kecuali untuk kecepatan, arah dan apa yang mereka inginkan untuk makan siang.

Manajemen perusahaan perangkat lunak terutama bertanggung jawab untuk menciptakan abstraksi untuk programmer. Kami membangun kapal pesiar, kami melayani kapal pesiar, kami kapal pesiar, tetapi kami tidak mengoperasikan kapal pesiar. Semua yang kami lakukan adalah memberikan abstraksi kepada programmer, sehingga mereka dapat membuat kode yang sangat baik, dan agar kode ini dapat jatuh ke tangan pelanggan yang mendapat manfaat dari itu.

Pemrogram membutuhkan repositori Subversion. Mendapatkan repositori Subversion berarti bahwa Anda memerlukan jaringan dan server yang harus dibeli, diinstal, dicadangkan, dan diberi daya tanpa gangguan, dan server menghasilkan banyak panas dan harus ada di ruangan dengan AC tambahan, dan AC harus memiliki akses ke luar. bangunan, yang berarti memasang unit kipas seberat 80 pon di dinding di luar gedung, yang membuat pemilik bangunan gelisah, sehingga mereka perlu membawa pembangun mereka untuk menyetujui di mana unit pendingin udara akan dipasang (solusi): (di dinding eksternal, di sini, di 18 lantai, di tempat yang paling tidak nyaman), dan pemilik memanggil pengacara mereka, karena kita harus masuk agar diizinkan untuk melakukan ini, dan kemudian orang-orang instalasi AC dengan tali-temali muncul,yang tidak nyaman, yang membuat mandor gugup, dan itu tidak memungkinkan mereka untuk keluar dari jendela lantai 18 di sabuk Mattel yang terbuat dari 1/2 1/2 plastik merah muda, saya bersumpah kepada Tuhan, itu bisa menjadi sabuk Disc Barbie, dan seseorang harus memanggil pekerja konstruksi lagi agen dan mencari tahu apa yang tiba-tiba mereka sadari setelah 12 minggu dalam proyek konstruksi bahwa mereka akan memerlukan amandemen lain untuk kontrak pendingin udara ini, yang mereka tahu sebelum Natal, dan mereka hanya menduga bahwa jika programmer Anda menghabiskan setidaknya satu menit berpikir tentang ini, maka ini sudah terlalu banyak.apa yang tiba-tiba mereka sadari setelah 12 minggu dalam proyek konstruksi bahwa mereka akan memerlukan amandemen lain untuk kontrak pendingin ruangan ini, yang mereka ketahui sebelum Natal, dan mereka hanya menduga bahwa jika programmer Anda menghabiskan setidaknya satu menit memikirkannya, maka ini sudah terlalu banyak.apa yang tiba-tiba mereka sadari setelah 12 minggu dalam proyek konstruksi bahwa mereka akan memerlukan amandemen lain untuk kontrak pendingin ruangan ini, yang mereka ketahui sebelum Natal, dan mereka hanya menduga bahwa jika programmer Anda menghabiskan setidaknya satu menit memikirkannya, maka ini sudah terlalu banyak.

Untuk pengembang perangkat lunak di tim Anda, ini semua harus disarikan, seperti memasukkan svn commit di baris perintah.

Itu sebabnya Anda harus memiliki manajemen.

Ini untuk hal-hal yang tidak dapat dihindari oleh perusahaan, tetapi jika Anda memiliki programmer yang khawatir tentang hal ini, manajemen telah gagal, seperti halnya kapal pesiar 100 kaki akan gagal jika pemilik jutawan harus turun ke ruang mesin dan perbaiki mesin.

Perusahaan khas Anda didirikan oleh mantan vendor perangkat lunak, di mana semuanya penjualan, dan kami semua ada untuk meningkatkan penjualan. Perusahaan-perusahaan ini tidak dapat mengambil kendali sendiri karena mereka membangun perangkat lunak versi 1.0 (dengan satu atau lain cara), dan kemudian benar-benar kehilangan minat dalam mengembangkan perangkat lunak baru. Tim pengembangan mereka kelaparan atau tidak ada, karena tidak pernah terpikir oleh siapa pun untuk membangun versi 2.0 ... yang dapat dilakukan manajemen hanyalah meningkatkan penjualan.

Di sisi lain, Anda memiliki perusahaan yang dibuat oleh mantan programmer. Perusahaan-perusahaan ini lebih sulit ditemukan, karena dalam kebanyakan kasus mereka berperilaku diam-diam, menulis kode di suatu tempat di ruang bawah tanah yang tidak pernah ditemukan siapa pun, dan karena itu mereka diam-diam menghilang begitu saja setelah Great Ruby Rewrite.

Kedua contoh ini dapat dengan mudah dihancurkan oleh perusahaan yang dikelola oleh programmer dan terorganisir untuk menempatkan programmer di kursi pengemudi, tetapi yang memiliki abstraksi yang sangat baik, melakukan semua kerja keras mengubah kode menjadi produk.

Programmernya paling produktif dengan akun pribadi yang tenang, komputer yang luar biasa, jumlah minuman yang tidak terbatas, suhu sekitar 20 hingga 23 derajat Celcius, tanpa silau di layar, kursi yang sangat nyaman sehingga Anda tidak merasakannya, administrator yang membawa buku pesanan dan pesanan manual dan buku-buku, oleh seorang administrator sistem yang membuat Internet dapat diakses seperti oksigen, seorang penguji untuk menemukan kesalahan yang tidak bisa mereka lihat, seorang perancang grafis untuk membuat layar mereka indah, sebuah tim pemasar, sehingga massa ingin mendapatkan produk mereka, sebuah tim penjual untuk memastikan bahwa massa bisa mendapatkan produk ini, dukungan teknis, yang membantu pelanggan membuat produk bekerja dan membantu programmer untuk memahami masalah apa yang menyebabkan panggilan dukungan teknis,dan sekitar selusin fungsi pendukung dan administrasi lainnya, yang dalam perusahaan tipikal, menambahkan hingga sekitar 80% dari gaji. Bukan kebetulan bahwa tentara Romawi memiliki rasio empat pelayan per prajurit. Ini bukan dekadensi. Tentara modern mungkin beroperasi dengan rasio 7: 1. (Inilah yang diajarkan Pradeep Singh kepada saya hari ini: jika hanya 20% dari staf Anda adalah programmer, Anda dapat menghemat 50% dari gaji dengan meng-outsourcing-kannya ke India, lalu berapa banyak keunggulan kompetitif yang Anda dapatkan dari penghematan 10% ini? )(Inilah yang diajarkan Pradeep Singh kepada saya hari ini: jika hanya 20% dari staf Anda adalah programmer, Anda dapat menghemat 50% dari gaji dengan meng-outsourcing-kannya ke India, lalu berapa banyak keunggulan kompetitif yang Anda dapatkan dari penghematan 10% ini? )(Inilah yang diajarkan Pradeep Singh kepada saya hari ini: jika hanya 20% dari staf Anda adalah programmer, Anda dapat menghemat 50% dari gaji dengan meng-outsourcing-kannya ke India, lalu berapa banyak keunggulan kompetitif yang Anda dapatkan dari penghematan 10% ini? )

Tanggung jawab utama manajemen adalah menciptakan ilusi bahwa perusahaan yang berurusan dengan perangkat lunak dapat dimulai dengan menulis kode, karena itulah yang dilakukan oleh programmer. Dan meskipun akan lebih baik untuk memiliki programmer yang juga berpengalaman dalam penjualan, desain grafis, administrasi sistem dan memasak - ini tidak realistis. Seperti mengajar babi bernyanyi, dibutuhkan waktu Anda dan mengganggu babi.

Microsoft melakukan pekerjaan yang sangat baik dalam menciptakan abstraksi ini sehingga lulusan Microsoft terkenal sulit untuk menciptakan perusahaan. Mereka tidak bisa percaya berapa banyak yang telah berlalu tanpa sepengetahuan mereka, dan mereka tidak tahu bagaimana membuatnya kembali.

Tidak ada yang mengharapkan Dolly Parton tahu cara memasang mikrofon. Di belakangnya terdapat jaringan manajer, musisi, teknisi rekaman, perusahaan rekaman yang luar biasa, artis tamu, penata rambut, dan humas yang ada untuk menciptakan abstraksi yang, ketika dia bernyanyi, adalah semua yang perlu jutaan orang untuk mendengarkan lagunya. . Semua staf pendukung dan manajemen yang memungkinkan pekerjaan Dolly Parton dapat melakukan pekerjaan mereka dengan cara terbaik, memberikan abstraksi yang paling sempurna: ilusi paling sempurna yang dinyanyikan Dolly untuk kita. Ini lagunya. Ketika Anda mendengarkannya di iPod Anda, ada infrastruktur besar yang memungkinkan hal ini, tetapi hal terbaik yang dapat dilakukan infrastruktur adalah sepenuhnya menghilang. Berikan abstraksi yang digunakan Dolly Parton untuk kita secara pribadi.




gambar
Pelajari detail tentang cara mendapatkan profesi yang dicari dari awal atau Tingkatkan keterampilan dan gaji dengan mengambil kursus online SkillFactory:




All Articles