Kemarahan pada kod: pengaturcara dan negatif

Kemarahan pada kod: pengaturcara dan negatif

Saya sedang melihat sekeping kod. Ini mungkin kod paling teruk yang pernah saya lihat. Untuk mengemas kini hanya satu rekod dalam pangkalan data, ia mendapatkan semula semua rekod dalam koleksi dan kemudian menghantar permintaan kemas kini kepada setiap rekod dalam pangkalan data, malah rekod yang tidak perlu dikemas kini. Terdapat fungsi peta yang hanya mengembalikan nilai yang dihantar kepadanya. Terdapat ujian bersyarat untuk pembolehubah dengan nilai yang nampaknya sama, hanya dinamakan dalam gaya yang berbeza (firstName и first_name). Untuk setiap KEMASKINI, kod tersebut menghantar mesej ke baris gilir yang berbeza, yang dikendalikan oleh fungsi tanpa pelayan yang berbeza, tetapi yang melakukan semua kerja untuk koleksi yang berbeza dalam pangkalan data yang sama. Adakah saya menyebut bahawa fungsi tanpa pelayan ini adalah daripada "seni bina berorientasikan perkhidmatan" berasaskan awan yang mengandungi lebih 100 fungsi dalam persekitaran?

Bagaimana mungkin untuk melakukan ini? Saya menutup muka saya dan kelihatan teresak-esak melalui ketawa saya. Rakan sekerja saya bertanya apa yang berlaku, dan saya menceritakannya semula dalam warna Pukulan Terburuk BulkDataImporter.js 2018. Semua orang mengangguk dengan simpati kepada saya dan bersetuju: bagaimana mereka boleh melakukan ini kepada kami?

Negativiti: alat emosi dalam budaya pengaturcara

Negativiti memainkan peranan penting dalam pengaturcaraan. Ia tertanam dalam budaya kita dan digunakan untuk berkongsi apa yang telah kita pelajari ("anda tidak anda akan percaya, bagaimana kod itu!”), untuk menyatakan simpati melalui kekecewaan (“Tuhan, KENAPA buat begitu?”), untuk menunjuk-nunjuk diri (“Saya tidak akan pernah jadi tidak melakukannya"), untuk meletakkan kesalahan kepada orang lain ("kami gagal kerana kodnya, yang mustahil untuk dikekalkan"), atau, seperti kebiasaan dalam organisasi yang paling "toksik", untuk mengawal orang lain melalui perasaan malu (“Apa yang anda fikirkan?” ? betul”).

Kemarahan pada kod: pengaturcara dan negatif

Negativiti sangat penting kepada pengaturcara kerana ia adalah cara yang sangat berkesan untuk menyampaikan nilai. Saya pernah menghadiri kem pengaturcaraan, dan amalan standard menyemai budaya industri dalam kalangan pelajar adalah dengan murah hati membekalkan meme, cerita dan video, yang paling popular dieksploitasi. kekecewaan pengaturcara apabila berhadapan dengan salah faham orang. Adalah baik untuk dapat menggunakan alat emosi untuk mengenal pasti Yang Baik, Yang Buruk, Yang Hodoh, Jangan Buat Itu, Jangan sekali-kali. Adalah perlu untuk menyediakan pendatang baru untuk fakta bahawa mereka mungkin akan disalahertikan oleh rakan sekerja yang jauh dari IT. Bahawa rakan mereka akan mula menjual idea aplikasi bernilai jutaan dolar kepada mereka. Bahawa mereka perlu bersiar-siar melalui labirin kod lapuk yang tidak berkesudahan dengan sekumpulan minotaur di sekitar sudut.

Apabila kita mula-mula belajar memprogram, pemahaman kita tentang kedalaman "pengalaman pengaturcaraan" adalah berdasarkan pemerhatian reaksi emosi orang lain. Ini dapat dilihat dengan jelas daripada catatan dalam sabe ProgrammerHumor, di mana ramai pengaturcara baru melepak. Banyak yang lucu, pada satu tahap atau yang lain, diwarnai dengan warna negatif yang berbeza: kekecewaan, pesimisme, kemarahan, merendahkan diri dan lain-lain. Dan jika ini nampaknya tidak mencukupi bagi anda, baca ulasan.

Kemarahan pada kod: pengaturcara dan negatif

Saya perhatikan bahawa apabila pengaturcara mendapat pengalaman, mereka menjadi lebih negatif. Pemula, tidak menyedari kesukaran yang menanti mereka, mulakan dengan semangat dan kesediaan untuk mempercayai bahawa punca kesukaran ini hanyalah kekurangan pengalaman dan pengetahuan; dan akhirnya mereka akan berhadapan dengan realiti sesuatu.

Masa berlalu, mereka memperoleh pengalaman dan dapat membezakan kod Baik daripada Buruk. Dan apabila saat itu tiba, pengaturcara muda merasakan kekecewaan bekerja dengan kod yang jelas buruk. Dan jika mereka bekerja dalam satu pasukan (dari jauh atau secara peribadi), mereka sering mengamalkan tabiat emosi rakan sekerja yang lebih berpengalaman. Ini selalunya membawa kepada peningkatan negatif, kerana golongan muda kini boleh bercakap dengan teliti tentang kod dan membahagikannya kepada buruk dan baik, sekali gus menunjukkan bahawa mereka "berpengetahuan". Ini menguatkan lagi negatif: kerana kekecewaan, mudah untuk bergaul dengan rakan sekerja dan menjadi sebahagian daripada kumpulan; mengkritik Kod Buruk meningkatkan status dan profesionalisme anda di mata orang lain: orang yang menyatakan pendapat negatif selalunya dianggap lebih bijak dan cekap.

Meningkatkan negatif tidak semestinya sesuatu yang buruk. Perbincangan pengaturcaraan, antara lain, sangat tertumpu pada kualiti kod yang ditulis. Kod itu mentakrifkan sepenuhnya fungsi yang dimaksudkan untuk dilakukan (perkakasan, rangkaian, dll. diketepikan), jadi penting untuk dapat menyatakan pendapat anda tentang kod tersebut. Hampir semua perbincangan datang kepada sama ada kod itu cukup baik, dan untuk mengecam manifestasi kod buruk dari segi konotasi emosinya mencirikan kualiti kod:

  • "Terdapat banyak ketidakkonsistenan logik dalam modul ini, ia adalah calon yang baik untuk pengoptimuman prestasi yang ketara."
  • "Modul ini agak teruk, kita perlu memfaktorkannya semula."
  • "Modul ini tidak masuk akal, ia perlu ditulis semula."
  • "Modul ini payah, ia perlu ditampal."
  • "Ini adalah sekeping ram, bukan modul, ia tidak perlu ditulis sama sekali, apa yang difikirkan oleh pengarangnya."

Ngomong-ngomong, "keluaran emosi" inilah yang membuatkan pembangun memanggil kod itu "seksi", yang jarang berlaku adil - melainkan anda bekerja di PornHub.

Masalahnya ialah orang adalah makhluk yang aneh, gelisah, emosi, dan persepsi serta ekspresi apa-apa emosi mengubah kita: pada mulanya secara halus, tetapi dari masa ke masa, secara dramatik.

Cerun licin bermasalah negatif

Beberapa tahun lalu, saya adalah ketua pasukan tidak formal dan menemu bual seorang pembangun. Kami sangat menyukainya: dia bijak, bertanya soalan yang baik, celik teknologi, dan sesuai dengan budaya kita. Saya amat kagum dengan kepositifannya dan betapa berdaya usahanya dia. Dan saya mengupahnya.

Pada masa itu, saya telah bekerja di syarikat itu selama beberapa tahun dan merasakan budaya kami tidak begitu berkesan. Kami cuba melancarkan produk dua kali, tiga kali dan beberapa kali lagi sebelum saya tiba, yang membawa kepada perbelanjaan besar untuk kerja semula, di mana kami tidak mempunyai apa-apa untuk ditunjukkan kecuali malam yang panjang, tarikh akhir yang ketat dan produk yang berkesan. Dan walaupun saya masih bekerja keras, saya ragu-ragu tentang tarikh akhir terakhir yang diberikan kepada kami oleh pihak pengurusan. Dan dia secara santai bersumpah apabila membincangkan beberapa aspek kod dengan rakan sekerja saya.

Jadi tidaklah menghairankan—walaupun saya terkejut—bahawa beberapa minggu kemudian, pembangun baharu yang sama itu berkata perkara negatif yang sama yang saya lakukan (termasuk mengumpat). Saya menyedari bahawa dia akan berkelakuan berbeza dalam syarikat yang berbeza dengan budaya yang berbeza. Dia hanya menyesuaikan diri dengan budaya yang saya cipta. Saya ditimpa perasaan bersalah. Kerana pengalaman subjektif saya, saya menanamkan pesimisme kepada pendatang baru yang saya anggap berbeza sama sekali. Walaupun dia benar-benar tidak begitu dan hanya membuat penampilan untuk menunjukkan bahawa dia boleh menyesuaikan diri, saya memaksa sikap buruk saya kepadanya. Dan semua yang dikatakan, walaupun secara gurauan atau sepintas lalu, mempunyai cara yang buruk untuk berubah menjadi apa yang dipercayai.

Kemarahan pada kod: pengaturcara dan negatif

Cara negatif

Mari kita kembali kepada bekas pengaturcara baru kami, yang telah memperoleh sedikit kebijaksanaan dan pengalaman: mereka telah menjadi lebih akrab dengan industri pengaturcaraan dan memahami bahawa kod buruk ada di mana-mana, ia tidak boleh dielakkan. Ia berlaku walaupun dalam syarikat paling maju yang memberi tumpuan kepada kualiti (dan biar saya ambil perhatian: nampaknya, kemodenan tidak melindungi daripada kod buruk).

Skrip yang bagus. Lama kelamaan, pembangun mula menerima bahawa kod buruk adalah realiti perisian dan tugas mereka adalah untuk memperbaikinya. Dan jika kod buruk tidak dapat dielakkan, maka tidak ada gunanya membuat kekecohan mengenainya. Mereka mengambil jalan Zen, menumpukan pada menyelesaikan masalah atau tugas yang dihadapi mereka. Mereka belajar cara mengukur dan menyampaikan kualiti perisian dengan tepat kepada pemilik perniagaan, menulis anggaran yang berasas berdasarkan pengalaman bertahun-tahun mereka, dan akhirnya menerima ganjaran yang besar untuk nilai luar biasa dan berterusan mereka kepada perniagaan. Mereka melakukan tugas mereka dengan baik sehingga mereka dibayar $10 juta dalam bentuk bonus dan bersara untuk melakukan apa yang mereka mahu sepanjang hayat mereka (tolong jangan ambil mudah).

Kemarahan pada kod: pengaturcara dan negatif

Senario lain ialah jalan kegelapan. Daripada menerima kod buruk sebagai perkara yang tidak dapat dielakkan, pembangun mengambil tanggungjawab sendiri untuk menyebut segala yang buruk dalam dunia pengaturcaraan supaya mereka dapat mengatasinya. Mereka enggan menambah baik kod buruk sedia ada atas banyak sebab yang baik: "orang harus tahu lebih banyak dan jangan jadi bodoh"; "ia tidak menyenangkan"; "ini tidak baik untuk perniagaan"; "ini membuktikan betapa bijaknya saya"; "Jika saya tidak memberitahu anda betapa buruknya kod ini, seluruh syarikat akan jatuh ke dalam lautan," dan seterusnya.

Sudah tentu tidak dapat melaksanakan perubahan yang mereka inginkan kerana perniagaan malangnya mesti terus berkembang dan tidak boleh menghabiskan masa bimbang tentang kualiti kod, mereka ini mendapat reputasi sebagai pengadu. Mereka dikekalkan kerana kecekapan tinggi mereka, tetapi ditolak ke margin syarikat, di mana mereka tidak akan mengganggu ramai orang, tetapi akan tetap menyokong operasi sistem kritikal. Tanpa akses kepada peluang pembangunan baharu, mereka kehilangan kemahiran dan berhenti memenuhi permintaan industri. Negativiti mereka bertukar menjadi kepahitan yang pahit, dan akibatnya mereka menyuap ego mereka dengan bertengkar dengan pelajar berusia dua puluh tahun tentang perjalanan teknologi lama kegemaran mereka dan mengapa ia masih hangat. Mereka akhirnya bersara dan hidup di hari tua dengan memaki hamun burung.

Realitinya mungkin terletak di antara kedua-dua ekstrem ini.

Sesetengah syarikat telah sangat berjaya dalam mewujudkan budaya yang sangat negatif, menyendiri, berkemauan keras (seperti Microsoft sebelum ini dekad yang hilang) - selalunya ini adalah syarikat dengan produk yang sesuai dengan pasaran dan keperluan untuk berkembang secepat mungkin; atau syarikat yang mempunyai hierarki perintah dan kawalan (Apple dalam tahun-tahun terbaik Jobs), di mana setiap orang melakukan apa yang disuruh. Walau bagaimanapun, penyelidikan perniagaan moden (dan akal sehat) mencadangkan bahawa kepintaran maksimum, yang membawa kepada inovasi dalam syarikat, dan produktiviti tinggi dalam individu, memerlukan tahap tekanan yang rendah untuk menyokong pemikiran kreatif dan berkaedah yang berterusan. Dan amat sukar untuk melakukan kerja berasaskan perbincangan yang kreatif jika anda sentiasa bimbang tentang perkara yang akan diperkatakan oleh rakan sekerja anda tentang setiap baris kod anda.

Negativiti ialah budaya pop kejuruteraan

Hari ini, lebih banyak perhatian diberikan kepada sikap jurutera berbanding sebelum ini. Dalam organisasi kejuruteraan, peraturan "Tiada tanduk". Semakin banyak anekdot dan cerita yang muncul di Twitter tentang orang yang meninggalkan profesion ini kerana mereka tidak dapat (tidak akan) terus bersabar dengan permusuhan dan niat jahat terhadap orang luar. Malah Linus Torvalds baru-baru ini meminta maaf tahun permusuhan dan kritikan terhadap pembangun Linux yang lain - ini telah membawa kepada perdebatan tentang keberkesanan pendekatan ini.

Ada yang masih mempertahankan hak Linus untuk menjadi sangat kritikal - mereka yang sepatutnya tahu banyak tentang kebaikan dan keburukan "negativiti toksik". Ya, kesopanan adalah sangat penting (walaupun asas), tetapi jika kita merumuskan sebab-sebab mengapa ramai di antara kita membenarkan ungkapan pendapat negatif bertukar menjadi "ketoksikan", sebab-sebab ini kelihatan paternalistik atau remaja: "mereka berhak mendapatnya kerana mereka bodoh. "," dia mesti yakin bahawa mereka tidak akan melakukannya lagi," "jika mereka tidak melakukannya, dia tidak perlu menjerit kepada mereka," dan sebagainya. Contoh kesan reaksi emosi pemimpin terhadap komuniti pengaturcaraan ialah akronim komuniti Ruby MINASWAN - "Matz bagus jadi kami baik."

Saya perhatikan bahawa ramai penyokong tegar pendekatan "bunuh orang bodoh" sering mengambil berat tentang kualiti dan ketepatan kod, mengenal pasti diri mereka dengan kerja mereka. Malangnya, mereka sering mengelirukan kekerasan dengan ketegaran. Kelemahan kedudukan ini berpunca daripada keinginan manusia yang sederhana, tetapi tidak produktif untuk merasa lebih tinggi daripada orang lain. Orang yang tenggelam dalam keinginan ini akan terjebak di jalan kegelapan.

Kemarahan pada kod: pengaturcara dan negatif

Dunia pengaturcaraan berkembang pesat dan menolak sempadan kontenanya - dunia bukan pengaturcaraan (atau adakah dunia pengaturcaraan wadah untuk dunia bukan pengaturcaraan? Soalan bagus).

Apabila industri kami berkembang pada kadar yang semakin meningkat dan pengaturcaraan menjadi lebih mudah diakses, jarak antara "teknisi" dan "biasa" semakin rapat. Dunia pengaturcaraan semakin terdedah kepada interaksi interpersonal orang yang dibesarkan dalam budaya nerd terpencil dari ledakan teknologi awal, dan merekalah yang akan membentuk dunia pengaturcaraan baharu. Dan tanpa mengira sebarang hujah sosial atau generasi, kecekapan atas nama kapitalisme akan ditunjukkan dalam budaya syarikat dan amalan pengambilan pekerja: syarikat terbaik tidak akan mengupah sesiapa sahaja yang tidak boleh berinteraksi secara neutral dengan orang lain, apatah lagi mempunyai hubungan yang baik.

Apa yang saya pelajari tentang negatif

Jika anda membenarkan terlalu banyak negatif untuk mengawal fikiran dan interaksi anda dengan orang ramai, bertukar menjadi ketoksikan, maka ia berbahaya untuk pasukan produk dan mahal untuk perniagaan. Saya telah melihat (dan mendengar tentang) banyak projek yang runtuh dan telah dibina semula sepenuhnya dengan perbelanjaan yang besar kerana seorang pembangun yang dipercayai mempunyai dendam terhadap teknologi, pembangun lain atau malah satu fail yang dipilih untuk mewakili kualiti keseluruhan pangkalan kod .

Negativiti juga merosakkan dan memusnahkan hubungan. Saya tidak akan lupa bagaimana seorang rakan sekerja memarahi saya kerana meletakkan CSS dalam fail yang salah, ia mengganggu saya dan tidak membenarkan saya mengumpul fikiran saya selama beberapa hari. Dan pada masa hadapan, saya tidak mungkin membenarkan orang sedemikian berada berdekatan dengan salah satu pasukan saya (tetapi siapa tahu, orang berubah).

Akhirnya, yang negatif benar-benar membahayakan kesihatan anda.

Kemarahan pada kod: pengaturcara dan negatif
Saya rasa inilah rupa kelas induk tentang senyuman.

Sudah tentu, ini bukan hujah yang memihak kepada berseri-seri dengan kebahagiaan, memasukkan sepuluh bilion emotikon ke dalam setiap permintaan tarik, atau pergi ke kelas induk tentang senyuman (tidak, baik, jika itu yang anda mahu, maka tiada masalah). Negativiti adalah bahagian yang sangat penting dalam pengaturcaraan (dan kehidupan manusia), kualiti isyarat, membolehkan seseorang meluahkan perasaan dan bersimpati dengan sesama manusia. Negativiti menunjukkan wawasan dan kehati-hatian, kedalaman masalah. Saya sering mendapati bahawa pembangun telah mencapai tahap yang baru apabila dia mula menyatakan ketidakpercayaan terhadap perkara yang dia malu dan tidak pasti sebelum ini. Orang ramai menunjukkan kewajaran dan keyakinan dengan pendapat mereka. Anda tidak boleh menolak ungkapan negatif, itu adalah Orwellian.

Walau bagaimanapun, negativiti perlu diselaraskan dan diseimbangkan dengan kualiti manusia yang lain: empati, kesabaran, pemahaman dan jenaka. Anda sentiasa boleh memberitahu seseorang bahawa dia mengarut tanpa menjerit atau menyumpah. Jangan memandang rendah pendekatan ini: jika seseorang memberitahu anda tanpa sebarang emosi bahawa anda telah merosakkan dengan serius, ia benar-benar menakutkan.

Masa itu, beberapa tahun yang lalu, CEO bercakap dengan saya. Kami membincangkan status semasa projek, kemudian dia bertanya bagaimana perasaan saya. Saya menjawab bahawa semuanya baik-baik saja, projek itu bergerak, kami bekerja dengan perlahan, mungkin saya terlepas sesuatu dan perlu dipertimbangkan semula. Dia berkata bahawa dia telah mendengar saya berkongsi pemikiran yang lebih pesimis dengan rakan sekerja di pejabat, dan orang lain juga menyedari perkara ini. Dia menjelaskan bahawa jika saya mempunyai keraguan, saya boleh menyatakannya sepenuhnya kepada pihak pengurusan, tetapi tidak "menghapuskannya." Sebagai seorang jurutera utama, saya perlu mengambil kira bagaimana kata-kata saya memberi kesan kepada orang lain kerana saya mempunyai banyak pengaruh walaupun saya tidak menyedarinya. Dan dia memberitahu saya semua ini dengan sangat baik, dan akhirnya berkata bahawa jika saya benar-benar berasa seperti itu, maka saya mungkin perlu memikirkan apa yang saya mahu untuk diri saya dan kerjaya saya. Ia adalah perbualan yang sangat lembut, dapatkan-atau-keluar-dari-tempat duduk anda. Saya berterima kasih kepadanya atas maklumat tentang bagaimana sikap saya yang berubah selama enam bulan telah menjejaskan orang lain tanpa disedari oleh saya.

Ia adalah contoh pengurusan yang luar biasa, berkesan dan kuasa pendekatan yang lembut. Saya menyedari bahawa saya hanya mempunyai kepercayaan penuh terhadap syarikat dan keupayaannya untuk mencapai matlamatnya, tetapi sebenarnya saya bercakap dan berkomunikasi dengan orang lain dengan cara yang berbeza. Saya juga menyedari bahawa walaupun saya berasa ragu-ragu tentang projek yang sedang saya kerjakan, saya tidak sepatutnya menunjukkan perasaan saya kepada rakan sekerja saya dan menyebarkan pesimisme seperti penularan, mengurangkan peluang kita untuk berjaya. Sebaliknya, saya secara agresif boleh menyampaikan situasi sebenar kepada pengurusan saya. Dan jika saya merasakan bahawa mereka tidak mendengar saya, saya boleh menyatakan ketidaksetujuan saya dengan meninggalkan syarikat itu.

Saya menerima peluang baharu apabila saya memegang jawatan sebagai ketua penilaian kakitangan. Sebagai bekas ketua jurutera, saya sangat berhati-hati dalam menyatakan pendapat saya tentang kod warisan kami (yang sentiasa bertambah baik). Untuk meluluskan perubahan, anda perlu membayangkan keadaan semasa, tetapi anda tidak akan mendapat apa-apa jika anda bergelumang dengan mengerang, menyerang, atau sebagainya. Akhirnya, saya di sini untuk menyelesaikan tugasan dan tidak sepatutnya mengeluh tentang kod tersebut untuk memahaminya, menilai atau membetulkannya.

Malah, semakin saya mengawal reaksi emosi saya terhadap kod tersebut, semakin saya faham apa yang boleh berlaku dan semakin kurang kekeliruan yang saya rasa. Apabila saya menyatakan diri saya dengan kekangan ("mesti ada ruang untuk penambahbaikan di sini"), saya membuat diri saya dan orang lain gembira dan tidak mengambil terlalu serius situasi itu. Saya menyedari bahawa saya boleh merangsang dan mengurangkan negatif pada orang lain dengan bersikap munasabah (menjengkelkan?) ("anda betul, kod ini agak buruk, tetapi kami akan memperbaikinya"). Saya gembira melihat sejauh mana saya boleh pergi di laluan Zen.

Pada asasnya, saya sentiasa belajar dan mempelajari semula pelajaran penting: hidup ini terlalu singkat untuk sentiasa marah dan kesakitan.

Kemarahan pada kod: pengaturcara dan negatif

Sumber: www.habr.com

Tambah komen