Не можеш щось зупинити — очолуй це.
Світ розробки програмного забезпечення живе циклами гайпу. Кожні кілька років з'являється «наступна велика річ», що обіцяє назавжди змінити наші підходи до роботи. Зазвичай, реальність виявляється скромнішою, і після гучних заголовків залишається лише ще один інструмент у нашому арсеналі.
Саме так я спершу сприймав і генеративний ШІ. Для мене, як для керівника .NET-команди, це був радше сирий, непередбачуваний інструмент, аніж надійний помічник. Я свідомо уникав його впровадження, вважаючи, що час для цього ще не настав, а потенційні проблеми з якістю коду переважують будь-які миттєві вигоди.
Перший дзвіночок: блукаючі шаблонні рішення
Першим таким дзвіночком став процес рев'ю тестових завдань кандидатів. З певного моменту в них почали з'являтися дивні фрагменти. Цікаво було те, що ці шаблонні рішення кочували з одного завдання в інше, але ніколи не траплялися повним набором — завжди частинами. Стало очевидно, що кандидати систематично застосовують ШІ для генерації коду. Скажемо так, з досить сумнівним результатом.
Я не бачу в цьому нічого страшного, адже завжди можна під час живого спілкування з'ясувати хід думок і мотивацію людини. Проблема в іншому: кандидати, що покладалися на ШІ, практично ніколи не могли пояснити причину того чи іншого рішення. Гірше те, що в них не вистачило кмітливості попросити той самий ШІ перевірити завдання. Тобто, гіпотеза підтверджується: це був «чіт» проти системи відбіру, а не системний інструмент.
Новий «колега» в команді
Наступним поштовхом стало спілкування з моїми ж розробниками. Час від часу під час код-рев'ю я почав помічати дивні, нетипові для їхнього стилю фрагменти коду. Це були не зовсім помилки, а радше нелогічні, надлишкові конструкції, що не відповідали загальному стилю проєкту.
На риторичне запитання: «Ну і навіщо ти це написав?» — я отримав досить самоіронічну відповідь: — От не знаю, ChatGPT поплутав...
Стало зрозуміло, що в команді з'явився новий «розробник» із високим рівнем авторитету, який не підпорядковується загальним вимогам. Такий собі містер всезнайко. Ігнорувати його появу було щонайменше нерозумно.
Зіткнення з «вайб-кодингом»
Поки ми примірялися: використовувати чи не використовувати, а якщо так — то як, наші колеги вже діяли. Аналітики, DevOps-інженери тощо вже почали вирішувати свої нагальні завдання за допомогою ChatGPT.
Можливо ці застосунки і були тим самим класичним прикладом «вайб-кодингу». З технічного погляду, дійсно не найкращий приклад для наслідування. Але, попри загальне негативне ставлення з боку спільноти, персонально я не бачу в цьому тільки погане. Як прагматик, я розумію: краще така часткова автоматизація, аніж жодної. Будемо вважати, що це дійсно дає можливість швидко протестувати бізнес-ідеї та зняти рутинне навантаження.
Все це чудово, поки вам не запропонують взяти такий продукт на баланс, щоб підтримувати й розвивати. У такий код практично неможливо внести контрольовані зміни, і здається що його простіше переписати з нуля. Так створюється новий клас одноразових застосунків. І як з’ясувалося, це тренд, який нам зараз продають через обгортку у вигляді Specs Driven Development. І доведеться скуштувати чергову серебряну кулю, яка всіх нас залишіть без діла :)
Висновок
У якийсь момент прийшло розуміння: скриньку Пандори відкрито, і цей процес вже не зупинити. Найкращим способом адаптації завжди був принцип: не можеш щось зупинити — очоль це.
Наостанок — кілька слів про мене, щоб ви вирішили, чи варто витрачати час на мої дописи.
Я не можу похвалитися роботою у FAANG, проте більшу частину свого життя я працював на невеликі компанії або створював щось для себе. Кілька років тому я почав розвивати напрям навчання нейромереж, коли це ще не було мейнстримом. Це починалося як невеликий R&D-відділ, і своїм головним досягненням я вважаю те, що цей відділ перетворився на повноцінну компанію.
Мені вдалося не просто передати свій код та інфраструктуру новим співробітникам, а й організувати їхню роботу в рамках нової структури. Гадаю, багатьом відомий страх перед ключовим розробником, без якого все зупиниться. Я радий, що позбувся цього тягаря, і зараз починаю новий етап.
У планах — публікувати суміш ретроспективних дописів (щоб можна було поностальгувати) та матеріалів про актуальні експерименти.