Skip to content
Все статьи
Разработка8 мин

Веб-разработка 10 лет назад и сейчас: что я бы сказал себе-джуниору

Мой первый продакшен-деплой выглядел так: FileZilla, папка public_html и молитва. Сейчас код попадает на сервер после пайплайна из тестов и сборки Docker-образа. Вот что за это время изменилось, а что осталось ровно таким же.

Azamat AbduyaminovОснователь, ведущий инженер

Около 2015 года я правил сайт прямо на сервере. Открывал файл в FileZilla, менял строчку в PHP, сохранял и обновлял страницу в браузере. Если появлялся белый экран, значит я забыл точку с запятой. Резервной копии не было. Git был, но «для серьёзных проектов».

Сейчас я руковожу маленькой студией в Ташкенте, и наш последний крупный проект, сайт юридической фирмы Enlawyer, уходит в продакшен только после того, как GitLab CI соберёт образ и прогонит проверки. Между этими двумя точками десять лет, и мне захотелось разобрать, что из них реально важно.

Как это выглядело тогда

Типичный проект середины 2010-х у меня: PHP, MySQL, jQuery, Bootstrap 3 и куча плагинов, скачанных с какого-то сайта с архивами. Вёрстка в одном файле стилей на 4000 строк. Форма обратной связи через mail(), которая половину писем отправляла в спам.

Самое странное, что это работало. Клиенты получали сайты, сайты открывались. Просто каждое изменение было маленькой лотереей.

  1. 2015
    jQuery, PHP без фреймворка, деплой через FTP, база правится в phpMyAdmin
  2. 2017
    Появляется Composer, первые фреймворки, Git уже не только «для серьёзных»
  3. 2019
    Vue и React вытесняют jQuery, SPA везде, а с ними и проблемы с SEO
  4. 2021
    Tezda Sotaman на Yii2, Docker для локальной разработки
  5. 2023
    Nuxt 3 и Django, CI/CD на каждом проекте, SSR по умолчанию
  6. 2025
    Next.js и React 19, TypeScript везде, ИИ-ассистенты в редакторе

Tezda Sotaman: Yii2 в 2021 году

Tezda Sotaman — доска объявлений: продажа и аренда жилья, стройка, гостиницы. Мы делали её в 2021–2022 годах на PHP Yii2 (шаблон advanced: отдельные frontend, backend и api), MySQL и с Telegram-ботом на Python рядом.

Главная страница маркетплейса Tezda Sotaman
Tezda Sotaman: Yii2, MySQL и Python-бот, 2021–2022

Сейчас я бы выбрал другой стек, но не потому, что Yii2 плохой. Он предсказуемый, у него отличный генератор кода, и маркетплейс на нём работает. Проблема в другом: в 2021-м уже было тяжело найти в Ташкенте молодого разработчика, который хотел бы писать на Yii2. Все учили React и Python. Стек выбирают не только под задачу, но и под рынок людей, которые будут его поддерживать через три года.

Это был первый урок, который я бы передал себе-джуниору: технология, которую ты выбираешь, становится чьей-то работой потом.

Что поменялось по-настоящему

Если убрать моду, крупных изменений я насчитал четыре.

Тогда (≈2015) Сейчас (2025)
Деплой FTP, руками, в пятницу вечером Docker-образ, GitLab CI, откат одной командой
Фронтенд jQuery и кусочки HTML с сервера Next.js / Nuxt с SSR, компоненты
Типы «Посмотрим в рантайме» TypeScript на фронте, type hints в Python
Окружение «У меня работает» docker compose, одинаковый для всех
SEO Мета-теги вручную Sitemap, structured data, hreflang из кода

Docker и CI убрали страх деплоя

Это главное. Раньше релиз был событием. Сейчас на Enlawyer деплой выглядит примерно так:

deploy:
  stage: deploy
  script:
    - docker compose pull
    - docker compose up -d --remove-orphans
  only:
    - main

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

SSR вернул нас к серверу, только умнее

Забавный круг. В 2015-м HTML рендерил PHP на сервере. Потом все ушли в SPA, где поисковик видел пустую страницу с <div id="app">. Потом пришли Nuxt и Next.js и снова стали рендерить на сервере, но уже с компонентами и гидрацией. Для наших клиентов это важно: юридическая фирма, телеканал или клиника получают клиентов из Google, и пустая страница для робота им не подходит.

Хостинг и SSL

В 2015-м сайт жил на виртуальном хостинге с cPanel, рядом с сотней чужих сайтов. Если сосед ловил вирус, страдали все. SSL-сертификат стоил денег, поэтому половина сайтов в Узнете работала по голому HTTP, и браузеры тогда ещё не ругались.

Сейчас почти каждый наш проект живёт на своём VPS: nginx, Docker, PostgreSQL, Redis. Сертификаты Let's Encrypt бесплатные и продлеваются сами. Мониторинг присылает сообщение в Telegram, если сайт перестал отвечать, и я узнаю об этом раньше клиента. Звучит как мелочь, но десять лет назад о падении сайта я обычно узнавал от самого клиента, и это был очень неприятный звонок.

TypeScript

Я долго сопротивлялся. Казалось, что это лишняя бюрократия. Передумал, когда в одном проекте поле price приходило с бэкенда то числом, то строкой, и мы искали баг два дня. С типами это ловится в редакторе.

ИИ в редакторе: пока без восторгов

Пишу это в августе 2025-го. ИИ-ассистенты уже у всех в команде. Они хорошо пишут шаблонный код, миграции, тесты и переводы интерфейса на узбекский, русский и английский. Мы на этом экономим часы, честно.

Но архитектуру они не придумывают. И уверенно пишут код, который выглядит правильно и ломается на краевом случае. Джуниору это опаснее, чем сеньору: сеньор видит, где ассистент соврал, джуниор нет. Я бы советовал себе молодому сначала научиться писать без ассистента, а потом брать его как ускоритель. Подробнее о том, как мы используем ИИ в студии, я позже напишу отдельно.

Что не изменилось совсем

Вот здесь самое интересное. Десять лет, сменились все инструменты, а сложные места проекта остались теми же.

Разговор с клиентом. Клиент по-прежнему приходит с фразой «нужен сайт как у них» и скриншотом из Instagram. Задача разработчика — выяснить, что на самом деле нужно бизнесу. Иногда это не сайт, а Telegram-бот. Никакой фреймворк этот разговор не заменит.

Сроки. Они всё так же срываются на последних 10% работы: переводы, контент, «а можно ещё вот это». В 2015-м я думал, что это от неопытности. Теперь понимаю, что это свойство проектов, и закладываю буфер.

Контент. Сайт без текстов и фотографий не запустить, и тексты почти всегда приходят последними. На Enlawyer три языка, EN/RU/UZ, и каждая страница существует в трёх версиях. Это больше работы, чем весь фронтенд.

Сайт юридической фирмы Enlawyer
Enlawyer: Next.js, React 19 и Django, три языка

Ответственность. Если сайт клиента упал ночью, звонят тебе. Docker и CI сделали это реже, но не отменили.

Что я бы сказал себе-джуниору

Без лишней философии, просто список. Я бы его распечатал и повесил над столом в 2015-м.

  • Git с первого дня, даже для сайта-визитки
  • Никогда не править код на продакшене руками
  • Бэкапы базы делать автоматически и проверять, что они восстанавливаются
  • Учить основы (HTTP, SQL, как работает браузер), а не только фреймворк года
  • Читать чужой код, особенно хороший
  • Записывать договорённости с клиентом письменно, хотя бы в Telegram
  • Не стыдиться спрашивать, сколько стоит твоя работа

Последний пункт не про технику, но я его оставлю. Первые пару лет я брал за сайты столько, что не покрывал даже своё время. Если интересно, как сейчас складывается цена, у нас есть страница про разработку сайтов с понятными вилками.

И ещё одно. Фреймворки, которые я учил в 2015-м, почти все уже не нужны. А умение разобраться в чужой задаче и довести проект до запуска нужно ровно так же, как тогда. На это и стоит тратить время в первые годы.

Есть задача? Напишите — обсудим.

Пишите в Telegram напрямую основателю студии. Расскажите в двух словах, что нужно — ответим с вопросами и примерной оценкой.