Skip to main content

Command Palette

Search for a command to run...

Не можеш щось зупинити — очолуй це.

Published
•3 min read•View as Markdown

Світ розробки програмного забезпечення живе циклами гайпу. Кожні кілька років з'являється «наступна велика річ», що обіцяє назавжди змінити наші підходи до роботи. Зазвичай, реальність виявляється скромнішою, і після гучних заголовків залишається лише ще один інструмент у нашому арсеналі.

Саме так я спершу сприймав і генеративний ШІ. Для мене, як для керівника .NET-команди, це був радше сирий, непередбачуваний інструмент, аніж надійний помічник. Я свідомо уникав його впровадження, вважаючи, що час для цього ще не настав, а потенційні проблеми з якістю коду переважують будь-які миттєві вигоди.

Перший дзвіночок: блукаючі шаблонні рішення

Першим таким дзвіночком став процес рев'ю тестових завдань кандидатів. З певного моменту в них почали з'являтися дивні фрагменти. Цікаво було те, що ці шаблонні рішення кочували з одного завдання в інше, але ніколи не траплялися повним набором — завжди частинами. Стало очевидно, що кандидати систематично застосовують ШІ для генерації коду. Скажемо так, з досить сумнівним результатом.

Я не бачу в цьому нічого страшного, адже завжди можна під час живого спілкування з'ясувати хід думок і мотивацію людини. Проблема в іншому: кандидати, що покладалися на ШІ, практично ніколи не могли пояснити причину того чи іншого рішення. Гірше те, що в них не вистачило кмітливості попросити той самий ШІ перевірити завдання. Тобто, гіпотеза підтверджується: це був «чіт» проти системи відбіру, а не системний інструмент.

Новий «колега» в команді

Наступним поштовхом стало спілкування з моїми ж розробниками. Час від часу під час код-рев'ю я почав помічати дивні, нетипові для їхнього стилю фрагменти коду. Це були не зовсім помилки, а радше нелогічні, надлишкові конструкції, що не відповідали загальному стилю проєкту.

На риторичне запитання: «Ну і навіщо ти це написав?» — я отримав досить самоіронічну відповідь: — От не знаю, ChatGPT поплутав...

Стало зрозуміло, що в команді з'явився новий «розробник» із високим рівнем авторитету, який не підпорядковується загальним вимогам. Такий собі містер всезнайко. Ігнорувати його появу було щонайменше нерозумно.

Зіткнення з «вайб-кодингом»

Поки ми примірялися: використовувати чи не використовувати, а якщо так — то як, наші колеги вже діяли. Аналітики, DevOps-інженери тощо вже почали вирішувати свої нагальні завдання за допомогою ChatGPT.

Можливо ці застосунки і були тим самим класичним прикладом «вайб-кодингу». З технічного погляду, дійсно не найкращий приклад для наслідування. Але, попри загальне негативне ставлення з боку спільноти, персонально я не бачу в цьому тільки погане. Як прагматик, я розумію: краще така часткова автоматизація, аніж жодної. Будемо вважати, що це дійсно дає можливість швидко протестувати бізнес-ідеї та зняти рутинне навантаження.

Все це чудово, поки вам не запропонують взяти такий продукт на баланс, щоб підтримувати й розвивати. У такий код практично неможливо внести контрольовані зміни, і здається що його простіше переписати з нуля. Так створюється новий клас одноразових застосунків. І як з’ясувалося, це тренд, який нам зараз продають через обгортку у вигляді Specs Driven Development. І доведеться скуштувати чергову серебряну кулю, яка всіх нас залишіть без діла :)

Висновок

У якийсь момент прийшло розуміння: скриньку Пандори відкрито, і цей процес вже не зупинити. Найкращим способом адаптації завжди був принцип: не можеш щось зупинити — очоль це.

Наостанок — кілька слів про мене, щоб ви вирішили, чи варто витрачати час на мої дописи.

Я не можу похвалитися роботою у FAANG, проте більшу частину свого життя я працював на невеликі компанії або створював щось для себе. Кілька років тому я почав розвивати напрям навчання нейромереж, коли це ще не було мейнстримом. Це починалося як невеликий R&D-відділ, і своїм головним досягненням я вважаю те, що цей відділ перетворився на повноцінну компанію.

Мені вдалося не просто передати свій код та інфраструктуру новим співробітникам, а й організувати їхню роботу в рамках нової структури. Гадаю, багатьом відомий страх перед ключовим розробником, без якого все зупиниться. Я радий, що позбувся цього тягаря, і зараз починаю новий етап.

У планах — публікувати суміш ретроспективних дописів (щоб можна було поностальгувати) та матеріалів про актуальні експерименти.