Предыстория тут.

Первые ощущения

Возвращение началось с осознания, что мир IT уже не тот, каким я его помню. Хотя бы потому что работодатель понял, что программист не равно администратор сети и/или СУБД, тем более не просто "компьютерщик" на все руки. Я не говорю уже про массовое появление IT-компаний/стартапов, в которых вообще всё по ролям.

Конечно, что-то было дико. Например, отдельные UI/UX, дизайнер, проектировщик, фронтенд, бэкененд разработчики, DevOps, тестировщик. Раньше это было 1, максимум 2 человека.

Следующим, что сильно бросилось в глаза - это куча фреймворков. В принципе, в своё время мы шли к этому, даже вроде в маленькой муниципальной компании, но мы работали над неким "конструктором". Ведь по сути, самое сложное было описать логику, а после этого очень много времени тратилось на рутину: фактически одни и те же блоки. Да и до этого, на том же PHP, мы таскали с собой свои библиотечки от проекта к проекту.

И, конечно, меня не может не радовать внедрение менеджеров пакетов. Помню как радовался ports на FreeBSD, когда начинал своё знакомство с ней.

Первый шаг

Само собой при таком изобилии глаза разбежались: что учить, за что хвататься, какой фреймворк выбрать. (Спойлер: до конца не определился до сих пор). Перебором, что мне было бы интересно, остановился на Web и PWA. Казалось заманчивым написать сервис, да ещё и сделать его кроссплатформенным, почти как нативное приложение (так я тогда думал).

Путём недолгих поисков я нашел, что PWA очень легко делается из angular: добавил пакет и готово. За чем дело встало. Поставил angular и ввел свой первый ng g NewProject. Так родился мой собственный todo list. С сервисами, гвардами, интерцепторами. Правда без привязки к БД, структура и начальные настройки были вшиты в проект, остальное в памяти, имитируя вызовы API (т.е. метод как полагается возвращает Observable, компонент на него подписывается, но внутри только работа с массивом данных).

Поднимать бэкенд и делать полноценный REST тогда не стал - ведь цель Angular. Собственно в тот раз всё и закончилось.

Следующий подход я сделал к Telegram. Появилась идея написать бота. Писал на чистом PHP без библиотек и фреймворков. Выбор был обусловлен, что PHP я знаю, и у меня есть Shared-хостинг с ним. Это был простенький бот, который парсил сайт с ПП-рецептами и постил краткое описание и ссылку в канал.

Шаг 2. NeoTrack

Первый успех окрыляет, и мне пришла в голову идея написать трекер активности с геймификацией для Telegram. Выбор на чём писать был очевиден: PHP и angular, база на MySQL. Для API в этот раз я использовал Slim. Если с бэкендом вроде всё понятно, то при написании WebApp я столкнулся с изменениями в angular. К примеру, первый и пока единственный опыт у меня был с NgModule, а тут все говорят это не тру, и надо в standalone. Ещё с тем подходом не до конца разобрался, но ладно. Плюс работа с промисами и обзервабл немного претерпела изменения. В общем, пришлось переучиваться на ходу.

Как сумел, потратив месяца 1.5-2, я в итоге закончил: полноценный CRUD через REST API, сам бот, WebApp, и даже движка текстовых миссий, кривенькая, но более-менее рабочая. Это была моя гордость. Кстати, бот до сих пор работает (@nt_neotrack_bot). Напоминанием, что техническая часть проекта - это ещё не всё. Без продвижения он просто мёртвый груз. Невнятные попытки познакомить людей с ботом не увенчались успехом. Кажется, любителям текстовых игр нет надобности считать калории, а те, кто хочет похудеть необязательно любят квесты. А может потому, что до WebApp надо ещё дойти и первые данные нужно вводить как в консоль. Непризнание моего "гения" поубавило уверенности, и я подзабил на какое-то время.

Снова шаг 2. Prepora

Вдохновляясь и опуская руки, я топтался на месте, делая те же шаги снова. Поэтому, решив в очередной раз испробовать свои силы, мне вновь приходилось вспоминать, что и как. И вновь что-то менялось. Например, в angular появились сигналы. Часть кода, которую я писал, помечалась deprecated. Но тут на помощь пришёл ИИ. Не то, чтобы я ему доверял. Первые попытки писать код с ChatGPT были провальными, но с того времени, как выяснилось, многое изменилось.

Последний проект (Prepora) я закончил за 2 недели вместе с Claude Sonnet. Он писал мне куски кода (где-то даже целые компоненты например с шифрованием), разъяснял суть нововведений. Ну и помогал с дизайном - это моя большая проблема ещё с давних времён.

На текущий момент надо завершить нелюбимую часть: сверстать красиво формочки ввода/вывода.

В этом проекте я уже пошёл дальше: попытался привести трафик с VC, но увлёкся "рекламой" и был благополучно забанен. Настроил индексацию Google и Яндекс. Гуглится по "prepora кризис". Выдаётся лэндинг, приложение ж недопилино (а так живет в /app/, если интересно).
И совершенно новым для меня стало использование github actions для деплоя. Да, до этого build -prod и ручками через FTP заливал.

Озарение

И тут мне пришло озарение, вернее несколько. И не сразу, но они хорошо выделяются как этап. Во-первых, ИИ позволяет из одного человека сделать целую команду из-за чего меня мечет в стороны, ведь можно не углубляться в программирование, а шагнуть в ИИ и научиться как всё организовать. Люди за месяц поднимают коммерческие проекты, и зарабатывают на них деньги. И я тоже так хотел бы, но пока не уверен в своих силах.

На этом фоне пришло второе озарение, хотя я бы назвал это воспоминание. В ту бытность я наслаждался процессом познания. Мне не нужно было признания, денег - я просто хотел знать как всё устроено, как сделать так как я хочу, или как "в той программе". Просто получая удовольствие я рос.

Поэтому пока мне кажется, что ИИ для меня как такси - позволяет быстро добраться до точки Б, но я вроде бы хочу научиться ездить хорошо сам. А если посадить меня таксовать, нет гарантии, что всё пройдет без эксцессов. ИИ сейчас учитель и консультант, иногда подмастерье. Всё же я хочу изучить ремесло сам.

Просто ещё один проект

Однако всему своё время сказал я, и решил посмотреть на React. Здесь я закончил за 2 дня. Проект оказался проще чем я планировал, в ходе реализации я отказался от СУБД и админки: данные статичные и их немного. На бэкенде 1 endpoint на Flask, который отдает картинку. Первый опыт такой реализации: во-первых, данные подтянул в память (благо их немного), во-вторых, сгенерированную картинку сохраняю в файл и если что отдаю её. Конкретно здесь, посчитал уместно, данные почти не обновляются.
Фронтенд ещё проще: небольшой лэндинг, и табличка с фильтрами, и Infinite scrolling. И само собой запрос к этому API.

Что я скажу про React: я проникся. Пока angular мне нравится больше, а может потому что я React ещё плохо знаю. А чтобы это понять я решил жесткануть (по своим меркам): Flask SQLAlchemy React+Vite Zustand, если смогу поставить еще Redis. Пока тоже на Shared-хостинге, но если решусь на docker, то думаю перееду на VPS. Пока мне github actions вполне хватает. О нем постараюсь писать "по ходу пьесы".

Заключение

Заключение, но не конец. Мой путь только начался, но я понял главное: если есть возможность, нужно позволить себе отдаться этому делу без оглядки на признание/популярность/деньги. Нет, это круто, когда получается совместить обе составляющие.
Где-то в глубине я даже подумываю устроиться в найм (хоть и обещал себе не лезть туда снова). Не верю я, что чатГПТ сможет рассказать как на практике устроены процессы в коммерческой разработке.

P.S. все проекты живут на https://github.com/Anderskaev
Пишу на английском т.к. уровень C2 - это моя ещё одна цель.

P.P.S: Буду рад если вдруг пнёте, что не так в проектах, или совет какой дадите. К сожалению, за время моего отсутствия в IT в моём окружении не осталось пишущих программистов.

Комментарии (0)