Мавпокодери Стріляють Собі в Коліно

В цьому пості я дебаю на мавпокодерів, адже вони цього ой як заслуговують!

Олександр! Що таке цей твій “Мавпокодинг”?

Ні, це не навчання мавп програмуванню, хоча було б весело подивитись. Мавпокодерами я називаю людей, які відмовляються від LLM-ок та кодять усе ручками як в 90х. Я цей термін локалізував від “Ape coding”, конструкції з цієї фікшн?-статті. Автор геній btw.

Це звісно дуже розвиває мозок (іноді, а взагалі-то переважно ні) та є благородним заняттям, достойним справжнього лінуксоїда, але якщо ви продовжите мавпокодити, нейроночка вас замінить, і плювати їй на вашу крутість.

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

Якість залежить від майстра, а не від інструмента.

Коли я вчився малювати в цифрі, ще існували бумери, які казали “фуу ваша цифра вбиває мистецтво, і взагалі цифровий художник—не художник, малювати не вміє.”. В той час же цифрові художники прокачались і почали видавати результат швидше та краще, ніж традиційні. Тепер же повністю традиційних художників можна зустріти хіба на вулиці. Ті ж, хто робить РЕАЛЬНУ РОБОТУ, робить її переважно в цифрі, а фарбовазюкання—це більше для душі і для тих, хто розкрутив своє ім’я настільки, що його традиційні роботи готова купляти велика кількість людей. Зараз цифрових художників уже заміняють промпт-художники, і в цьому нічого катастрофічного немає—такий підхід економить час, а час в РЕАЛЬНІЙ РОБОТІ—найцінніший ресурс.

Все, що важливо в бізнесі—це результат. Якщо я досягаю такого ж або кращого результату (або навіть толерабельно гіршого), витрачаючи менше часу—я цінніший спеціаліст. Тепер вернемось до нашого коду.

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

Так чому її не юзати?

Вайбкодери Розівчаться Програмувати?

Яка твоя проблема з ШІ-шкою? Що малята не навчаться кодити? Боїшся, що джун ШІ-шкою нагенерить неефективного гівнокоду, який досвідчений мавпокодер би накодив значно краще і ефективніше?

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

А от джун з ШІ-шкою має змогу розібратися у шматку коду значно краще, обсипавши LLM-ку питаннями (на деякі з яких, вона звісно, згалюцинує), та миттєво створити 20 альтернативних рішень, і обрати з них найкраще та найефективніше. Тому що LLM-ка—геніальна машина брейнсторму і чудова пошукова система.

Яку просто. Треба. Грамотно. Юзати.

Томущо хороший код—це стиль мислення, а не засіб створення цього коду. Вміння кодити — це перш за все вміння розуміти код і відлагоджувати його. Його як невдумливий мавпокодер не зможе розвинути, так і вайбкодер.

Поганий кодер пише код і не осмислює його. Крутий кодер його перелопачує десятки разів, поки код не стає ідеальним. Крутий кодер застосовує соєві методології програмування там, де вони потрібні, і відкидає їх там, де вони як кобилі п’ята нога. Крутий кодер шарить алгоритми і парадигми.

Поганий кодер набирає букви. Крутий кодер будує систему.

І нема різниці, юзаєш ти LLM-ку чи кодиш з власних пальців. Кожен підхід застосовний у своїй ситуації. Важливо те, як ти дивишся на код.

Цвинтар Мертвих Ідей

Це найстрашніша біда мавпокодингу.

Проблема безлічі вільних програм, про які ми всі так турбуємось—відсутність ресурсів та часу для їх розробки. І ще більша проблема в тому, що хоча є вже інструменти (НЕЙРОНАЧКИ), які дозволяють дуже зекономити час на розробку, автори багатьох цих проєктів принципово відмовляються ними користуватись.

Я знаю хлопця-програміста, якого на роботі змушують використовувати ШІ-шку (бо це круто і ефективно!!!), але у своїх власних проєктах він її використовувати навідріз відмовляється і вважає кодити ручками крутим і елітним, і називає це неформальним вайбкодингом. В результаті за браком часу ці його проєкти припадають пилом, хоча він міг уже давно нагенерувати прототипи (чи хоча б повноцінне ТЗ до проєктів) ШІ-шкою щоб далі їх собі неформально вайбкодити.

Абсолютно точно я не помилюсь, якщо скажу що кладовище таких мертвих проєктів налічує мільйони, якщо не мільярди. А все тому що їх автори занадто елітні і круті щоб використовувати нейроначкі.

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

Просто до вашого відома: поки Google доладжувала Gemini, щоб у неї не було жоских галюнів і втрати контексту, OpenAI випустили ChatGPT і захопили ринок, і тепер всі LLM-чатботи називають джіпітішками. Ось так просто. Так, він був надзвичайно кривий, але він був перший, і цього іноді достатньо.

Крива реалізація поправима. Ідея без реалізації вмирає не народившись.

Наостанок

Потрібно тренувати інженерне мислення, а не боротися з камнями й палками проти термінатора.

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

Також я в цьому пості не чіпав справжніх проблем ШІ-шки, про які напишу завтра. До зустрічі!

P.S.: Чимось ця ситуація з ШІ-шкою нагадує мені неандерталів, які засуджують IDEшки і пишуть все в вімі без плагінів, а всі хто юзає IDEшку—лохи, програмувати не вміють. Я теж пишу весь код у вімі (хоч і з плагінами), бо мені так зручно. Але при цьому я розумію, що IDEшка—це соя, яка буває необхідна при вирішенні реальних соєвих проблем в реальному світі. Тому що люди створили уйму комплексних систем, які дійсно важко всі зібрати в голові, і тільки соєвими інструменами їх можна адекватно підтримувати.

P.P.S.: Я цю статтю намавпокодив.