Kecantikan yang tidak menyelamatkan programmer

β€œUntuk apa kamu diterima, untuk itu kamu akan dipecat,” kata kebijaksanaan lama. Saya dipanggil ke pabrik ini untuk mengaudit akuntansi, sistem informasi, kode, proses, dll. Tetapi mereka mulai dengan mengatakan bahwa mereka memiliki programmer yang buruk. Standar, pabrik, buruk.



Pabrik menciptakan produk yang indah. Dan dia sendiri tampan. Benar-benar indah - rupanya, desainer yang menggambar produk juga berpartisipasi dalam desain bangunan tersebut. Ada juga keindahan dan harmoni di bengkel. Kebersihan, ketertiban, semuanya ada di tempatnya. Dan yang terpenting, seluruh proses produksi diotomatiskan dengan indah.



Setiap batch produk disertai dengan lembar rute, yang berisi semua operasi teknologi yang diperlukan, apa yang akan didapat, kemana harus dikirim, dll. Di selembar kertas - hanya kode batang, dengan sedikit teks.



Pekerja hanya mengambil sekumpulan suku cadang, mengambil dengan pemindai - dan sistem segera mengetahui bahwa ia telah mulai memproses. Banyak ukuran kecil, tidak lebih dari satu shift diproses, jadi tidak perlu membaginya ketika mencerminkan fakta pelepasan atau berlalunya operasi. Pekerja, setelah selesai memproses seluruh kelompok, cukup mengambil dengan pemindai, dan sistem mengetahui bahwa kelompok tersebut sudah siap dan dapat pergi ke orang berikutnya. Sistem juga tahu bahwa bagian-bagian tersebut terjebak di antara perawatan - ada puncak tentang akhir, tetapi tidak ada puncak tentang awal operasi berikutnya.



Kecantikan dan harmoni. Impian pemimpin mana pun. Transparansi penuh - Anda selalu tahu apa, di mana, kapan. Oleh karena itu, pemimpin melakukan tamasya dengan semangat yang tinggi. Dia menyukai cara kerjanya. Otomatisasi yang bagus.



Saya melihat sekilas bahwa para pekerja banyak berbicara dengan mencurigakan di telepon. Saat kita mendekati seseorang, berdiri dan lihat mesin yang indah atau hasil karya tangan yang gesit - orang itu tersenyum dan bekerja. Begitu kami pergi, dia mulai menelepon seseorang.



Nah, Anda tidak pernah tahu, mungkin mereka ramah di sini. Atau apakah budaya perusahaan seperti ini - Anda dapat mencobanya sepanjang hari. Saya tidak punya waktu - saya perlu mencari tahu di mana kerangka itu ada di lemari. Bagaimanapun, bagaimanapun, departemen akuntansi duduk di suatu tempat dan mendorong dalam sejumlah besar dokumen yang memperbaiki masalah, operasi teknis dan pergerakan produk setengah jadi.



Kami pergi ke departemen akuntansi - tidak, di sana sepi. Mereka duduk dan minum teh. Pada layar komputer - ya, tentu saja, sistem informasi - tapi tentu saja bukan masukan masalah. Pekerjaan akuntansi biasa. Berpindah.



Mungkin ada penyumbatan di departemen perencanaan dan pengiriman (PDO). Kami pergi kesana. Nah, bukan itu penyumbatan - hanya banyak pekerjaan. Manajer dengan jujur ​​mengatakan bahwa hambatan saat ini adalah pencetakan sejumlah besar lembar rute - untuk setiap batch dan pesanan. Mengingat ukurannya yang kecil, banyak kertas diperoleh - pada kenyataannya, dibutuhkan sebagian besar waktu staf PDO.



Jadi dimana kerangkanya? Tidak bisa sebagus itu. Oke, mari berpisah dengan manajer, saya akan berbicara dengan programmer. Dia tahu pasti.



Programmer itu duduk di dalam lemari yang sempit, berbicara di telepon, sambil dengan panik melakukan sesuatu di dalam sistem. Saya menunggu beberapa menit sampai saya menguasainya, berhasil mengenal satu sama lain dengan cepat - dan lagi telepon pemrogram berdering. Saya menunggu lagi. Pada jeda berikutnya saya memasukkan pertanyaan "Dapatkah saya melihat bagaimana sistem Anda bekerja?" - dan lagi panggilannya. Pada saat yang sama, pesan instan dari semua warna yang diketahui - hijau, biru, ungu - berkedip di komputer pemrogram.



Programmer, terus berbicara, membuka sistem dan kode sumber untuk saya di komputer terdekat. Dia mengemudi kembali, membuka obrolan, melihat gambar, dengan cepat memasukkan sesuatu ke dalam sistem.



Karena tidak ada hubungannya, saya melihat sistemnya. Saya membuat laporan - tentang penjualan, keluaran, biaya, harga, dll. Semua laporan itu indah sebagai satu. Minimum setelan yang tersedia - hanya sakelar cantik, seperti menurut wilayah, grup produk, dll. Anda mengklik dan menikmati pemandangan yang indah - semuanya rapi, dijilat, disisir.



Ini biasanya tidak dilakukan di sistem perusahaan, untuk penggunaan internal. Di sana, pendekatannya maju secara teknologi - ada bentuk universal tertentu, dan hanya permintaan yang mengekstrak perubahan data dari laporan ke laporan. Kemudian mesin mengubahnya sesuai kebutuhan, memberikan pengaturan pengguna - pengelompokan, filter, pengurutan, pewarnaan, dll. Seperti di sistem BI, hanya lebih sederhana, tanpa kubus dan keindahan lainnya. Aneh, Anda perlu melihat kodenya.



Saya melihat kode - kaki saya di mulut saya ... 4-5 ribu baris kode untuk menghasilkan laporan rilis. Sebagai perbandingan - biasanya 50-100 baris sudah cukup, dan semuanya adalah teks kueri, sisanya disediakan oleh platform. Aneh, apa yang dia lakukan di sini, dalam 4-5 ribu baris ini?



Saya melihat nama-nama prosedur dan fungsinya - sekali lagi semacam keliaran. Mereka dapat dibaca manusia, dan dengan namanya sudah jelas - dia, sial, memiliki prosedur sendiri untuk setiap unit. Yang satu menampilkan data untuk bengkel 1, yang kedua untuk bengkel 2, dll.



Tidak, oke, itu terjadi - pernyataan keuntungan akan lebih buruk. Saya membuka teksnya, saya melihat. Berapa banyak perbedaan yang kita lihat? Satu - parameter permintaan berubah. Dari pada toko 1 - toko 2.

Berbagi beberapa modul lagi - sampah yang sama. Kiloton kode yang menarik laporan indah. Meskipun, sekarang laporan itu tidak lagi terlihat bagus. Saya menantikan makan siang. Makan siang itu sakral.



Dan ada. Tepat pukul 12.00, programmer mengakhiri percakapan, melempar telepon ke bawah monitor, bangkit dan berjalan menjauh dari kantor. Saya mengikutinya. Untungnya, dia sangat marah sehingga dia siap untuk berbicara.



Nah, ternyata. Saya bekerja sebagai programmer di pabrik, tidak menyentuh siapa pun. Perlahan dia membantu pengguna, menambahkan sesuatu, memelihara sistem dan server, mengisi ulang kartrid. Biasanya.



Tetapi kemudian kepala perusahaan melakukan perjalanan bisnis ke luar negeri - dia melihat bagaimana orang hidup. Dan orang-orang di luar negeri hidup dengan indah.



Dan dia membawa ide otomatisasi yang indah. Saya bertanya kepada programmer, dia menjawab - semacam omong kosong. Lemah. Pimpinan menemukan kontraktor, mereka cocok - mengapa tidak cocok, lalu? Persyaratan fungsional utama adalah bahwa setiap orang di toko harus memilih pemindai, dan tidak bekerja dengan komputer dengan tangan mereka, dan data tentang rilis, operasi, dan pergerakan muncul secara instan, mengikuti implementasi peristiwa kehidupan nyata.



Tidak lebih cepat diucapkan daripada dilakukan. Beberapa bulan siksaan, dan bengkel dipenuhi dengan puncak ajaib pemindai kode batang, seperti hypermarket sungguhan. Manajer tersebut dipanggil untuk menyerahkan pekerjaannya untuk melihat sendiri keindahan otomatisasi. Mereka membawa TV besar, membawa tanda yang menampilkan kehidupan bengkel secara real time.



Kami melewatinya dengan keras. Pekerja itu memilih dengan pemindai - hasilnya langsung ditampilkan di TV. Puncak kedua, ketiga, kesepuluh - kehidupan mulai mendidih, baik di toko maupun di TV. Manajer itu senang. Saya menandatangani aksinya, kontraktor pergi.



Dan programmer itu tetap tinggal. Dia mencoba memberi tahu manajer bahwa yang dilakukan adalah, secara halus, bukan yang dibutuhkan. Bahwa tabel datar sederhana tempat pembacaan barcode ditambahkan secara berurutan bukanlah cerminan dari masalah ini. Ini hanyalah pekerjaan laboratorium untuk menghubungkan pemindai dalam mode keyboard - untuk membaca data, menulis ke tabel, menguraikan kode batang - itu panjang, komposit, dengan nomor pesanan, batch, operasi teknis, tata nama, dll. Dijahit di dalamnya.



Tetapi pemimpin tidak mau mendengarkan omong kosong ini. Itu indah di bengkel. Anda tidak pernah tahu apa yang dibawa oleh kutu buku desa ini. Kiri tanpa rollback, mungkin - dan layani dia dengan benar.



Nah, kemudian mulailah untuk programmer. Dia bekerja non-stop selama beberapa hari untuk memastikan setidaknya beberapa sistem berfungsi. Menilai sendiri: sebelumnya, meskipun melalui satu tempat, dengan penundaan, tetapi data rilis datang di tempat yang mereka butuhkan. Ada potongan kertas standar dengan nomor rilis, yang diseret dari bengkel ke departemen akuntansi atau PDO, dan angka-angka ini dimasukkan ke dalam sistem, perputaran internal berhasil, saldo sudah benar, biaya dipertimbangkan.



Sekarang hanya ada meja datar dengan barcode yang dipindai dan didekodekan. Nah, mekanisme kuda untuk pembentukan dan pencetakan barcode ini dari rencana produksi. Data keluaran sama sekali tidak pergi ke bagian-bagian sistem di mana mereka dibutuhkan - baik manajemen, maupun perputaran akuntansi. Sebuah meja datar berdiri di dekatnya dan hanya mengumpulkan data pemindaian kode batang.



Awalnya, programmer, di bawah tekanan dari departemen akuntansi, mencetak di lututnya cetakan meja yang sangat datar ini - kira-kira dalam bentuk bagaimana kertas tulisan tangan dari toko sebelumnya. Saya mencetak tabel ini untuk mereka sekali sehari, bukh didorong ke dalam sistem.



Kemudian, dengan kesedihan menjadi dua, saya menulis kode yang mentransfer data dari tabel datar ke dalam kredensial sistem normal. Dan sepertinya mungkin untuk menenangkan diri, tetapi itu tidak ada. Manajer kembali pergi ke suatu perusahaan dan mengetahui bahwa laporan yang bagus dapat diterima dari sistem.



Sebelumnya, seperti di kebanyakan pabrik, laporan untuk manajer disiapkan oleh orang-orang khusus - akuntan, ekonom, pemodal, dll. Mereka mengambil data dari sistem dan membawanya ke dalam bentuk yang ringkas, mudah dipahami, dan indah. Sekarang pengelola ingin menerima laporan langsung dari sistem.



Lingkaran neraka kedua dimulai. Tenggat waktu, tentu saja, sangat ketat - pemrogram sudah dianggap sebagai kemajuan yang menyabotase tipu muslihat, dan tidak ada yang akan membiarkannya santai. Beginilah kiloton kode salin-tempel muncul, ditulis dengan terburu-buru. Dan lusinan laporan indah.



Lingkaran neraka ketiga datang dari tempat yang tidak diharapkan siapa pun - dari meja datar dengan kode batang. Itu terlihat bagus sebagai dudukan demonstrasi, tetapi dalam pekerjaan nyata, semua kesalahan desain dengan sangat cepat terungkap, baik dalam hal teknologi maupun dalam proses penggunaan.



Pertama-tama, kinerja menulis ke meja telah menurun drastis. Kemudian kecepatan membaca menurun. Pemblokiran dimulai. Kami menemukan permintaan yang ditulis oleh kontraktor, yang dieksekusi di setiap puncak pemindai 1,5 ribu (!) Kali. Ada tempat-tempat dengan rekursi tak berujung, yang terputus pada langkah sepuluh ribu oleh upaya kemauan, diekspresikan oleh komentar "// kami akan membatasi untuk demonstrasi." Entah bagaimana, banyak pengguna tiba-tiba menemukan hak untuk mengedit data secara manual, yang beberapa tidak gagal memanfaatkannya. Pengendalian urutan operasi dilakukan dengan jumlah garis di peta teknis, dan bukan dengan jumlah operasi teknis (ini adalah kolom tabel yang sangat berbeda, dan mereka tidak harus bertepatan), sebagai akibatnya orang menerima pesan informatif "Urutan operasi rusak". Menggunakan lembar perutean kertas,tanpa memperbaiki fakta pengiriman ke toko dan kontrol perubahan, menyebabkan kegagalan pemindaian konstan - perubahan data dalam sistem dengan bodoh mengubah komposisi kode batang, dan yang dicetak tidak lagi dikenali. Dll



Secara alami, programmer pergi ke manajer dengan informasi ini, dan lebih dari sekali. Secara alami, tidak ada yang mendengarkan dia. Oleh karena itu, programmer memasuki masalah waktu yang paling parah.



Di satu sisi, perlu untuk memastikan operasi sistem saat ini. Hal ini diekspresikan dengan duduk terus-menerus di telepon dan pengeditan data secara manual dalam tabel datar - hal ini biasa dilakukan agar toko tidak tersandung. Di sisi lain, perlahan-lahan, selama masih ada waktu, saya berusaha membenahi semuanya. Pabrik bekerja sepanjang waktu, tetapi pada sore dan malam hari mereka menelepon lebih sedikit, jadi programmer menggunakan waktu ini untuk memperbaiki otomatisasi yang indah.



Namun, akumulasi negatif oleh pemimpin tidak dapat lagi dibendung. Mereka ingin memecat programmer. Sebenarnya, ini adalah salah satu alasan audit yang saya andalkan.



Beberapa hari kemudian, ketika laporannya siap, saya menghabiskan dua jam meyakinkan mereka untuk tidak memecat programmer. Saya merekomendasikan agar dia dipromosikan dan akhirnya mulai mendengarkan apa yang dia katakan. Berikan waktu untuk refactoring dan merapikan. Kami berhasil meyakinkan mereka bahwa programmer tidak boleh dikeluarkan setidaknya hari ini. Kami sepakat untuk mengadakan beberapa pertemuan lagi, termasuk. - dengan seorang programmer. Dan itu adalah kesalahanku.



Keesokan harinya, semua orang berkumpul. Eksekutif dari semua garis mulai membuat daftar masalah yang tidak dapat dipecahkan oleh programmer. Dia dengan percaya diri menjawab semua pertanyaan. Biasanya, dengan frasa yang sama - "Saya sudah melakukan ini, saya tunjukkan," yang membuat penanya terdiam. Saya, dalam banyak kasus, mengkonfirmasi bahwa pemrogram mengatakan yang sebenarnya.



Untuk argumentasi yang lebih efektif, mereka mengeluarkan komputer dan mulai menunjukkan apa yang "tidak dapat dilakukan programmer dengan cara apa pun". Kami menemukan hampir semua "yang sangat kami kurangi untuk pekerjaan normal". Dan semuanya cukup indah. Setidaknya itu berhasil.



Di akhir pertemuan, tidak ada yang mengerti apa tujuannya. Programmer, dengan harapan di matanya, pergi ke tempat kerjanya. Para pemimpin juga bubar, beberapa yang utama tetap ada. Saya duduk dan menunggu putusan - berharap, tentu saja, untuk kesempatan kedua bagi programmer dan mengikuti rekomendasi saya ("Anda memiliki semua yang Anda butuhkan, Anda tidak tahu bagaimana menggunakannya").



Tapi putusan keluar berbeda - "Anda tahu, dia harus dipecat." Untuk apa?! Tentu saja karena sistemnya cantik. Tapi itu tidak berhasil. Dan programmer yang harus disalahkan untuk ini.



PS Programmer senang bahwa dia dipecat. Dia tidak meninggalkan dirinya sendiri, karena dia merasa bertanggung jawab, atau bahkan sangat bertanggung jawab atas apa yang terjadi di pabrik. Seminggu kemudian, dia bekerja di tempat baru, dengan gaji yang lebih tinggi.



All Articles