Saya kehilangan kepercayaan pada industri, terbakar, tetapi kultus alat menyelamatkan saya



Saya sering mencerca teknologi yang saya anggap tidak memadai, dan sebagai respons saya menerima (bersama dengan argumen) kemarahan dan rasa sakit. Terkadang fisik.

Pengembang mengambil kritik terhadap teknologi favorit mereka dengan sangat pribadi untuk beberapa alasan. “Alat pemujaan” ini adalah fenomena aneh yang tidak bisa saya jelaskan secara logis. Ada yang mengatakan semua orang cenderung untuk itu, karena proses berpikir coder terjalin sangat dalam dengan bahasa pemrogramannya. Beberapa mengatakan itu adalah kesalahan junior - Anda menulis sesuatu untuk pertama kalinya, itu berfungsi, dan Anda mulai memperlakukan bahasa Anda seperti sesuatu yang ilahi.

Apa pun itu, saya tidak pernah memahaminya.

Saya selalu menganggap kaum kultus sebagai orang bodoh. Tetapi saya selalu mencoba memahami mengapa orang-orang dungu menjadi mereka, mengapa saya menghindari nasib itu. Saya mulai berpikir dan bam! - Ternyata saya juga dungu. Saya seorang pemuja yang memuja F #. Dan, tentu saja, ada cerita di baliknya.



Saya mulai sebagai pengembang C # junior. Xamarin kemudian mentah, pengembangan Android, seluruh shebang. Langkah pertama saya di tempat kerja dipenuhi dengan rasa sakit. Saya harus menulis aplikasi Android sendiri berdasarkan screenshot dan gif versi iOS. Itu hanya dikompilasi setiap waktu, buga ada di semua tempat, dan satu-satunya umpan balik yang saya dapatkan adalah - "mengapa tidak seperti di screenshot?". Itu adalah mimpi buruk dan saya cepat-cepat pergi.

Saya kemudian menghabiskan setengah tahun belajar kode di rumah, dan kemudian mendapat pekerjaan di tenaga penjual besar. Itu jauh lebih terorganisir - tim, mentor, ujian, pola, ulasan kode, ambang ketat, standar tinggi untuk kualitas kode, keterbacaan dan kinerja. Dalam satu kata, semuanya sudah matang. Dan saya pikir itulah cara kerjanya. Tapi, ternyata, itu adalah mimpi buruk yang bahkan lebih besar.

Selama lebih dari setahun, seluruh tim kami membuat modul untuk alat yang bekerja dengan alat yang digunakan untuk membuat alat lain. Mungkin yang sama kita gunakan untuk membuat modul. Setiap hari kami harus memanggil orang-orang India dan Amerika dan melaporkan bahwa Tuhan tahu apa.

Pada titik tertentu saya menyadari bahwa saya semakin jarang melakukannya, tetapi tidak ada yang berubah. Saya membohongi gigi saya dalam bahasa Inggris yang rusak: “Sepanjang minggu saya mencari bug. Masih belum berhasil. Akan berlanjut. "

“Ok Phil, kedengarannya bagus” - mitra transatlantik saya menjawab.

Pada satu titik, putus asa dan memalukan saya pergi ke manajemen dan meminta untuk memecat saya, tetapi mereka karena suatu alasan memberi saya kenaikan gaji. Saya sudah menceritakan kisah itu sebelumnya. Saya tidak bahagia atau sedih - rasanya seperti semacam lelucon surealis, seperti logika dunia ini berantakan.

Anehnya, karena bosan dan menjadi sangat ambisius, saya memutuskan untuk mengembangkan berbagai hal di rumah, dan melakukan segalanya dengan "benar". Saya punya banyak ide bagaimana menggunakan proyek perangkat lunak untuk membuat dunia dan dompet saya lebih baik. Saya melakukan segalanya berdasarkan buku: dokumen desain, arsitektur, persyaratan sistem, dan proyek VSTS. Semuanya terorganisir dan matang, seperti halnya di perusahaan.

Itu tidak sampai ke mana-mana.

Kesimpulan alami - idenya adalah omong kosong. Kode lama ke tempat sampah, ide baru. Hasil yang sama Mulai lagi dari awal. Ini berlanjut beberapa kali. Saya memberi tahu rekan kerja saya dan mereka bingung. Apa yang saya lakukan salah? Saya melakukannya dengan cara yang persis sama dengan mereka yang sudah menjadi kaya karena hal itu.

Orang-orang dengan tingkat kepercayaan diri saya yang tinggi sering kali lebih baik daripada yang lain, tetapi kadang-kadang harus membayarnya. Anda perlu membohongi diri sendiri untuk mengatasi kegagalan. Dan saya berkata pada diri sendiri: setiap pengembang mampu melakukan apa saja. Ini semua tentang bagaimana hal itu dilakukan, dan persyaratan saya untuk "bagaimana" terlalu tinggi. Mereka tidak cocok untuk startup di rumah dan mereka tidak layak untuk tugas bisnis yang tidak berguna. Pikiran berikutnya: "Saya tidak siap untuk meninggalkan standar kualitas saya." Bahkan jika saya perlu membuat aplikasi yang kentut saat Anda mengetuk layar, saya akan membuatnya seindah dan dipikirkan sebaik mungkin.

Jadi saya mendirikan pemujaan bisnis lokal di rumah. Mewujudkan segalanya - ritual, proses, standar - tetapi bukan daging sebenarnya dari benda itu. Saya bermain sebagai pengembang bisnis tanpa bisnis, seperti manusia gua yang membuat landasan pacu dan menara pengawas dari jerami dan mengharapkan burung baja mendarat di atasnya.

Saya menulis tumpukan demi tumpukan formal, kode ketat yang tidak membuat saya lebih dekat dengan hasil akhir, tetapi sebaliknya. Jika Anda memikirkannya, karier saya adalah kisah kegagalan dan kekecewaan. Saya menyerah sepenuhnya dan hanya menonton acara TV di tempat kerja sambil minum 16 cangkir kopi sehari.

Di dasar batu, saya melihat sebuah artikel Habr di F #, mencobanya, dan berpikir "Hm, tidak buruk!". Majikan saya dengan senang hati membayar satu bulan untuk belajar untuk saya (meskipun dia tidak mengetahuinya).

F # tidak sulit untuk dipelajari, karena ia memiliki runtime yang sama dengan C # dan saya sudah menggunakan pendekatan fungsional untuk pemrograman dalam TypeScript setiap hari. Saya menyadari bahwa saya dapat mentransfer salah satu proyek saya ke F #. Biarkan keahlian teknis saya keluar dari persamaan sejenak, karena itu semua relatif. Di tim tempat saya bekerja, saya hebat, tetapi dalam tim, katakanlah, pengembang F # saya tidak bisa lebih dari seorang petugas kebersihan.

Tetapi saya dapat memecahkan masalah pada tingkat dasar, meskipun jauh di lubuk hati saya tahu: Saya tidak bisa menyelesaikan apa pun. Saya hanya akan terus membuang pengetahuan di tempat sampah. Saya benar-benar kehilangan kepercayaan pada pemrograman.

Suatu hari saya memutuskan bahwa itu sudah cukup. Saya akan berhenti. Itu adalah hari musim dingin yang gelap dan dingin. Saya keluar dari kantor, masuk ke mobil saya - dan itu tidak dimulai. Setelah beberapa saat, mesin akhirnya hidup kembali. Saya tidak tahu apakah saya memperhatikan asap dari bau plastik yang terbakar sebelumnya, tetapi kemudian api muncul dari bawah kap. Beberapa detik kemudian saya berlari di sekitar tempat parkir memberitahu semua orang untuk menjauhkan mobil mereka dari mobil saya.

Lima menit kepanikan dan kekacauan kemudian, hanya bangkai mobil tua yang terbakar dan telepon dengan video YouTube yang bodoh. Saat itu -30C, dan aku mengenakan mantel tipis seorang lelaki yang berniat pulang dengan mobil yang hangat. Benar-benar dihabiskan dan dihancurkan secara moral. Tidak ada uang untuk naik taksi dan terlalu peduli untuk naik angkutan umum. Saya berjalan pulang, sekitar 10 km. Di rumah saya perlu membantu istri saya dengan anak itu, makan, membawa mereka ke tempat tidur, melakukan ribuan hal kecil. Tetapi pada akhirnya tidak ada lagi yang bisa mengalihkan perhatian dan saya tetap berhadapan muka dengan insomnia dan kesadaran saya - saya tidak layak apa pun, saya tidak akan pernah berhasil.

Dalam hal ini, malam terburuk dalam hidupku, masih dingin karena jalan pulang yang beku, aku memberikan diriku kesempatan terakhir untuk melakukannya.



Saya duduk dan menulis bioma digital kecil di F #, di mana unit pembelajaran mesin berinteraksi satu sama lain dan berkembang, sementara saya bermain dengan parameter dan menonton apa yang terjadi.

Dan ya, malam itu saya mungkin sedikit marah.

Biasanya saya menggunakan campuran model pemrograman naik dan turun. Saya menguraikan solusi kasar dengan pseudocode, kemudian mulai menulis detail paling penting sebagai modul terpisah. Dari kecil ke besar.

Pindah dari pseudocode ke kode nyata, saya menyelesaikan satu atau dua modul besar dan memeriksa apakah ada yang berfungsi. Biasanya tidak, jadi saya mulai mengulangi, mengulangi proses ini dari awal hingga selesai hingga berhasil. Tetapi paling sering saya menyerah setelah iterasi ke-5 atau ke-6.

Saya mencoba pendekatan yang sama dengan F #. Saya memiliki visi umum tentang proyek tersebut, dan kemudian solusinya adalah membangun, bata demi bata, di kepala saya. Anda datang dengan satu kasus demi kasus, dan kemudian pada suatu titik Anda menyadari bahwa Anda tahu cara membuatnya bekerja. Dan kemudian Anda mulai coding dan menyadari bahwa tidak, Anda tidak melakukannya. Pikiran tidak diterjemahkan ke dalam bahasa pemrograman, meskipun Anda sering berpikir di dalamnya. Saya memiliki ini terjadi sepanjang waktu.

Namun, kali ini berbeda. Saya membuat file .txt dalam VSCode dan menulis pseudocode untuk suatu fungsi yang menggambarkan siklus hidup aplikasi saya. Dan saya menyadari bahwa kodesemu saya valid dalam F #. Tidak perlu menerjemahkan apa pun, saya hanya menulis fungsi utama proyek saya. Oke, saya mengubah ekstensi file, menambahkannya ke solusi bersih. Ada fungsi siklus hidup saya. Ia menerima keadaan dunia saat ini, sesuatu yang memprosesnya (dunia itu sendiri) dan memuntahkan keadaan yang diperbarui, sesuatu yang menerjemahkannya menjadi seperangkat parameter AI dan kembali, ditambah AI itu sendiri yang menerima parameter dan memuntahkan solusi .

Maka itu sederhana. Anda mengambil status, mengubahnya menjadi parameter AI, mengumpankannya ke AI, mengubah hasilnya kembali ke keadaan dunia, memberikannya ke permainan, dan hasilnya kembali ke fungsi siklus hidup. Rekursi yang indah, algoritma sederhana, kode luhur, semua GoF di luar kotak. Yang tersisa hanyalah membuatnya bekerja.

Tapi masalahnya, saya tidak perlu memikirkan arsitektur lagi. Saya menulis apa yang oleh pengembang Java dan Sharp disebut “inversion of control container” - sebuah fungsi yang mengambil fungsi siklus hidup dan melewati fungsi dari modul saya (II, Game). VSCode menyorotnya dalam warna merah karena tidak memiliki fungsi atau modul, tetapi saya memiliki apa yang saya butuhkan - segera setelah sorotan merah hilang, saya dapat membangun proyek dan selesai.

Saya mengambil modul dan membuatnya, satu per satu, bekerja dengan cara yang sama. Seluruh proyek adalah 5 file. File AI adalah 500 baris - banyak, tetapi kebanyakan jika berfungsi dengan sangat baik. Keindahan dari pendekatan ini adalah saya bisa menulis fungsi siklus hidup yang berfungsi - jantung dari aplikasi saya - tanpa menjelaskan hal lain sama sekali.

Seluruh arsitektur adalah 10 baris kode, ditulis dalam beberapa menit. Tidak ada antarmuka, kain abstrak, lok, semua DefaultInterfaceNameClasses ini dan omong kosong lain yang harus saya lakukan di C # sebelum saya bahkan mengerti apa yang ingin saya buat. Anda menulis inti bodoh yang hanya memecahkan masalah, dan itu lebih indah daripada penderitaan tingkat perusahaan Anda di Jawa atau Sharp.

Dan saya melakukan semuanya hanya dengan memasukkan pikiran saya ke editor, seperti yang saya pikirkan di F #. Alih-alih menguraikan rencana dalam komentar C #, saya menulis fungsi kerja. Alih-alih menggambarkan puluhan atau bahkan ratusan antarmuka, ada satu file kecil dengan model domain aplikasi. Mengklik "membangun". Menerima solusi yang berfungsi. Dalam satu malam. Dengan kode kualitas saya dapat memberikan ulasan dengan percaya diri. Sesederhana itu.



Saya tidak tahu apa masalahnya - jika F # adalah teknologi yang luar biasa secara monumental, atau apakah itu sangat cocok untuk saya, atau jika itu dibuat untuk tugas-tugas ini secara khusus - apa bedanya? Yang penting adalah pada saat itu saya sedang tenggelam dan saya membutuhkan sekoci. Hidup melemparkan saya F # dan saya menariknya keluar. Sekarang ini bukan hanya teknologi tanpa jiwa bagi saya - ini adalah kesepakatan emosional yang sangat besar.

Sekarang, ketika saya mendengar seseorang memarahi F # - “Teknologi lahir mati! Mainan geek ... ”- Saya selalu ingat malam musim dingin yang dingin, mobil yang terbakar, rokok yang membeku di mulut saya, depresi dan F # yang menarik saya keluar dari itu. Seolah-olah seseorang melempar kotoran pada sahabatku.

Ini mungkin terlihat aneh bagi orang luar, tetapi jika Anda tinggal hari itu di tempat saya, Anda akan bereaksi sama. Saya pikir itu biasa dalam kultus teknologi. Mereka jatuh cinta dengan bahasa mereka, karena mereka memiliki ikatan emosional dengan keadaan yang membuat mereka menemukannya. Dan kemudian saya datang dan meludahi jiwa mereka. Siapa yang idiot sekarang? Saya Saya tidak akan melakukannya lagi, saya harap.

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


All Articles