Kisah pertama. Surat fatal
[
Asli ]
Sekali waktu,
George mendapat pekerjaan di kantor Initech. Perusahaan baru saja menyewa beberapa lantai di gedung perkantoran lama yang baru-baru ini pindah dari kategori penurunan perkotaan ke kedai kopi elegan di lantai dasar dan aroma semir sepatu dan pelapis kulit segar pada orang lain.
Itu adalah ruang yang luas, dan George berada pada tahap karirnya ketika ia seharusnya memiliki kantor terpisah dengan pemandangan jalan.
Tugas pertamanya adalah untuk memperbaiki masalah dalam versi Mac dari perangkat lunak perusahaan. Itu tampak sempurna di Windows, tetapi bug rendering font muncul di OSX. Bug ini sulit ditemukan, tetapi George mungkin seorang detektif di kehidupan sebelumnya, jadi dia siap untuk tes ini.
Petunjuk paling penting adalah sejarah kontrol versi. Selama tiga tahun terakhir, lima pengembang telah mengerjakan produk. Tampaknya masing-masing dari mereka berada di perusahaan selama sekitar empat bulan, dan kemudian pergi. Selama berbulan-bulan mereka pergi tanpa perubahan, kemudian pengembang baru datang dan siklus berulang lagi. Seperti yang diketahui George, nama-nama mereka muncul setiap saat ketika ia mencoba mencari tahu fungsi, pekerjaan, dan penyebab bug produk.
Karena aplikasi ini bersifat lintas platform, pengembang mengimplementasikan font loader dan renderer mereka sendiri. Setidaknya itulah yang dia pikirkan. Struktur internal font adalah hal yang berbahaya dan membingungkan, dan ini tercermin dalam kode. Itu juga mencerminkan fakta bahwa berbagai programmer, yang tidak menjaga integritasnya, mengerjakannya satu per satu.
Itu kekacauan .
Dalam kode tersebut, George melihat banyak aspek yang tanpa keraguan buruk - panggilan tidak aman untuk
memcpy
,
malloc
tanpa
free
, pointer aritmatika, yang bekerja lebih pada kepercayaan daripada logika. Namun ternyata, tidak ada yang menjadi sumber masalah font ini.
Frustrasi, George memutuskan untuk mendekatinya dari sisi lain. Pada layar dengan rendering bug, selalu ada satu atau dua font khusus. George mengunggah font ke utilitas pemeriksaan font Adobe dan Microsoft, dan melihat laporan sejumlah kesalahan.
Kode unduhan font buruk, tetapi font itu sendiri bahkan lebih buruk. Setelah mengidentifikasi masalah, George memberi tahu atasannya bahwa font perlu diperbaiki. Bos menyerahkannya kepada presiden perusahaan.
Keesokan harinya, bos mendekati George: "Presiden ingin bertemu dengan Anda,
segera ."
Kantor presiden lebih seperti ruang konferensi, tetapi tanpa meja konferensi. Sebuah ruangan panjang, di satu sisi meja, jendela di seluruh dinding dan pemandangan sungai. Seorang presiden yang marah sedang duduk di mejanya.
“Ada apa dengan kalian berdua? George, Anda sudah berada di sini kurang dari empat bulan, dan sudah menyia-nyiakan waktu saya - apakah Anda menyia-nyiakan
uang saya untuk beberapa ide gila tentang masalah
font ? "
"Tapi itu. Saya bisa
menunjukkan . "
“Dalam versi Windows, font berfungsi dengan baik! Masalahnya harus di neraka. Saya tahu berapa banyak Anda dibayar. Mungkin aku harus mengambil kalkulator dan menghitung berapa biaya perusahaan untuk berburu hantu ini? ” Dia meninju meja sehingga kalkulator di sebelah keyboard melonjak sedikit.
Tuduhan itu berlanjut, tetapi George sudah tahu apa yang akan dia lakukan setelah pertemuan itu. Pada akhir hari, ia mengembalikan lencana dan laptop kerjanya bersama dengan pernyataan pengunduran diri yang kasar dan jujur.
Setelah cuti pendek yang tidak dibayar, George mendapat pekerjaan baru. Tahun-tahun berlalu, dan dia sudah mulai melupakan waktu yang dihabiskan di Initech. Tetapi suatu hari dia melihat pesan tentang rilis patch kritis kerentanan Microsoft Windows. Ternyata, "kode pemrosesan font pihak ketiga" dapat menyebabkan eksekusi kode arbitrer di beberapa perpustakaan Windows. Setelah melakukan sedikit riset, George mengkonfirmasi dugaannya: kode Initech-lah yang menyebabkan masalah. Selain itu, biner Initech terakhir dirilis kembali pada 2008 -
sebulan setelah dia meninggalkan perusahaan.
Kisah kedua. Kerjakan prosesnya, juga di bawah dan di atasnya
[
Asli ]
Ketika
Kevin mendapat pekerjaan di Townbank pada akhir 1980-an, ia mendapati dirinya dalam situasi yang sama dengan ribuan programmer lain yang baru dicetak sebelum dan sesudahnya: seorang programmer korporat tidak hanya menulis kode - ia harus tetap berpegang pada proses itu.
Prosesnya berbeda dari perintah ketat agama-agama dunia hanya dalam tugasnya adalah menjaga integritas kode. Kemuliaan bagi proses, semoga diberkati, prosesnya baik, Anda harus selalu mematuhi proses itu, dan, yang terpenting, proses itu bermanfaat bagi Anda!
Bagi kebanyakan pengembang, prosesnya tidak terlalu buruk. Anda hanya perlu membiasakan diri dengannya. Isi formulir, dapatkan persetujuan, daftarkan rencana pengujian, tulis dokumentasi perakitan - semua ini sudah beres. Namun, seperti yang segera diketahui Kevin, ada proses di Townbank yang tidak bisa diadaptasi oleh veteran maupun pemula.
Faktor Siwa
Tugas pertama Kevin adalah bekerja dalam kelompok yang terlibat dalam proyek terbesar saat itu dari departemen TI Townbank - migrasi skala besar dari mainframe yang menua secara bertahap ke beberapa sistem VAX baru. Secara teori, prosesnya terlihat bagus - para konsultan bertemu dengan klien dan menemukan sistem mana yang akan ditransfer, perlu untuk menulis spesifikasi, menetapkan tugas kepada pengembang, departemen kontrol kualitas harus mengkonfirmasi bahwa sistem baru bekerja seperti yang lama, setelah itu kode akan dimasukkan ke dalam produksi .
Ketika manajer proyek mengembangkan proses, diharapkan bahwa tindakan yang tidak terduga akan selalu mengambil hanya sebagian kecil dari total biaya atau jumlah waktu yang diperlukan untuk mengimplementasikan fungsi tersebut, dan pada awalnya memang demikian. Namun, proyek terus berkembang, dan semakin banyak lingkungan yang dioperasikan, semakin banyak Kevin dan kawan-kawan pengembangnya harus menambah waktu ekstra untuk perkiraan mereka. Secara resmi, para pengembang menyebutnya berbeda - menguji integrasi sistem, mengkonfigurasi server, menguji kompatibilitas media, tetapi di antara mereka mereka menyebut penundaan tersebut dengan nama asli mereka: "Shiva factor."
Bisnis serius!
Bukan berarti Shiva adalah administrator sistem yang tidak kompeten atau tidak berpengalaman - dalam hal apa pun. Faktanya, ketika Townbank memutuskan untuk bermigrasi dari mainframe ke VAX, nama Shiva berada di awal daftar orang yang sangat pendek yang dapat menangani migrasi infrastruktur tersebut. Shiva mengambil masalah ini dengan semua tanggung jawab, memperkenalkan kebijakannya sendiri yang dapat membantu menghilangkan kelemahan proses. Misalnya, setiap pagi, semua pengembang, analis, atau karyawan departemen kontrol, sebelum memasuki hari Rabu, harus benar-benar menandatangani di papan tulis di kantor Shiva untuk mengkonfirmasi keberadaan fisik mereka. Selain itu, merasa bahwa pelacakan tindakan pengembang dilaksanakan dengan detail yang tidak cukup, ia memperkenalkan perlindungan kontrol versi: untuk setiap perubahan kode dan transfer antar lingkungan, diperlukan memo. Dan semua perubahan seharusnya dilakukan oleh ID penggunanya. Dan dari terminalnya.
Pada hari yang tenang, perubahan kecil bisa dilakukan hanya dalam satu hari, tetapi hari tenang sering jatuh pada hari libur atau akhir pekan. Pengembang yang terganggu mengeluh kepada manajemen senior, dengan alasan bahwa kebijakan ini memperlambat proyek dan tampaknya sama sekali tidak berguna. Sebagai tanggapan, manajemen mengangkat bahu mereka - Shiva menetapkan tujuannya di awal proyek - lingkungan yang aman, terlindungi dari kontaminasi silang dengan kode lain dan dari ketidakmampuan pengembang. Pada akhirnya, server VAX masih baru, dan bahkan banyak pengembang senior belum sepenuhnya menguasainya.
Massa bergumam dan mengutuk nasib, tetapi alih-alih memberontak, menggulingkan Siwa dan mengakhiri pemerintahannya yang kejam, semua orang mengundurkan diri dan terus bekerja. Terlepas dari hambatan dan upaya Siwa, proses berlanjut, tetapi ada satu situasi yang tampaknya diabaikan oleh Siwa - bagaimana jika ia sendiri tidak dapat diakses?
Asisten programmer kecil
Meskipun terminal Kevin menunjukkan bahwa ia bekerja di klon lingkungan produksi, nama klien Nosmo King dan Joe Blow memperjelas bahwa ia telah membuat kesalahan besar - aplikasi tersebut secara keliru terhubung ke basis data lingkungan pengembangan, dan setelah makan siang seharusnya diuji. departemen kontrol kualitas. Dalam situasi normal, akan lebih mudah untuk memperbaiki kesalahan - untuk membuat perubahan pada file konfigurasi di lingkungan pengembangan dan melanjutkan pekerjaan, tetapi nasib akan menyukai Siwa berada di pertemuan panjang dan akan muncul hanya pada hari berikutnya.
Berharap Shiva akan kembali lebih awal, Kevin pergi ke mejanya, tetapi hanya melihat kursi kosong. Namun, keyboard Shiva menarik perhatiannya. Huruf A, S, V, H dan saya dihapus lebih dari yang lain. Kevin tahu bahwa Siwa mabuk dengan kekuatan, tetapi apakah dia begitu narsis sehingga dia siap untuk mencetak namanya lagi dan lagi? ... Atau mungkin ini adalah petunjuk? Untuk bersenang-senang, Kevin pergi ke baris perintah dan memasukkan "Siwa" sebagai nama pengguna dan kata sandi. Berharap Siwa bisa memasuki kantor kapan saja, Kevin mengklik "Enter" dan terkejut bahwa dia bisa menyelesaikan entri.
Itu luar biasa. Itu bagus. Kevin tahu bahwa dia perlu berbagi penemuannya dengan seseorang. Dia menceritakan hal ini kepada salah seorang veteran, yang dulunya adalah mentornya, tetapi reaksinya datang sebagai kejutan bagi Kevin.
Ternyata kombinasi nama pengguna dan kata sandi Shiva adalah "rahasia" favorit Townbank, yang telah dikenal sejak Shiva bekerja sebagai administrator mainframe.
"Sehingga Shiva tidak mengenali," pengembang lain yang bahkan lebih berpengalaman menjelaskan kepada Kevin, "kami memainkan game ini setiap kali kami meningkatkannya."
"Ngomong-ngomong, untuk masa depan," lanjutnya, "jika kamu tidak ingin ditangkap dan dihancurkan oleh kehidupan orang lain, maka kamu harus masuk dari terminalmu, dan BUKAN dari kantornya."
Cerita ketiga. Bicaralah bahasa Yunani kepada saya
[
Asli ]
Beberapa dekade yang lalu, bahkan sebelum munculnya printer laser, sistem operasi grafis dan format gambar yang bebas perangkat,
Gus bekerja di departemen TI di perguruan tinggi setempat. Sebagai proyek pribadi untuk saat-saat downtime, ia memutuskan untuk mencari cara mencetak teks dalam bahasa Yunani. Sekitar seminggu kemudian, ia menyusun program yang mampu mencetak teks Yunani klasik ke printer.
Bos Gus bekerja sebagai manajer TI, tetapi meskipun demikian, ia ternyata menjadi spesialis dalam filologi kuno. Dia tidak pernah melihat teks Yunani dicetak pada printer biasa, dan dia senang. Bos memberitahu teman-temannya tentang hal itu, mereka memberi tahu mereka sendiri, dan seterusnya. Segera dunia para sarjana Yunani klasik berubah menjadi simposium yang antusias dan berisik.
Gus pernah menerima email dari seorang profesor perguruan tinggi yang tidak dikenal di Arizona. Dia mendengar dari Ketua Gus tentang program mitos yang luar biasa. Bisakah dia mendapatkannya juga?
Gus dengan senang hati akan setuju, tetapi muncul masalah. Programnya ditujukan untuk versi sebelumnya dari sistem operasi VAX / VMS dan kompilator Pascal, dan itu menghasilkan teks ke satu printer VERSAMOD-200 tertentu, yang dapat dialihkan ke mode matriks,
dan ke driver cetak tertentu, yang dengan rapi ditambal dengan kode biner, agar tidak merusak gambar matriks. Gus ragu bahwa profesor memiliki pengetahuan teknis yang memadai untuk menghargai penjelasannya, jadi dia menjawab dengan sopan dan tanpa masuk ke detail teknis: maaf, tetapi program itu tidak akan bekerja pada mesin lain.
Seminggu kemudian, seorang bos datang ke mejanya, menyebut-nyebut temannya dari Arizona, dan dengan lembut bertanya kepada Gus apakah dia bisa menemukan cara untuk mengiriminya program. Upaya Gus untuk menjelaskan kemustahilan menjalankan kode pada komputer lain di dunia belum terdengar.
“Kamu jenius, Gus! Saya yakin Anda akan menemukan sesuatu. Terima kasih sebelumnya! ”, - puas dengan optimismenya sendiri, bos pergi.
Gus mulai berpikir bagaimana ia dapat memenuhi, atau setidaknya setengah memenuhi, permintaan bos. Akhirnya, dia mendapat ide. Dia memasuki baris perintah komputernya:
DUMP /HEX "PRINTGREEK.EXE" /LIST=VERSAMOD-200
.
Segera,
tumpukan heksadesimal dari programnya terlihat seperti kertas. Gus mengumpulkan cetakan dengan senyum dan pergi ke kantor bos. “Ini dia! Ini programnya, seperti yang Anda minta. "
"Oh!" Bos itu tampak terkejut, tetapi pengertian.
"Jika mereka memiliki masalah dengan instalasi, maka biarkan mereka menghubungi saya dan saya akan membantu," kata Gus.
“Hebat! Terima kasih banyak! ”, Bos melirik meja, mencari amplop surat yang cocok.
Beberapa saat kemudian, seorang rekan IT kami yang terhormat di Arizona diserahkan dan diperintahkan untuk menginstal tempat sampah ini yang dicetak di atas kertas. Dia pasti mengalami momen yang agak mengejutkan di WTF, tetapi dia jelas berhasil. Setidaknya tiga puluh tahun telah berlalu sejak itu, dan Gus tidak pernah mendengar pertanyaan dari profesor atau staf perguruan tinggi lainnya. Mungkin seseorang baru saja membuat kesepakatan dengan Hades atau meminta Kronos untuk mentransfernya pada saat pencetakan karakter khusus tidak lagi seperti tenaga kerja Sisyphus.
Kisah keempat. Faks Darurat
[
Asli ]
Faks sudah ketinggalan zaman pada tahap pengembangan teknologi saat ini. Mereka diciptakan
lebih dari selusin tahun lebih awal dari telepon, tetapi meskipun ada kemajuan besar dalam teknologi pemindaian dan email, mereka masih tetap menjadi bentuk komunikasi standar.
Saat mengirim data, gagap acak atau gangguan di saluran dapat merusak faks. Sebagian besar mesin faks modern memiliki fungsi penanganan kesalahan yang belum sempurna yang memperingatkan pengguna bahwa faks harus dikirim ulang.
Cara bekerja dengan bug ini bekerja sangat baik sehingga tidak pernah terpikir oleh siapa pun untuk mengubahnya. Tetapi seorang analis bisnis dari perusahaan tempat
Tom bekerja memiliki ide cemerlang.
"Bagaimana jika pengguna tidak duduk di sebelah mesin faks menunggu pesan?" Pikirnya. "Bagaimana jika mesin faks pengirim tidak mendeteksi masalah?" Kita harus mengirim laporan bug kepadanya! ”
Meskipun kekhawatiran analis beralasan, Tom dan kelompoknya keberatan bahwa mengirim pesan faks yang gagal tidak selalu membuat hidup lebih mudah bagi semua orang.
Mereka mengatakan bahwa karena ini, mesin pengirim akan sibuk dan dia tidak akan dapat mengirim ulang faks aslinya.
“Ini normal,” kata analis, “perangkat lunak kami dapat mengirim dan menerima faks secara paralel. Ide ini adalah yang
terbaik yang muncul setelah iPod ! Dia
benar -
benar andal ! ”
Tapi perdebatan itu tidak ada gunanya: di mata manajemen, analis bisnis selalu benar, dan fungsi ini segera diimplementasikan. Program itu disebut "FaxBack," dan menjalankan fungsi yang sesuai dengan namanya: mengirimkan transmisi yang gagal kembali ke pengirim (diidentifikasi oleh Caller ID) beberapa saat setelah terjadinya kegagalan.
Untuk waktu yang lama, semuanya berjalan tanpa masalah sedikit pun, sampai suatu hari dua mobil polisi dengan sirene dihidupkan berhenti di dekat kantor Tom. Polisi mengatakan mereka menjawab panggilan darurat pada 911, tetapi tidak ada darurat dan tidak ada yang mengakui bahwa mereka menelepon 911.
Segera para petugas pergi, tetapi pagi-pagi keesokan harinya, dua mobil polisi lainnya melaju cepat ke kantor. Tidak ada keadaan darurat lagi dan tidak ada yang menelepon 911, jadi mereka dengan tenang meninggalkan kantor.
Tetapi yang ketiga, ketika mobil muncul di sore hari berikutnya, petugas menolak pergi sampai sumber "kegelisahan" ditemukan. Departemen kepolisian yakin bahwa panggilan itu datang dari nomor perusahaan, dan menuntut untuk mencari tahu apa yang terjadi.
Setelah menghabiskan sisa hari itu dan bagian dari pelacakan telepon malam hari di dalam perusahaan, Tom mengetahui bahwa panggilan ke 911 berasal dari pusat data, dan lebih khusus lagi dari FaxBack.
Mesin faksimili, seperti telepon kantor, harus menekan “9” untuk mengakses saluran luar. Karena itu, ketika FaxBack menjawab faks yang gagal dari New Delhi, menekan nomor sembilan, itu diikuti oleh kode internasional India - 11, dan "aturan khusus" sistem telekomunikasi berfungsi.
Orang yang memasang sistem telekomunikasi muncul dengan ide cemerlang untuk memperlakukan 911 sebagai kasus khusus, karena penelepon mungkin tidak memikirkan jika terjadi keadaan darurat untuk memanggil sembilan lainnya terlebih dahulu. Aturan khusus juga berlaku untuk saluran di kolam faks, meskipun penelepon itu hanya komputer.