Situs web
Daily WTF telah mengumpulkan cerita-cerita lucu, liar dan / atau sedih dari dunia TI selama 14 tahun. Saya menerjemahkan beberapa cerita yang sepertinya menarik bagi saya. Semua nama dan nama perusahaan telah diubah. Masalah-masalah sebelumnya dapat ditemukan di bawah label "
penyimpangan yang aneh ."
Kisah pertama: "Bukan hanya brilian"
[ Asli ]Kami semua memiliki kolega yang tidak dapat melakukan pekerjaan kami.
Jarad juga beruntung.
Dia bekerja di Initech di sekelompok kecil pengembang yang menciptakan klien Windows untuk pelanggan yang menggunakannya untuk berinteraksi dengan server mereka. Perusahaan memutuskan untuk port aplikasi dari .NET ke Java. Panduan paling penting merekomendasikan pengembang Java terkemuka yang
sangat dihormati Kisha dari Intelligenuity sebagai manajer proyek. "Jangan khawatir," kata manajemen. "Intelligenuity hanya merekrut programmer yang paling cemerlang."
Pada pertemuan proyek pertama, manajer mengumumkan bahwa mereka akan menggunakan Eclipse untuk proyek Java. Kisha berkata: "Saya tidak punya Eclipse. Bisakah seseorang mengirim? ” Jarad mengiriminya tautan. Pada pertemuan berikutnya, dia bertanya apakah dia menginstal Eclipse. Dia menjawab bahwa dia tidak bisa mengunduh media, jadi dia menunggu pertemuan berikutnya untuk meminta bantuan. Manajer berlari ke mobilnya dan menyelesaikan masalah dengan mengklik tautan unduhan.
Mari kita beralih ke pertemuan berikutnya: Kisha mengatakan bahwa dia tidak bisa terus bekerja, karena "Eclipse memiliki beberapa masalah dengan JDK, dapatkah seseorang mengirimkannya kepada saya?" Jarad mengiriminya tautan lagi. Beberapa hari kemudian, pada pertemuan berikutnya, dia berkata: "Eclipse tidak berfungsi karena butuh file jar, bisakah seseorang mengirimnya?" Dan setelah itu, "Bisakah seseorang mengirimi saya kode untuk membuat kelas karena Eclipse terus melaporkan
NullPointerException
?"
Akhirnya, manajer mengubah struktur rapat. Mereka melanjutkan pertemuan klien Windows reguler mereka, tetapi menambahkan pertemuan khusus khusus untuk Kishi saja. Seiring waktu, ternyata dia dan suaminya adalah teman dari seorang pemimpin yang sangat tinggi dan istrinya. Pertemuan terpisah diadakan untuk "memastikan keberhasilannya"; ini berarti bahwa manajer tim menulis kode untuknya.
Kisha pernah mengatakan kepada manajer bahwa klien memiliki masalah
kritis dengan portal web, dan bahwa pertemuan dengan klien harus diadakan sesegera mungkin untuk menyelesaikan masalahnya.
Manajer mengatur pertemuan dengan klien, dirinya sendiri, Kishi, Jarad dan manajer proyek, untuk menyelesaikan masalah sekali dan untuk semua. Pada hari pertemuan, klien terkejut dengan jumlah staf dan manajer dukungan teknis. Dia menjelaskan: "Um ..." masalah dengan portal "adalah bahwa saya meminta Kisha untuk URL dari portal web. Sudah cukup mengiriminya surat. "
Terkadang keadilan terjadi di dunia ini, dan Kisha akibatnya kehilangan pekerjaannya.
Kisah kedua: "Tiga bulan gatal"
[ Asli ]Pada bulan Maret 2016,
Ian membutuhkan pekerjaan. Hampir segera setelah dimulainya pencarian, dia beruntung: dia menemukan startup kecil yang membutuhkan pekerja dengan pengetahuan arsitektur Python dan keterampilan desain. "Tiny" karena selain Ian, perusahaan hanya memiliki tiga pengembang di bawah kepemimpinan pendirinya Jack.
Wawancara dengan Ian dilakukan oleh Jack sendiri. Setelah tes teknis, ia belajar lebih banyak tentang proyek perusahaan: prototipe aplikasi iOS yang hampir lengkap. Pengguna menyinkronkan ponselnya dengan monitor detak jantung, yang setelahnya ponsel akan memutar musik yang cocok dengan aktivitas pengguna saat ini. Tujuan utama dari aplikasi ini adalah untuk membantu mencapai denyut nadi yang diperlukan selama pelatihan. Aplikasi ini juga menggunakan accelerometer ponsel untuk melacak kecepatan pengguna saat mengemudi. Data ini, menurut Jack, seharusnya berguna untuk studi penyakit Parkinson. Dia mendukung pernyataannya dengan artikel ilmiah dari universitas terbaik. Jack ingin Ian mengembangkan sistem backend baru untuk penyimpanan data dan pemrosesan permintaan.
Jack ramah dan karismatik, dan antusiasmenya menjangkiti orang lain. Ian segera menerima tawaran itu, dan mulai bekerja pada hari berikutnya. Kantornya sempit, tetapi masih miliknya sendiri. Tugasnya adalah membuat backend yang diperlukan untuk aplikasi.
Dua minggu telah berlalu. Pada Senin pagi yang mengantuk, Jack mengundang tim pengembangannya ke ruang rapat. Sorot dari presentasi Powerpoint-nya membakar retina.
“Aku sudah memikirkannya dengan seksama. Kami adalah startup yang benar-benar baru. Tidak ada yang tahu tentang kita, kan? Kita perlu melakukan
sesuatu untuk meningkatkan kesadaran merek. Jadi, saya memutuskan: kami akan menyingkirkan bagian musik dari aplikasi dan hanya fokus pada pengumpulan data. "
Secara naluri Ian hampir berkata,
"Apa ?!" Mereka harus membuang hasil dua minggu kerja. Selain itu, bagian pengumpulan data sebelumnya sepenuhnya opsional.
Jack beralih ke slide lain, yang menunjukkan metrik yang sekarang ingin dilacaknya untuk setiap pengguna. Ada begitu banyak dari mereka sehingga saya harus menggunakan font terkecil. Untuk membaca, Ian harus menyipit.
"Jika kamu mengumpulkan tumpukan jerami yang cukup besar, sebuah jarum pasti akan muncul di dalamnya!" Kata Jack. “Kami akan membuat aplikasi gratis, dan bekerja dengannya akan menyiratkan pendaftaran wajib. Penghasilan riil bagi kami adalah data yang dikumpulkan. ”
Modal investor dihabiskan untuk kantor mewah di pusat bisnis kota; pengembang aplikasi gratis hanya berhak mendapatkan yang terbaik. Jack merekrut pengembang iOS kedua, ilmu data dan magang.
"Tapi
jangan berikan magang pekerjaan penting," kata Jack kepada karyawan penuh waktu.
Setelah menguasai situasi baru, Ian mulai mengembangkan arsitektur sistem baru yang akan merekam semua data yang diperlukan.
Tiga bulan kemudian, Jack membuang semuanya ke tempat sampah. “Tidak ada aplikasi! Kami membutuhkan arah pengembangan baru! ”
Visi baru Jack adalah membuat situs web di mana orang harus menunjukkan komposisi yang mereka dengarkan dalam mimpi, selama pelatihan dan kegiatan lainnya.
"Orang-orang suka berbicara tentang diri mereka sendiri," kata Jack. "Kita seharusnya tidak membayar mereka dengan fakta bahwa mereka memberi kita data mereka!"
Pengembang front-end disewa untuk membuat situs web. Tak lama setelah meluncurkan situs, Jack membual kepada investor bahwa dia telah mencapai jutaan pengunjung unik. Faktanya, hanya ada sekitar 300 pendaftaran, setengahnya dibuat oleh satu orang.
Anda sudah bisa menebak apa yang terjadi tiga bulan kemudian. Jack meninggalkan situs web yang berkembang perlahan demi bot Slack, yang seharusnya menanggapi perintah
"Play ${song} by ${artist}"
, menemukan lagu di Spotify dan memberikan tautan ke sana. Widget Spotify akan memutar preview 30 detik atau, jika pengguna memiliki akun Spotify Premium, seluruh lagu.
"Apakah hanya itu? Bagaimana kita menghasilkan uang? ”, - pada saat ini, para pengembang tidak lagi menahan diri dalam klaim mereka.
"Langganan akan dibayar," jawab Jack dengan berani.
"Untuk
bot obrolan?" "Ian keberatan. “Agar bisa berfungsi sepenuhnya, pengguna sudah membutuhkan Spotify Premium. Jika kita ingin orang membayar lebih dari ini, kita perlu memberi mereka lebih banyak peluang! "
"Kita akan membahas ini nanti," jawab Jack.
Jack menugaskan magang untuk mengembangkan produk inti baru perusahaan, melanggar persyaratan Jack enam bulan lalu. Intern berupaya maksimal, tetapi segera dipaksa untuk kembali ke sekolah; kode yang tidak lengkap tanpa upacara dilemparkan ke pengembang front-end untuk direvisi. Dengan bantuan salah satu pengembang iOS, dia menyelesaikannya. Apa yang sedang dilakukan Ian? Dia menciptakan dashboard dan logging, karena Jack bersikeras bahwa mereka menarik cukup banyak pengguna untuk membenarkan upaya itu.
Tiga bulan lagi berlalu. Banyak "fitur" ditambahkan, misalnya, bot secara obsesif meminta pengguna di saluran Slack untuk menggunakannya. Perilaku ini melanggar ketentuan penggunaan Slack, sehingga aplikasi tidak diizinkan masuk ke toko; Jack sendiri harus mengirim tautan ke orang yang berminat, sehingga mereka menginstalnya secara manual. Pada awalnya, produk tersebut dipindahkan ke 50 perusahaan "sangat ramah" yang dikenal secara pribadi oleh Jack; dari jumlah tersebut, hanya beberapa yang menginstalnya, dan bahkan lebih sedikit lagi menggunakannya pada hari berikutnya. Kemudian Jack memperluas iklannya menjadi 300 perusahaan "ramah", tetapi dengan hasil yang sama.
Titik balik datang untuk Ian ketika Jack mulai menuntut waktu kerja tambahan, meskipun faktanya Ian tidak dapat membantu pengembang lain dalam tugas mereka. Namun, Jack memaksanya untuk tinggal sampai larut malam untuk "menunjukkan solidaritas." Ini yang terakhir: Ian menulis surat pengunduran diri dua minggu kemudian. Hari terakhirnya di tempat kerja bertepatan dengan pelepasan bot Slack, di mana ia mengamati garis yang sangat lurus di dashboard. Ketika ia akhirnya meninggalkan kantor mewah, startup masih belum mendapatkan sen pertamanya.
Untungnya, Jack punya rencana. Setelah Ian pergi, dia mulai dari awal dan akan membuat produk baru. Tidak, dia tidak akan membawa uang, tetapi mereka harus terlebih dahulu tahu tentang merek.
Kisah ketiga: "Konveyor cadangan"
[ Asli ]"Um ... bisakah kamu melihat sesuatu untukku?"
Pat melepaskan diri dari pemrograman fitur-fitur baru, dan melihat kubus Milton berdiri di dekatnya.
"Saya pikir saya mengalami masalah," tambah Milton.
Salah satu sistem internal utama perusahaan adalah pipa pemrosesan data. Mungkin kata "pipeline" dapat dianggap berlebihan, karena dalam praktiknya hanya beberapa skrip shell dan program Python yang mengekstrak data dari file, melakukan operasi dengan data ini dan membuang hasilnya ke file lain, yang kemudian dibaca oleh skrip lain. Dalam proses kerja, orang biasanya mengambil skrip versi terbaru dari sistem kontrol versi, memodifikasi dan menyesuaikannya sehingga mereka memberikan jawaban untuk pertanyaan spesifik terkait dengan data. Jika tampaknya proses khusus ini memiliki nilai, maka mereka membersihkan kode dan menambahkannya ke sistem kontrol versi lagi. Jika mereka berpikir bahwa mereka tidak lagi membutuhkan kode, maka mereka cukup mengatur ulang ke KEPALA.
Namun, beberapa, seperti Milton, pada dasarnya menyimpan salinan semua skrip mereka sendiri. Atau, seperti halnya dengan Milton, beberapa salinan. Milton paling tahu pipa pemrosesan data, tetapi sebagian besar pengetahuan ini terkandung dalam perpustakaan skrip pribadinya.
"Saya pikir layak melakukan perubahan pada sistem kontrol versi," kata Milton. "Saya memiliki skrip yang dipanggil oleh skrip yang dipanggil oleh skrip, dan semuanya tergantung pada sekelompok variabel shell yang dibuat, misalnya
$SETUP_DIR
."
Pat mengangguk.
“Jadi saya ingin mengatur kembali semua ini menjadi argumen sehingga orang lain dapat menggunakan kode tersebut. Saya melakukannya ... tetapi sebelum pengujian, saya lupa mengubah skrip panggilan sehingga mereka
mengeluarkan argumen. "
Secara khusus, skrip Milton berisi baris ini:
#!/bin/sh
rm -rf $SETUP_DIR/*/
Dia refactored ke baris berikut:
#!/bin/sh
rm -rf $1/*/
Script Shell tidak peduli dengan keberadaan variabel-variabel ini. Milton memiliki lingkungan yang gigih untuk
$SETUP_DIR
. Tetapi
$1
adalah argumen pertama, dan jika Anda tidak lulus argumen, itu akan kosong. Oleh karena itu, skrip Milton baru, ketika diluncurkan tanpa argumen, dikerahkan ke
rm -rf /*/
, menghapus semua yang dapat diakses oleh akunnya.
Pada dasarnya, ini menyebabkan banyak upaya untuk menghapus file yang tidak ia miliki haknya. Selain itu, ini berarti hilangnya direktori rumahnya dengan sejumlah skrip spaghetti yang sama sekali tidak mungkin untuk dibuat ulang karena mereka tidak pernah masuk ke kontrol versi.
"Bisakah ini diperbaiki?" Tanya Milton.
“Ya, tentu saja. Semuanya dapat dipulihkan dari cadangan terakhir Anda, ”kata Pat.
Meskipun alat cadangan otomatis diluncurkan pada semua sistem Windows, itu tidak dikonfigurasikan pada sistem Linux apa pun. Departemen dukungan menganggap bahwa jika Anda secara teknis cukup kompeten untuk bekerja dengan Linux dan menulis skrip shell, maka Anda akan memiliki pengetahuan yang cukup untuk mengkonfigurasi sistem cadangan Anda sendiri. Khusus untuk tujuan ini, ada SAN yang dapat diakses untuk semua.
"Oh, dan aku ... tidak pernah membuat cadangan," bisik Milton. "Yah ... setidaknya aku tidak mendorong?"
Pat berharap Milton akan belajar pelajaran yang benar dari kesalahan ini.
Cerita keempat: "Apa itu floating point?"
[ Asli ]Ada banyak jebakan untuk programmer pemula: perbedaan antara mendeklarasikan variabel dan menginisialisasi, kadang-kadang menggunakan titik koma untuk melengkapi baris, mengimbangi kesalahan dengan satu ... Kita semua bertemu di industri kami programmer otodidak yang bisa membuat aplikasi skala besar dengan arsitektur yang tepat bahkan mimpi, tetapi kami melihat junior otodidak, yang baru saja menguasai dasar-dasar dan berpikir itulah yang mereka butuhkan. Pada akhirnya, ijazah dan pendidikan formal diperlukan karena suatu alasan.
Kisah ini dimulai ketika
Olaf baru lulus dari universitas dan bekerja di pekerjaan pertamanya sebagai "programmer trainee". Perusahaan telah menetapkan tujuan memperbaiki tata kelola dalam sistem layanan kesehatan negara bagian: siapa pun yang merasa ragu berkomunikasi dengan sistem layanan kesehatan akan mengatakan bahwa ini adalah tugas mulia. Namun, perusahaan ini didirikan oleh seorang dokter yang hanya memiliki pengetahuan dangkal dalam PHP, yang ia pelajari secara mandiri ketika waktu diberikan.
Olaf mulai bekerja, bermaksud untuk menerapkan pengetahuannya tentang pola desain. PHP mudah dipelajari, tetapi sulit dikuasai; banyak contoh yang ditulis dalam perangkat lunak PHP menggunakan objek dewa, dan kodenya dicampur dengan presentasi - dua kesalahan serius, yang, bagaimanapun, tidak disebutkan dalam sebagian besar tutorial online. Olaf mulai memisahkan fungsi dari bentuk, membuat objek yang dapat digunakan berulang kali untuk meminimalkan copy-paste, dan terlibat dalam tugas-tugas serupa lainnya, dengan senang hati mengubah kekacauan kode yang diteruskan kepadanya.
Maka ia mendapati dirinya di kantor kepala, yang mengatur agar dia mencuci sendiri.
"Pemrogram lain tidak akan mengerti ini!" Teriak bos. “Kode ini terlalu rumit. Mengapa Anda mengubahnya? Berhasil, Anda harus meninggalkannya! "
Karena putus asa, Olaf kembali bekerja dan mengunggah versi bersih ke cabang utamanya tanpa perubahan. Mencoba menghindari tabrakan dengan praktik buruk, ia mulai mengerjakan bug dalam sistem akuntansi, yang memiliki prioritas dan urgensi tinggi, karena terkait dengan penagihan. Pengguna dapat mengunggah file CSV ke server dengan informasi tentang pengeluaran mereka, dan sistem merangkum nilai berdasarkan kategori dan membuat laporan penagihan. Namun, di suatu tempat di dalam, kesalahan pembulatan merayap masuk, menyebabkan beberapa kasus batas penting ke jumlah yang salah.
Olaf belajar lebih dari rekan-rekannya, tetapi tidak ada pelatihan yang komprehensif. Dia dengan cepat berhasil menentukan bahwa itu adalah kesalahan matematis dengan titik mengambang. Karena angka desimal tidak dapat direpresentasikan dalam bentuk biner dengan akurasi penuh, dalam kasus batas muncul kesalahan perhitungan. Dia mulai mencari cara yang tepat untuk menangani nilai desimal di PHP. Tidak seperti Node atau C #, perpustakaan eksternal dalam PHP cukup sulit untuk dihubungkan, karena bahasa ini tidak memiliki dukungan bawaan untuk manajemen paket. Dia tidak tahu bagaimana cara menambahkan perpustakaan yang mampu melakukan operasi matematika dengan benar. Karena perangkat lunak hanya menghitung jumlah, Olaf memutuskan untuk menggunakan bilangan bulat matematika: baca nilainya, singkirkan titik desimal (sehingga nilai 10,50 $ akan direpresentasikan sebagai 1050), lakukan perhitungan, dan tambahkan lagi angka desimal saat ditampilkan.
Junior lain menyukai ide itu. Pengembang senior menyetujuinya, tetapi kepala dengan tegas menolak tawaran itu. Bagaimana dia membantah ini? “Ini bukan kesalahan floating point. Itu muncul karena lemahnya pengetikan PHP, program mencoba menjumlahkan nilai sebagai string, bukan sebagai angka. "
(Bagi mereka yang penasaran: PHP tidak menggunakan operator + untuk merangkai string. Sebagai gantinya, ia menggunakan ".". Hasil dari
"hello " . "world"
akan menjadi
"hello world"
.)
Akibatnya, pengembang senior menyadari keputusan ini: untuk memisahkan seluruh bagian dari yang fraksional, sehingga $ 10,50 berubah menjadi $ 10,00 dan $ 0,50, dan kemudian merangkum setiap bagian secara terpisah.
Olaf tidak berlama-lama, menunggu mereka mengetahui bahwa bug itu masih ada, karena program masih memproses bagian pecahan dengan sen sebagai angka floating-point. Dia menemukan pekerjaan yang lebih baik dengan bahasa yang lebih baik, dan meninggalkan perusahaan.
Fifth Story: "Keamanan Terhitung"
[ Asli ]Pada akhir 80-an,
Karl bekerja untuk beberapa waktu di sebuah perusahaan pengembangan perangkat lunak yang menangani avionik dan sistem penentuan posisi global untuk pelanggan militer dan sipil. Di bidang bisnis, ia sering mengunjungi Schlockdeed Corp, pelanggan dengan kontrak untuk mengembangkan generasi baru jet tempur untuk Angkatan Darat AS. Karena kerahasiaan pekerjaan mereka yang ketat, sangat penting untuk memastikan keselamatan.
Setiap kali Carl masuk atau meninggalkan perusahaan, dia harus pergi melalui departemen keamanan. Di sana ia dengan hati-hati memeriksa tasnya, jaket, kotak makan siang dan hampir semuanya kecuali studi lengkap tentang rongga tubuh. Meskipun ada pemeriksaan harian yang cermat di Schlockdeed, beberapa “langkah keamanan” mereka berbatasan dengan absurd.
Di era pengiriman informasi melalui
floppin , programmer sering membawa serta mereka untuk bekerja dan mengambil kotak dengan floppy disk darinya. Schlockdeed , , . « ». , .
, HP-41CX. , , . HP-41CX .
: «, . ». . 41CX - ? , ? «, CIO. », — .
, , , «» . , (Chief Information Officer) . , 80-. , Calculator Inspection Officer.
«, », — , . HP-41CX. : « . , , . ,
!» , .
, . . , . AC (Approved Calculator), . HP-41CX, , Schlockdeed . , , « » -.