Penasaran Penasaran dari Dunia IT

The Daily WTF telah mengumpulkan cerita-cerita lucu, liar, dan / atau sedih dari dunia TI selama 14 tahun sekarang. Saya menerjemahkan beberapa cerita yang sepertinya menarik bagi saya. Semua nama dan nama perusahaan telah diubah.

Untuk bekerja sejauh 3.000 mil


Sebuah kisah nyata dari pengalaman pribadi penulis kami Snoofle. [Asli]

Beberapa dekade yang lalu, kontraktor pertahanan DefCon Inc bekerja untuk Angkatan Darat AS dan mencoba untuk mendapatkan kontrak baru untuk membuat semacam aplikasi yang digunakan dalam pertempuran. Perusahaan ingin menunjukkan dalam proposal bahwa ada cukup staf untuk melaksanakan proyek ini. Oleh karena itu, dia mempekerjakan lebih dari seribu programmer, manajer proyek, manajer, dan sebagainya. Militer, yang mempelajari berbagai penawaran komersial, melihat sekelompok karyawan baru yang sama sekali tidak terbiasa dengan proses, prosedur, dan persyaratan yang diperlukan, sehingga mereka mentransfer kontrak ke perusahaan lain. Kontraktor, untuk bagiannya, memecat ribuan orang ini.

Beberapa bulan kemudian, kontrak lain yang serupa muncul. Perusahaan kembali mempekerjakan seribu orang untuk menunjukkan bahwa ia memiliki staf. Beberapa bulan kemudian, kontrak itu kembali ditransfer ke kontraktor lain, dan perusahaan kembali memberhentikan seluruh ribu.


Selama dua tahun, ini telah diulang beberapa kali.

Setelah semua ini, sebagian besar staf yang tersedia untuk disewa sudah menyadari siklus perekrutan-pemecatan yang sangat singkat di perusahaan, sehingga kontraktor tidak dapat menarik siapa pun kecuali pendatang baru yang baru saja lulus dari lembaga pendidikan. Akhirnya, beberapa manajer tingkat atas dikejutkan oleh kenyataan bahwa semua orang ini hanya karena meja kerjanya jauh lebih murah daripada pengembang berpengalaman pada staf perusahaan, dan mereka yang disewa perusahaan, dipecat demi kontrak. Oleh karena itu, ia mengeluarkan perintah agar semua staf perusahaan yang berpengalaman harus diganti oleh karyawan muda yang murah . Prosesnya memakan waktu dua tahun, tetapi itu masih terjadi.

Sekarang biaya gaji telah turun secara signifikan, dan mereka sangat marah kepada semua calon pengembang yang berpengalaman, perusahaan dapat menambah staf tetap tanpa menggelembungkan anggaran gaji. Dia hanya bisa mempekerjakan pengembang muda yang belum berpengalaman untuk akhirnya mendapatkan kontrak.

Sayangnya, semua pengembang muda ini hanya memiliki sedikit pengalaman, dan perusahaan tidak lagi memiliki orang-orang di parit yang dapat melatih mereka. Oleh karena itu, hasil kontrak dua tahun mereka adalah proyek yang tidak dapat diandalkan ini, yang sering macet, berperilaku tidak terduga dan yang tidak dapat dimodifikasi. Properti seperti itu tidak diinginkan ketika berhadapan dengan sistem yang harus menembak dan meledakkan.

Pada satu titik, salah satu eksekutif senior menyadari apa yang telah terjadi, memaksa perusahaan untuk berhenti bertindak seperti gajah di toko Cina, dan mempekerjakan konsultan yang dibayar tinggi. Sayangnya, konsultan bergaji tinggi ingat dengan baik siklus perekrutan dan tidak ingin ada hubungannya dengan organisasi. Setelah beberapa waktu, perusahaan harus secara signifikan meningkatkan persyaratan kerja, sampai akhirnya beberapa karyawan yang berpengalaman setuju untuk mendapatkan pekerjaan sebagai karyawan penuh waktu. Itu terjadi di New Jersey.

Setelah manajemen menugaskan karyawan baru ini ke proyek untuk mempercepat pekerjaan, karyawan baru berkata, "Tunggu sebentar, ada lubang besar di tengah-tengah proyek ini!" Manajemen menjawab bahwa bagian dari proyek ini diklasifikasikan dan hanya dapat dipelajari oleh orang-orang yang memiliki akses ke informasi rahasia dan hanya di perusahaan di California. Persetujuan yang sesuai diminta dan diterima, setelah itu karyawan yang berpengalaman dikirim selama dua minggu ke fasilitas di California.

Sebelum menyetujui perjalanan, para pengembang ingin tahu bagaimana mereka dapat mengakses materi setelah belajar. Lagipula, akses hanya dimungkinkan di tempat di California, dan semua karyawan tinggal dan bekerja di New Jersey. Mereka diberitahu bahwa mereka akan mempelajari detailnya di California.

Nah, mereka semua terbang ke pantai barat, check in ke hotel dan pergi ke kantor.

Pada saat itu mereka diberitahu tentang semua masalah yang perlu diatasi. Pada hari Kamis, minggu kedua kerja, diputuskan bahwa sekitar dua tahun kerja diperlukan untuk menyelesaikan semua peningkatan yang diperlukan. Pengembang kembali bertanya: "Bagaimana kita mendapatkan akses ke materi dari New Jersey?" Para manajer menjawab bahwa semua pekerjaan harus dilakukan secara lokal dan mereka akan tetap di California selama dua tahun ke depan. Mulai Senin depan.

Tapi tunggu, mereka tidak punya kesempatan untuk membicarakan hal ini dengan keluarga! Bagaimana tidak adanya 90% dari waktu salah satu orang tua mempengaruhi anak-anak? Apakah mereka ingin tinggal di hotel dan bandara selama dua tahun? Kenapa perusahaan tidak mempekerjakan karyawan secara lokal di California, tetapi di New Jersey?

Ternyata karena kontraktor itu berlokasi di New Jersey, staf yang ia sewa juga harus terdaftar di sana. Tentu saja, jika ini telah dilaporkan sebelum bekerja, maka sebagian besar karyawan (jika tidak semuanya) akan menolak untuk bekerja. Jika mereka tahu, maka tidak ada pekerja yang akan naik pesawat dan terbang ke California untuk membiasakan diri dengan proyek tersebut.

Anda bahkan tidak bisa mengatakan bahwa sisa pekerjaan untuk manajer digosok pada kebutuhan akan korban demi perusahaan, dan para pengembang bertanya pada diri sendiri: "Apa-apaan?" Kamis malam sibuk dengan telepon tak berujung ke rumah. Pada hari Jumat pagi, semua karyawan berhenti dan menuju bandara untuk pulang.

Perwakilan tentara berperilaku bermartabat dan bersimpati pada kenyataan bahwa orang tidak ingin meninggalkan rumah dan keluarga mereka selama dua tahun. Namun, mereka menjadi lebih keras ketika berbicara dengan kontraktor dan untuk memenuhi janjinya memiliki staf berpengalaman di tempat kerja.

Akibatnya, kontrak dengan kontraktor dihentikan, dan disewa untuk menggantikan yang baru.

Kasus Kegagalan


[Asli]

gambar

Pada hari pertama di pekerjaan baru, Sebastian tidak terlalu antusias. Dia sudah melihat banyak dan mendapatkan ketidakpedulian dan pesimisme. Pekerjaan baru ini seharusnya tidak berbeda: sekelompok kolega yang mengganggu, persyaratan yang tidak dipikirkan dengan baik, basis kode lama, penuh dengan kode spageti. Tapi dia membayar dengan baik, dan dia bosan dengan kelompok lamanya, dia bosan dengan wajah yang sama. Oleh karena itu, ia secara internal mempersiapkan nuansa baru yang sedikit dari politik kantor yang sama dan tugas-tugas suram.

Dia tidak terlalu sedih ketika dia pergi ke departemen TI untuk kredensial dan mendengar suara berdengung dan mengklik dari server Packard Bell lama. Sebastian hanya menurunkan bar persyaratan untuk komputer yang berfungsi ke beberapa tingkatan, dan kembali ke kantor barunya. Ya, posisinya berarti kantornya sendiri dan pembayaran yang sesuai. Untuk ini, dia bisa berdamai dengan banyak hal lainnya.

Info masuknya berhasil pada percobaan pertama, yang merupakan kejutan yang menyenangkan. Dia mengharapkan Windows XP; ketika Vista boot, dia tidak yakin apakah dia harus bersukacita pada OS yang lebih baru, atau ngeri bahwa itu adalah Vista. Dengan menyelesaikan hak administrator dan memotong UAC, ia bahkan bisa berpura-pura bahwa itu adalah "tujuh". "Dibutuhkan sesuatu yang lebih untuk membuatku takut," pikirnya, dan memulai Outlook.

Sudah ada surat di kotak masuk: beberapa surat sambutan dengan informasi untuk karyawan baru, serta tugas pertama dari manajernya. Terkesan, untuk sedikitnya, dengan efisiensi penugasan tugas, ia membuka surat dari pemimpin barunya.

Huruf pertama kira-kira seperti ini:

Halo Sebastian, selamat datang di lingkungan kerja kita yang terasah sempurna. Semuanya dilakukan dengan benar. Saat membuat dokumen proyek, Anda akan bekerja dengan Bonk-Word (aplikasi dokumentasi berbasis web IBM). Ingatlah untuk sering menyimpan pekerjaan Anda! Jika Bonk-Word mogok, Anda perlu menulis surat ke departemen TI untuk memulai kembali.

Perusahaan menyusun dokumentasi desain. Tulis semuanya dengan suara pasif, gunakan violet untuk menunjukkan judul bab dan hijau untuk menunjukkan judul bagian. Dokumen diperiksa setiap hari oleh presiden perusahaan pada jam 9 pagi, jadi bersiaplah untuk ini. Kesalahan dalam header akan menjadi tanda hitam di file pribadi Anda.

Mulailah dengan merancang solusi untuk masalah font Macintosh yang belum dapat kami pecahkan selama empat tahun. Besok jam 9 pagi Anda harus memiliki dokumen proyek siap pakai enam halaman. Terima kasih

"Enam halaman untuk besok?" - Sebastian khawatir. “Saya rasa saya bersukacita dalam efisiensi terlalu dini. Yah, setidaknya itu tidak akan membosankan , "ia membongkar buku-buku jarinya, membuka Bonk-Word dan mulai berurusan dengan apa yang disebut masalah font.

Hal pertama yang dia temukan adalah bahwa manajer tidak bercanda tentang menabung sering. Pada akhir hari, ia secara mental membuat taruhan: apa yang akan jatuh pertama - Bonk-Word atau Vista itu sendiri. Keduanya jatuh setelah setiap setengah jam. Tetapi menjaga statistik keberangkatan pada selembar kertas meyakinkan Sebastian untuk beberapa alasan. Itu mengingatkannya: sesuatu yang lain bekerja di dunia. Operasi matematika sederhana tidak mengesankan, tetapi mereka dapat diandalkan. Biasa. Stabil

Mungkin Sebastian kesepian di kantor ini. Tapi dia diam dan terpisah. Meskipun serangan mendadak konstan mengganggu, Sebastian masih bergerak maju. Dia berhenti sejenak di tempat kerja untuk mempelajari berbagai literatur tentang rendering font, termasuk spesifikasi Postscript, literatur yang menyertai tentang bagaimana menggunakannya, dan pusat informasi di World Wide Web, yang dirancang untuk mengumpulkan kebijaksanaan para pemikir terbaik industri dalam format pertanyaan dan jawaban yang akrab dan nyaman . Dia secara luas dijelaskan dalam dokumen "membuat program Python untuk membuat setiap karakter." Dia menghabiskan dua halaman untuk menjelaskan apa yang bisa dikatakan secara singkat.

"Jika mereka membutuhkan enam halaman, mereka akan mendapatkan enam halaman," pikir Sebastian.

Hari pertama ternyata aneh, tetapi Sebastian melihat bahwa dia bisa bertahan setidaknya selama beberapa tahun. Dia menyelesaikan pekerjaan itu, meninggalkan gedung (yang berbau pakaian dalam dari kulit tua yang mencurigakan) dan perlahan-lahan berjalan ke "ruang parkir gratis" -nya (keuntungan lain yang membenarkan pekerjaan ini di matanya). Perlahan - karena tempat parkir benar-benar terkorosi oleh karat, dan di banyak tempat beton jatuh sepenuhnya, memperlihatkan tulangan lantai dan kolom.

Pagi berikutnya, tepat jam 9:00, Sebastian berada di kantor manajernya, menunggu verifikasi proyek pertama dari presiden perusahaan, yang menelepon melalui telepon. Sebastian merasa tidak nyaman dengan percakapan dengan presiden secara langsung, mengingat bahwa ada enam puluh karyawan di perusahaan, tetapi dia harus menanggungnya.

“Saya melakukan seperti yang diminta, dan dalam jumlah yang tepat. Kemungkinan besar, ini hanya formalitas, setelah itu saya bisa mulai bekerja. ”

Satu jam kemudian, Sebastian yang dipermalukan dan kelelahan kembali ke kantornya. Kritik absurd tapi kejam yang diterimanya masih terngiang di telinganya. Menurut presiden, judul bagiannya hampir tidak "kehijauan," bukan hijau, seperti yang dituntut oleh perusahaan, dan judul bab-babnya adalah "kemerahan" yang tidak dapat dimaafkan, alih-alih ungu yang diharapkan. Selain itu, ia secara eksplisit diberitahu bahwa itu "mustahil" untuk men-debug font menggunakan Python. Sebaliknya, Sebastian diperintahkan untuk bekerja di C ++ dan menggunakan perpustakaan perangkat lunak "luar biasa" perusahaan. Menunggu panggilan presiden, manajer Sebastian memuji dokumen itu, tetapi selama cek tidak mengatakan sepatah kata pun, tanpa terpisahkan menatap dinding bata di mejanya.

Sebastian menutup pintu kantor, menutup diri dari sisa perusahaan. Dia duduk di kursi kulit mewahnya dan menatap layar komputer yang nyaris tidak berfungsi. Dia membuka kembali dokumennya dan kemudian menghidupkan kembali mesin karena Vista memutuskan untuk terbang keluar. Ketika komputer dinyalakan kembali, ia memeriksa rekening banknya, memikirkan pembayaran hipotek, dan mengertakkan gigi.

"Baiklah kalau begitu," katanya keras-keras di kantor yang kosong. "Lihatlah perpustakaan-perpustakaan ini."

Hal pertama yang mulai dia cari adalah dokumentasi. Secara alami, di perusahaan yang terobsesi dengan dokumen, dokumentasi untuk pustaka "hebat" harus secara akurat diketik dalam font yang benar dengan warna yang idealnya akurat, dengan judul bab dan nama bagian yang benar. Tapi dokumentasinya ... tidak. Ada banyak dokumen desain dengan warna hijau dan ungu yang sempurna. Tetapi mereka hanya menggambarkan metodologi pengembangan perpustakaan dan tidak mengatakan apa-apa tentang penggunaannya.

"Apakah aku kehilangan akal?" Sebastian bertanya pada dirinya sendiri ketika mobil dinyalakan kembali untuk ketiga kalinya. "Mungkin kodenya mendokumentasikan diri ..."

Dia mengalami horor, tetapi tidak banyak kejutan: perpustakaan terdiri dari pembungkus fungsi string dari perpustakaan standar.

Meskipun terus-menerus mengalami bencana, Sebastian tetap bertahan. Dia dipanggil setiap hari untuk putaran intimidasi verbal. Selama empat tahun perusahaan tidak dapat mengatasi masalah font ini; Namun demikian, tidak ada yang diusulkan olehnya tidak sesuai dengan presiden. Sebastian meninggalkan perpustakaan perusahaannya sendiri, mulai memecahkan masalah dengan Python yang terkenal; pada akhirnya, jika mereka masih menyebar busuk, lalu mengapa melakukan apa yang mereka katakan? Tapi apa pun yang ia gunakan: penguji sendiri dengan Python, atau penguji Microsoft, atau Apple, atau Adobe - fon tetap dalam kekacauan total. 488 tidak dapat dihapus, tidak dapat diperbaiki, tidak dapat dipecahkan oleh kesalahan desain patch.

Presiden dengan tegas menolak untuk mengakui kebenaran. Dia mengklaim bahwa itu adalah kesalahan Sebastian, karena dia tidak menggunakan perpustakaan C ++ yang sangat baik.

Setelah kehabisan semua opsi, Sebastian meninggalkan kunci garasi yang karatan di meja manajer bersama dengan surat pengunduran diri. Dia mengucapkan selamat tinggal pada kantor manisnya dan mesin tik neraka yang mereka berikan sebagai komputer. Dia mengambil napas dalam-dalam, merasakan bau kulit suram untuk terakhir kalinya dan pergi, sepenuhnya dan tidak dapat dibatalkan.

Untuk beberapa alasan, dia ragu bahwa dia akan merindukan perusahaan.

Anda bisa sakit karena perawatan kesehatan semacam ini.


[Asli]

Dalam industri apa pun, ada informasi yang perlu ditransfer antara sistem yang tidak kompatibel. Jika Anda menjalani kehidupan orang benar, maka sistem ini hanyalah aplikasi yang berbeda pada platform yang sama. Namun, jika Anda menyimpang dari jalur yang baik, maka sistem ini ditulis dalam berbagai bahasa untuk platform yang berbeda yang berjalan pada sistem operasi yang berbeda dengan urutan byte yang berbeda. Bayangkan beberapa aplikasi Java di Safari di bawah beberapa versi Mac OS , yang perlu berkomunikasi dengan beberapa versi .NET di bawah beberapa versi Windows , yang, pada gilirannya, perlu berkomunikasi dengan beberapa versi COBOL dengan binary EBCIDIC berjalan pada mainframe apa pun.

Jauh sebelum orang bisa membayangkan mimpi buruk seperti itu, kami bekerja dengan SGML yang terdegradasi dan berkembang menjadi XML , yang seharusnya menjadi cara sepele yang dapat diterima untuk menentukan format dan bidang yang terdapat dalam dokumen dengan parser yang tersedia di semua platform, sehingga informasi dapat dipertukarkan, Tidak tahu apa-apa selain DTD dan / atau validasi dan skema parsing.

Tidak berharap yang terbaik, untuk menyederhanakan pekerjaan, kami menulis di atas pustaka pembungkus XML.

Sayangnya, mereka tidak mengatasi tugas itu.


Dalam industri kesehatan, beberapa orang sumber copen telah menciptakan proyek (H) ealthcare (API), atau HAPI , yang pada dasarnya adalah pengurai pesan teks berorientasi objek untuk industri kesehatan. Sayangnya, mereka tampaknya menderita sindrom "tidak tahu kapan harus berhenti" .

Alih-alih menerapkan parser umum yang hanya memecah string yang dibatasi atau string format tetap ke dalam daftar nilai bidang teks, versi terbaru mengimplementasikan 1205 parser yang berbeda, masing-masing memiliki struktur data tingkat tinggi sendiri. Struktur tingkat tertinggi memiliki puluhan substruktur. Setiap parser memiliki satu atau lebih metode akses untuk setiap bidang. Bidang dapat berupa instance tunggal atau daftar instance, dalam hal ini perlu secara terprogram menentukan metode akses mana yang akan digunakan.

Ini adalah API dengan sekitar 15 ribu panggilan metode! Apa yang dipikirkan para pengembang ini?

Misalnya, kelas: EHC_E15_PAYMENT_REMITTANCE_DETAIL_INFO mungkin memiliki dari nol atau lebih bagian layanan produk . Jadi saya segera mulai memikirkan semacam array atau daftar. Karena itu, alih-alih seperti ini:

  EHC_E15_PAYMENT_REMITTANCE_DETAIL_INFO info = ...;
     Daftar <EHC_E15_PRODUCT_SERVICE_SECTION> prodServices = info.getProductServices ();
     // iterate

... kita perlu melakukan salah satu dari ini:

  // Dapatkan substruktur
     EHC_E15_PAYMENT_REMITTANCE_DETAIL_INFO info = ...;
	
     // Dapatkan layanan produk bawaan dari substruktur

     // ... jika kita tahu pasti bahwa dia hanya memiliki satu pesan:
     EHC_E15_PRODUCT_SERVICE_SECTION prodSvc = info.getPRODUCT_SERVICE_SECTION ();
	
     // ... jika kita tidak tahu ada berapa banyak:
     int n = infos.getPRODUCT_SERVICE_SECTIONReps ();
     untuk (int i = 0; i <n; i ++) {
         EHC_E15_PRODUCT_SERVICE_SECTION prodSvc = info.getPRODUCT_SERVICE_SECTION (i);
         // gunakan ini
     }

     // ... atau kamu bisa mengambilnya dan mengulanginya
     Daftar <EHC_E15_PRODUCT_SERVICE_SECTION> allSvcs = info.getPRODUCT_SERVICE_SECTIONAll (); 

... dan Anda perlu memanggil metode yang diinginkan, jika tidak, Anda berisiko mendapatkan pengecualian. Tetapi jika ada banyak cara untuk melakukan satu tugas melalui API, maka ada banyak cara untuk mengeksekusinya dalam kode menggunakan API, yang pasti mengarah pada masalah.

Anda dapat mengatakan: "Ayo, semuanya tidak terlalu buruk" ; gunakan saja yang Anda butuhkan. Tetapi kemudian Anda menyadari bahwa beberapa struktur data ini tertanam pada sepuluh atau lebih level dalam, masing-masing memiliki lusinan substruktur dan / atau bidang, dan semuanya memiliki beberapa metode akses. Apalagi mereka semua memiliki nama yang sangat panjang.Dan kemudian Anda menyadari bahwa pengembang HAPI sudah lelah mengetik dan mulai menggunakan struktur data seperti LA1, ILT, dan PCR untuk singkatan.

API berusaha menjadi berguna: jika tidak menemukan yang diharapkan di bidang yang Anda parsing meminta, maka itu melempar pengecualian, dan Anda perlu mencari tahu apa yang salah dengan Anda sendiri. Tentu saja, ini menyiratkan bahwa Anda sudah tahu apa yang sedang dikirimkan kepada Anda dalam aliran data.

Anonimbekerja di bidang kesehatan dan mendukung perpustakaan yang melilit HAPI. Dia secara teratur diberikan tugas (yang membutuhkan beberapa minggu untuk menyelesaikan) dengan mengurai satu bidang tambahan. Setelah menghabiskan banyak waktu mengunyah volume dokumentasi API, ia menulis parser umum dari satu kelas 300 baris dengan beberapa split, substring, parseDate dan parseInt, sebagai pengganti untuk seluruh antarmuka.

Setelah itu, menambahkan bidang baru tidak lebih dari sepuluh menit.

Source: https://habr.com/ru/post/id431394/


All Articles