COVID pandemiyasi boshlanishidan oldin men Germaniyaning shimoli-g'arbiy qismidagi kichik bir shaharda yashab, ishlayotgan edim. Men kichik startapda ishlaganman. Men kompaniyadagi 7 ta muhandisdan biri edim. Biz juda kichik jamoa bo'lishimizga qaramay, mening hamkasblarim men bilan birga ishlagan eng aqlli odamlardan biri edi. Biz mexanik muhandislar tomonidan qismlarni loyihalash uchun ishlatiladigan mahalliy ish stoli ilovasini yaratdik. Bu qismlar mashinalar, samolyotlar va shunga o'xshash narsalarga kirdi. Bu 3D modellashtirish (SAPR) dasturi edi, shuning uchun tabiiyki, biz yangi muhandisni yollaganimizda yoki stajyor bo'lganimizda, biz matematika, geometriya, past darajadagi yuqori unumdorlik kodini yozadigan va hokazolarni yaxshi biladigan odamlarni afzal ko'rar edik. Nomzodlar bilan suhbatlashganimizda, menga topshiriq berishdi. texnik suhbatni o'tkazish mas'uliyati. Men nomzodda biz xohlagan ko'nikmalarni aks ettiruvchi ba'zi dasturiy vazifalarni tayyorladim. Men nomzoddan muammoni hal qilishni va fikrlash jarayoni orqali gaplashishini so'rayman. Agar ular 45 daqiqada yechimni tugatmasalar ham, bu ular nimani bilishini va qanday fikrda ekanligini o'rganishning foydali usuli edi. Mening jamoamning boshqa a'zolari nomzodlar bilan shaxs va boshqalar kabi boshqa mezonlar bo'yicha suhbatlashdi. Bu juda yaxshi ishladi va biz ba'zi iste'dodli va g'ayratli muhandislarni yolladik. Biz hammamiz o'z ishimizni yaxshi bajarardik va bir-birimizni hurmat qilardik.
2020 yil boshida mahalliy universitetning oxirgi kurs talabasi amaliyot o‘tashni so‘rab bizga murojaat qildi. Men juda zarur ta'tilga chiqdim va bir necha haftaga Berlinga bordim. Shunday qilib, men texnik intervyu o'tkazmoqchi emas edim. Menejerim va jamoaning qolgan a'zolari intervyu davomida talabaga juda qoyil qolishdi va uning rezyumelari juda ajoyib edi. Ilgari bizda stajyor bo'lmagan edi. Menejerim stajyor uchun texnik intervyu kerak emas deb o'yladi. Shuning uchun u texnik intervyusiz biz bilan ishlashni boshlashga qaror qildi. Men ta'tildan qaytdim va bir haftadan keyin boshlanadigan yangi stajyor haqida aytishdi. Men bu stajyorning ishini nazorat qilishim kerak edi. Asosan, u nima qilish kerakligini tushunganiga ishonch hosil qiling, har qanday savollarga javob bering, baribir uni blokdan chiqaring. Biz stajyor ishlamoqchi bo'lgan muammolar to'plamini allaqachon belgilab qo'ygan edik. Endi men stajyorni Stefan deb atayman. Taxminan shu vaqt ichida Germaniyada Korona virusi tarqalishi haqida ko'p gapirildi. Bu yangiliklarning hamma joyida edi. Biz kichik jamoa edik va biz yaqin joylarda ishlashga, bir-birimizga savol berishga, oq doskada aqliy hujum qilishga va hokazolarga odatlangan edik. Lekin afsuski, Stefan bizga qo'shilishidan roppa-rosa bir kun oldin Germaniya to'liq blokirovkaga tushib qoldi. Hammamiz uydan turib masofadan ishlay boshladik. Dastlabki bir necha hafta davomida biz masofaviy ish bilan kurashdik. Men Stefanning loyihasining supervayzeri bo'lganim uchun, men unga hamma narsa kerak bo'lsa, men bilan bog'lanishi mumkinligini aytdim. Agar men uzoqda bo'lsam yoki band bo'lsam, boshqa jamoa a'zolari Stefanga yordam berishdan xursand bo'lishdi.
Bizning kod bazamiz C# va C++ aralashmasi edi. Bizning barcha foydalanuvchilarimiz Windows-da edi, shuning uchun biz C# da ishlash uchun muhim bo'lmagan barcha narsalarni oldingi qismni va boshqa narsalarni yozdik. Bizning barcha raqamli algoritmlarimiz, 3D renderlash va ishlash uchun muhim bo'lgan barcha narsalar C++ da yozilgan. Jamoamiz a'zolarining aksariyati ikkala tilni ham yaxshi bilishgan, ba'zilari esa u yoki bu tilga ixtisoslashgan. Stefan o'zini C# va C++ tillarida juda yaxshi bilishini ta'kidladi. Uning birinchi kunida men Stefan bilan bir necha soat qo'ng'iroq qilib, unga kodlar bazasini tushuntirdim va u boshlashi uchun hamma narsani o'zining mahalliy mashinasida o'rnatdim. Stefan biroz asabiylashdi va u C++ ni yozganiga yoki Windows-dan foydalanmaganiga ancha bo'lganini aytdi. Stefan har kuni Linux mashinasini boshqargan. U C++ yozish uchun qiynalayotgandek tuyuldi. Men u yangi muhitda, yangi kod bazasida ishlashdan biroz hayajonlanganini tushundim va u ketguncha unga yordam berishga qaror qildi. Shunday qilib, biz keyingi bir necha soat davomida dasturlashtirilgan juftlashamiz. Unga bir vaqtning o'zida kod yozishda yordam berishim kerak edi. U o'z kodida ahmoqona xatolar qildi va ularni tuzatishim va unga narsalarni qilishning to'g'ri yo'lini ko'rsatishim kerak edi. Men buni biroz g'alati deb o'yladim, lekin baribir unga imkoniyat berishga qaror qildim. Men qo'ng'iroqlarimiz oxirida Stefan o'z ustida ishlashni davom ettirish uchun yetarlicha ma'lumotga ega bo'lishiga umid qilgandim.
Ertasi kuni men Stefandan hech narsa eshitmadim. Men unga xabar yubordim va u muvaffaqiyatga erishayotganini va mendan hech narsaga muhtoj emasligini aytdi. Buni eshitib xursand bo'ldim. Men o'z ishimga e'tibor qaratishim mumkin edi. Ammo ertasi kuni Stefan yana menga murojaat qilib, yordam so'radi. Bizning ilovamizga hissa qo'shish uchun Stefan C# va C++ yozishi kerak edi. U algoritmning raqamli qismini C++ da yozishi va uni old tomoni bilan ulashi va C# da bir nechta boshqa ishlarni bajarishi kerak edi. Stefan 3-kuni menga murojaat qilganida, u C++ kodi bilan hech qanday muvaffaqiyatga erishmagan edi. Bu asosan biz 1-kun oxirida to'xtagan joy edi. Lekin u o'zining C# kodi bilan juda ko'p yutuqlarga erishdi. U bir vaqtning o'zida ikkala tomondan vazifaga hujum qildi. Stefan 2-kuni mening yordamimsiz C# da yozgan narsalarni g'urur bilan ko'rsatdi. Men kodni o'qib chiqdim va undan hayratda qoldim. Kod haqiqatan ham yuqori sifatli edi. Bu ixcham, oqlangan va samarali edi. Stefan haqiqatan ham iste'dodli edi, deb o'yladim. Ehtimol, u haqiqatan ham C++ sintaksisi va til tafsilotlari bilan biroz zanglagan edi, lekin uning C# kodi uning yaxshi dasturchi ekanligini ko'rsatdi. Men buni yaxshi belgi deb o'yladim va u C++ kodini tezda yaxshilaydi. Bu meni unga C++ bilan yordam berishga undadi. Men yana bir bor 3-kuni Stefan bilan bog'lanib, unga C++ kodi bilan yordam berib, bir necha soat o'tkazdim. Bu tsikl yana bir marta takrorlandi. Stefan o'z-o'zidan ketdi va 4-kuni C# kodini yozdi va 5-kuni C++ bo'yicha yordam so'rab menga qaytib keldi. Shu payt men shubhalana boshladim. Uning C++ kodi bilan yordamga muhtoj bo'lgan darajasi u yozgan yuqori sifatli C# kodiga mos kelmasdi. C++ tilida u asosiy tushunchalar, kompyuterlar qanday ishlashi, xotira qanday ishlashi va hokazolar bilan kurashayotgandek tuyuldi. Shubhasiz, C# axlat yig'ilgan tildir va siz xotira boshqaruvini bilishingiz shart emas, lekin nimadir noto'g'ri tuyuldi va men buni tushunolmadim. barmog'imni ustiga qo'ying.
Butun bir hafta o'tdi. Ofisda ishlashga odatlangan jamoa sifatida biz hammamiz masofadan ishlashni yomon ko'rardik. Bu vaqtda blokirovka paytida bizga 7 yoki undan kam odamdan iborat guruhlarga yig'ilishga ruxsat berildi. Bir hamkasbimiz, keling, uni Devid deb ataymiz, dam olish kunlari meni va yana bir nechta hamkasblarimni o'z uyiga barbekyu qilishga taklif qildi. U mendan unchalik uzoq bo'lmagan joyda yashardi va biz avval ham shunday ishlarni qilganmiz. Ob-havo yaxshi edi, biz Devidning hovlisida uning rafiqasi va 3 yoshli qizi bilan dam olayotgan edik. Biz go'sht va sabzavotlarni panjara qildik va yedik, bir nechta pivo ichdik va kayfiyat juda yumshoq edi. Devidning 3 yoshli qizi muzqaymoqdek ko'rsatib, kichkina plastik stakanlarda bizga kir tortardi. Aytishga hojat yo'q, men bunga tushmadim. Devid Stefan mavzusini ko'tardi va suhbat shunday bo'ldi:
Devid: Stefan bilan qanday ketyapti? O'tgan haftada u menga bir necha bor yordam so'rab murojaat qildi.
Men: Ha, men ham unga biroz yordam berdim. U endigina boshlayapti, shuning uchun men unga yordam berishga qarshi emasdim. U haqida nima deb o'ylaysiz?
Devid: Ha. Uning ishi menda katta taassurot qoldirdi. U haqiqatan ham yuqori sifatli kod yozmoqda va C++ da nima qilayotganini biladiganga o'xshaydi, lekin yaxshi C# kodini yozishga qiynalmoqda. Men unga C# kodini yozishda yordam berdim.
Men Deviddan so'radim: "Kutib turing, siz buni teskarisini nazarda tutyapsizmi? Chunki menimcha, uning C# juda yaxshi, lekin u C++ tilini yaxshi bilmaydi." Gapni tugatganimdan keyin ikkalamiz ham nima bo'layotganini tushundik. Men Stefan C++ kodini qoshiq bilan oziqlantirgan edim, u Devidga o'zinikidek ko'rsatdi. Va har kuni Devid Stefan C# kodini qoshiq bilan oziqlantirib, menga o'zinikidek ko'rsatdi. Devidning C# kodining sifati meni hayratda qoldirdi, Devid esa mening C++ kodimdan hayratda qoldi. Bir tomondan, Devid va men bir-birimizning kodimizga qoyil qolganimiz haqidagi go'zal birodarimizni o'tkazdik. Ammo o'sha lahza ikkalamizni ham Stefan tomonidan aldab qo'yganimiz bilan o'tib ketdi. Bu to'g'ridan-to'g'ri hikoya edi, lekin haqiqiy hayotda sodir bo'ldi. Bu shaxmat o'ynashni bilmagan, lekin ikki grossmeyster bilan o'yinni bir-biriga qarshi o'ynab, durang o'ynashga muvaffaq bo'lgan yigitning hikoyasiga o'xshardi. Stefan buni real hayotda olib bordi. Stefan hech narsani bilmas edi. Biz buni anglash uchun bir hafta vaqt sarflaganimiz uchun o'zimizdan nafratlandik. Rostini aytsam, agar biz ofisda bo'lganimizda, bu hiyla ishlamas edi. Biz uyimizdan ishlaganda muloqot qilishda qanchalik yomon bo'lganimiz uchun bunga tushib qoldik.
Keyingi dushanba kuni ishga qaytganimizda, Stefanga Devidni bezovta qilmaslikni va faqat mendan yordam so‘rashini aytdim. Ko'p o'tmay, Stefan dasturlash, matematika yoki geometriya haqida ko'p narsa bilmasligi aniq bo'ldi. Uning rezyumelari yolg'onga to'la ekanligi aniq edi. U shunchaki ravon so'zlashuvchi bo'lib qoladi va ko'p narsani biladigan kabi ovoz berish qobiliyatiga ega. Bu mahorat unga ish olib keldi va bizni bir hafta davomida aldadi. Stefan bilan qanchalik ko'p ishlagan bo'lsam, uning kodini qanchalik ko'p ko'rib chiqsam, u shunchalik qobiliyatsiz bo'lib chiqdi. Men nihoyat Stefanning kimligini, uning haqiqiy dasturlash mahoratini ko'rdim. Men qobiliyatsiz to'g'ri so'z ekanligiga ishonchim komil emas. Stefan yomon kod yozgan, lekin u g'alati tarzda yomon edi. Bu haqda so‘raganimda g‘alati javoblar berdi. Mana, haqiqatan ham sodir bo'lgan bir misol. Men bir marta Stefanga shunday dedim: "... Demak, siz bu butun son qiymatini olishni xohlaysiz va agar bu qiymat pastki chegara va yuqori chegara o'rtasida bo'lsa, siz bu boshqa funktsiyani chaqirishingiz kerak ... Bu aniqmi?". Stefan meni nima qilish kerakligini tushunganiga ishontirdi. Ertasi kuni uning PRiga qaraganimda, shunga o'xshash narsani ko'rdim:
int value; // Assigned from somewhere. for (int i = lower_bound; i <= upper_bound; ++i) { if (value == i) { do_stuff(...); } }
Men esankirab qoldim. Bu shunchaki yomon kod emas, bu boshqa narsa edi. Men yoshligimni va kodlashda yomonligimni eslayman, lekin mening yomon kodim hech qachon bunday bo'lmagan. Bu g'alatilikning yana bir jihati edi. Hatto boshlang'ich dasturchi bo'lsam ham, men bunday kod yozishni hech qachon o'ylamagan bo'lardim. Chegaralar orasidagi butun sonlar ustidan aylanish tanlovi juda g'alati edi, lekin meni hayratda qoldirgan narsa, hatto moslikni topib, funktsiyani chaqirganda ham, u hech qachon tsikldan chiqmasligi edi. U qolgan qiymatlarni tekshirishda davom etadi. Qanaqasiga? Men Stefandan nega shunchaki qilmaganini so'radim:
if (value <= upper_bound && value >= lower_bound) { do_stuff(...); }
10 va hatto 100 minglab uzunlikdagi har bir butun son bilan taqqoslash o'rniga oddiy tengsizliklardan foydalanish taklifimni olgach, Stefan meni shunday yaxshi g'oya bilan chiqqanim uchun maqtadi va yangi o'zgarishlarni PRga kiritdi. Stefan har gal nimadir qilish uchun qiynalganida, biz unga oson qiladigan narsani beramiz. Ajablanarlisi shundaki, u bu borada ham muvaffaqiyatsizlikka uchraydi. Bu qisqa muddatli amaliyot edi, shuning uchun biz Stefan bilan ortiqcha bezovta qilmadik. Bir muncha vaqt o'tgach, u dasturlashdan tashqari vazifalarni bajarishni, tarqatilgan varaqlardagi narsalarni boshqarishni va bajarilishi kerak bo'lgan boshqa maxsus vazifalarni bajarishni tugatdi. U ishlamoqchi bo'lgan original loyihalar uning mahoratidan ancha yuqori ekanligini isbotladi. Qanday bo'lmasin, Stefan o'zining 3 oylik yarim kunlik pullik amaliyotini tugatdi. U yozda bizda ishlashni davom ettirmoqchi edi. U kompaniyamiz uchun foydali bo'lgan yangi tadqiqot loyihasini taklif qildi. Menejerim Stefan bilan yana 3 oy ishlashni xohlaysizmi, deb so'raganida, men YO'Q dedim. Men menejerimga uning so'nggi uch oydagi ishi qanchalik dahshatli bo'lganini eslatdim. Ammo menejerim optimist edi. U odamlarga ishongan. U mendan Stefanning yoshida, kollejda va birinchi marta narsalarni o'rganayotganimda o'zim haqida o'ylashimni so'radi.
Menejerim mendan yaxshilab o'ylab ko'rishimni so'radi va Stefanga yana bir imkoniyat berishimni o'ylab ko'rishimni so'radi. Rostini aytsam, Stefanning yoshida men yangi (o'sha paytda) HTML5 tuvalidan foydalanib, JavaScript-da 2D o'yinlar yozardim. Stefan yoshi va tajribasiga moslashganidan keyin ham haqiqatan ham qobiliyatsiz edi. Ammo uning qobiliyatsizligidan ham yomoni uning insofsizligi edi. Har holda, men bu qarorni yengil qabul qilishni xohlamadim. Bir tomondan, ehtimol Stefan o'rganishga qodir, lekin boshqa tomondan u insofsiz. Men uning yangi tadqiqot loyihasi uchun yozgan taklifini o'qib chiqdim. Bu g'oya juda yangi edi va agar u ishlayotgan bo'lsa, kompaniyamiz uchun juda foydali bo'lar edi. Bu haqiqatan ham ta'sirli edi. Ammo keyin men bir lahzaga ravshan bo'ldimki, mening beadabligim menejerim menga singdirmoqchi bo'lgan optimizmni egallab oldi. Men Stefanning tadqiqot taklifidan bitta so'zga qattiq bog'lanib qoldim: "2-manifold".
U bilan ishlaganimdan keyin men Stefanning naqadar qobiliyatsiz ekanligini bilardim va u 2-manifold nimani anglatishini bilmasdi. Men Stefanning tadqiqot taklifini onlayn plagiat tekshiruviga nusxa ko'chirdim. Bu yillar oldin edi va men qaysi biri ekanligini unutib qo'ydim. Men faqat Google-da qidirdim va eng yaxshi natijalardan birini ishlatdim. Plagiat tekshiruvi tadqiqot hujjati bilan 97% mosligini topdi va asl nusxani havola qildi. Stefan hamma narsani ko'chirgan edi. Ertasi kuni ertalab Stefan bilan uning tadqiqot taklifi haqida gaplashdim. U gapira boshlagan zahoti u nima haqida gapirayotganini tushunmagani ma'lum bo'ldi va hammasi shunchaki so'zli salat edi. U yana charlatan bo'lib qoldi. Men menejerimga xabar berdim va bu uning Stefanga bo'lgan ishonchini buzdi. Stefan yana bizda ishlamadi.
Stefanning yaxshi biladigan yagona narsasi o'zini sotish edi va u nima haqida gapirayotganini biladiganga o'xshardi. Men tushunaman, bu ko'nikmalar sizni juda uzoqqa olib borishi mumkin bo'lgan kasblar bor, masalan, Savdo. Ammo men kimdir dasturiy ta'minotni ishlab chiqish kabi texnik martaba orqali o'z yo'lini yo'qotib qo'yishni o'ziga xos deb o'yladim.