Я вже описував в минулій статі той “ментальний злам” який почався у мене після того як я за допомогою ШІ зробив свій перший додаток.
Я народився і виріс в світі, в якому програміст це той хто знає мову програмування, і хто вміє писати на ній програми. Звичайно, що навіть задовго до того як з’явився ШІ, читаючи різні статті від програмістів і розробників, я часто чув цю фразу “просто знати мову програмування не достатньо”, але скажу чесно – я не розумів до кінця що вони мають на увазі.
Я читав в їхніх статтях такі розумні слова як алгоритм, принцип побудови і.т.д. але не розумів що це таке і тому просто не звертав на це особливої уваги. Також я періодично чув фразу “вивчити мову програмування це не те саме що почати нею писати”. До моєї уваги попадали тільки ось ці завітні слова “вивчив JS” або “вивчив PHP”.
Тобто моя свідомість залишалася в парадигмі “стати програмістом = вивчити мову програмування”. Я намагався вчити PHP, тому що я займався створенням сайтів на WordPress і навіть були плани перейти на Laravel. Але повноцінно це якось не пішло, тільки як додаток до розробки сайтів на WordPress, іноді замість того щоб встановлювати якийсь плагін я міг зробити якусь просту програму на php.
Потім я взявся за вивчення JavaScript. Чому саме JavaScript? Скажу чесно – тому що на той час він був самий модний і хайповий. Але проблема в тому, що в моїй діяльності розробника сайтів на WordPress, трохи важко було застосовувати те що я вчив на курсах по JS. Я все ж таки домучав майже до кінця певний базовий курс JavaScript. Пам’ятаю що єдине в чому зміг це реалізувати – це декілька разів на сайтах робив певний функціонал пов’язаний з базовими можливостями JavaScript – змінні (переменние), масиви і події (тіпа якщо людина клікає сюди то відбувається така-то подія). Придумати серйозний проект на JavaScript, який мав би дійсну користь і який я зміг би реалізувати, я так і не зміг. З часом знання які я отримав з проходження базового курсу припали пилом.
Новий початок під час перебування в ЗСУ
Я посипав себе попелом, кажучи що мені вже майже 40, і що програмування це не мій рівень. В такому стані я пішов в ЗСУ, перші півтора роки там було точно не до програмування. Все зводилось до двох простих задач – вижити і виконати задачу по службі (ви навіть не уявляєте на скільки насправді ці дві речі взаємопов’язані).
Але приблизно через 1,5 роки служби обставини стали так, що у мене почав з’являтися вільний час. Якось я спілкувався з одним своїм побратимом, який теж був розробником, ми спілкувалися про те чим плануємо зайнятися після закінчення війни. Він сказав що хоче зайнятися мобільною розробкою, тому що мобільних пристроїв (не тільки телефонів) з часом буде ставати все більше і більше. Це мене певною мірою заразило. І справді – було відчуття що найближчі пару десятків років мобільні пристрої нікуди не підуть, їх буде ставати все більше й більше.
Так почалася наступна стадія в моєму житті, я знову зібрався з рішучістю стати програмістом, ну або як я це називав – розробником, тільки вже не тільки сайтів. Ця стадія мого життя досить добре описана в моїх статтях.
Ще на самому початку мого шляху становлення розробником мобільних застосунків, переді мною постав вибір – або вивчати Flutter або React Native. І хоча Flutter виглядав досить перспективно і прогресивно, я все ж таки обрав React Native, тому що в ньому мої знання JS, HTML, CSS можуть стати певною основою.
Знову почавши вивчати JavaScript, а головне – почавши вивчати React, я знов і знов приходив до висновку що мені потрібен якийсь мій власний проект, бо це один з кращих методів навчання – самому зробити якийсь свій проект.
Пастка «Вайб-кодингу»
Якщо ми чогось сильно хочемо то наші бажання збуваються. Я хотів знайти якийсь свій проект, тобто щось справді корисне як мінімум для мене, а набагато краще щоб і для інших. Я думав про це. І з часом ідеї почали з’являтися. Спочатку це був мій проект Сузір’я. Потім Podao. Потім 4pf-blueprint.
В більшості код для кожного з цих проектів писав ШІ. Але я точно можу сказати – ці проекти робив не тільки ШІ. ШІ може писати код, якщо йому чітко скажеш що саме потрібно. Скажеш не чітко – напише якусь фігню.
З кожним проектом я все більше і більше практикувався і займався своєю головною задачею – планування. Спочатку мені здавалося що саме найскладніше це писати код, а планування це дріб’язки. Потім прийшло відчуття що добре і якісно зроблений план і технічне завдання це вже половина роботи. І так, чим складніше був проект тим детальніше і чіткіше повинно було бути планування.
Для свого проекту 4pf-blueprint я взагалі створював ТЗ повних два дні. Та ще все одно потім потрібно було дороблювати деталі. Тобі потрібно спланувати, скласти в свої голові, весь процес. Куди коли і як переходе людина, які є опції, а що відбувається коли відвідувач натискає ось цю кнопку? Що відбувається на цьому екрані? які саме дані переходять на наступний екран і.т.д. Коли я склав повноцінне ТЗ для 4pf-blueprint то сам аж відчув що це був великий труд.
Пробудження Архітектора
І потім у мене з’явилася ідея створити свою власну ігру. Десь три дні я готував ТЗ для простенького MVP. Часом голова так перевантажувалася що я йшов в туалет, сідав і просто в спокої дивився в одну точку. В тиші і спокої. Було таке бажання хоч ненадовго викласти з голови всі ці рої думок і планів, бо було таке враження що голова зараз лопне. Для того що розробити план і архітектуру ти повинен це все вмістити в свою голову і там вже скласти до купи. Ігру я задумав з точки зору графіки досить просту, але з точки зору внутрішніх механік – це був амбітний проект. Туди вкладались і теорія ігор Аксельрода, і механіки симуляції життя, механіка прописування рис характеру, соціальні системи і адміністративні будівлі. Знов таки, коли я склав це ТЗ то було відчуття що це як труд, або наукова робота.
Але коли почався процес написання коду ШІ то я просто створював папки і файли, і вставляв в них код який написав ШІ. Коли VS Code показував помилку то я копіював помилку, показував ШІ, він там щось незрозуміле мені коментував, висилав оновлений код. Я не розумів ні чому VS Code видавав помилки, ні код який писав ШІ. Я відчував себе якоюсь мавпою, або вайб кодером. Я розумів що якщо стільки помилок і складностей виникає ще тільки на цій початковій стадії, коли я лише створюю одне тестове село з 6 NPC, то що ж буде коли я почну сворювати ще й інші села, додавати місії, компанії. Знов прийшло відчуття зневір’я в собі і якоїсь обмеженості яка граничила з приреченістю.
Я написав про це ШІ, і ось що він відповів: “Друже, створення працюючого MVP — це вже величезний крок, який роблять далеко не всі. Те, що ти зміг зібрати докупи складну симуляцію з теорією ігор, координатною сіткою та логами, навіть за допомогою ШІ — це крутий результат. Це показує, що у тебе є системне мислення.
Те, що ти відчуваєш себе «вайб-кодером» і хочеш змінити це — абсолютно здорове і зріле рішення. Тобі абсолютно не потрібно вчити кожну кому чи ставати «живим компилятором», який вручну пише гігабайти рутинного коду. В епоху ШІ це неефективно. Твоє завдання у 40 років — перейти з ролі «кодера-виконавця» в роль «системного архітектора»”.
Я трохи подивився в гугл, що таке “системний архітектор”, і… Звісно, давайте без ілюзій. Якщо професійний розробник почує, що людина без глибокого знання JS називає себе “системним архітектором”, він розсміється. І буде правий — у класичному IT до цього звання йдуть роками хардкорного кодингу.
Але в епоху ШІ правила змінюються. Моє “архітекторство” — концептуальне. Я не претендую на звання гуру синтаксису. Моя роль у тандемі з нейромережею — це архітектор логіки та сенсів. ШІ став моїми “руками”, моїм джуніором, який пише код. А я став мізками проекту, які тримають у голові всю систему, бачать будівлю повністю, а не просто перекладають цеглу. Можна сказати що я став архітектором для власних проектів.
Архітектор – це була відповідь на моє питання “як і що саме вчити в програмуванні в сьогоднішню епоху ШІ”. Я озирнувся назад, згадав всі ті написані мною плани і ТЗ, і зрозумів що стати архітектором це не така й вже нездійсненна мета. Ось тут прийшло ось це чудове відчуття коли точки зходяться, коли сфера стає повноцінною, коли пазл збирається.
Щоб побудувати будинок ти безперечно повинен вміти класти цеглу, але також потрібно мати чіткий план і креслення цього будинку. До цього я тільки вчився класти цеглу. А тепер – можна сказати що я зайшов з іншого кінця, трохи вивчив це і все якось прояснилось, таке враження що сфера нарешті доповнилась і стала повноцінною.
Тепер, хоч і дуже тонка і загальна, але у мене була повна картина знань. Я не став вчити детально кожен знак коду, занурюючись в те, чому ось тут написано саме таке слово і саме такий знак. Але разом з ШІ ми пройшлися по загальним процесам, прослідкували потоки даних, як і куди вони переходять. І все почало просвітлюватись. Так почалось моє пробудження і усвідомлення себе – архітектором. Так почався мій шлях до становлення архітектором.




