На каких позициях работал в компании?

Ответ

В моей карьере PHP-разработчика я прошел через несколько ключевых позиций, каждая из которых добавляла новый слой экспертизы:

  • Junior PHP Developer (1 год): Мои задачи были сфокусированы на поддержке и развитии legacy-кода на vanilla PHP. Я занимался исправлением багов, реализацией простых CRUD-интерфейсов, написанием SQL-запросов и участвовал в код-ревью, чтобы перенять лучшие практики.
  • Middle PHP Developer (2.5 года): Перешел на современный стек (Laravel/Symfony). Самостоятельно разрабатывал RESTful API для мобильных приложений, интегрировал сторонние сервисы (платежные шлюзы, SMTP), оптимизировал сложные запросы к MySQL с использованием индексов и EXPLAIN, а также начал покрывать код unit-тестами с PHPUnit.
  • Senior PHP Developer (3+ года): Сейчас я отвечаю за архитектурные решения. Например, в последнем проекте мы разбили монолит на микросервисы (Lumen для API, отдельный сервис для обработки очередей через RabbitMQ). Я активно занимаюсь менторингом команды, внедряю стандарты кодирования (PSR), настраиваю CI/CD пайплайны в GitLab и провожу глубокий анализ производительности с помощью XHProf и Blackfire.

Пример из текущей работы (архитектура команды):

// Ответственность Senior-разработчика: проектирование слоя сервисов
class OrderService {
    public function __construct(
        private OrderRepository $repository,
        private PaymentGateway $gateway,
        private EventDispatcher $dispatcher
    ) {}

    public function create(CreateOrderDto $dto): Order {
        $order = $this->repository->create($dto);
        $this->gateway->charge($order);
        $this->dispatcher->dispatch(new OrderCreatedEvent($order));
        return $order;
    }
}

Ответ 18+ 🔞

Ну и вот, сидишь такой, вспоминаешь, как всё начиналось. Эх, ёпта, карьера PHP-разработчика — это вам не хуй с горы скатился, тут каждый этап свой след оставляет, иногда такой, что потом сам от себя охуеваешь.

Начинал, как все, с самого низа — Junior PHP Developer, год отпахал. Задачи были, блядь, однообразные, как день сурка: ковырялся в этом legacy-коде на ванильном PHP, который, ядрёна вошь, писался, кажется, ещё когда динозавры по земле ходили. Чинил баги, которые появлялись из ниоткуда, пилил простенькие CRUD-интерфейсы, SQL-запросы писал. На код-ревью ходил, чтобы понять, как не надо делать, и иногда подсмотреть, как можно. В общем, школа выживания, ебать копать.

Потом, как окреп, вырос до Middle PHP Developer, на два с половиной года застрял. Тут уже повеселее — перебрался на нормальный, современный стек, типа Laravel или Symfony. Уже самому доверяли RESTful API для мобилок пилить, с платежками и почтовыми сервисами интегрироваться. А вот с оптимизацией запросов к MySQL — это отдельная песня. Сидишь, смотришь в EXPLAIN, а там овердохуища всякой хуйни, индексы забыли проставить. Учился покрывать код unit-тестами на PHPUnit, чтобы потом не орать "а оно работало!".

А сейчас уже Senior PHP Developer, третий год идёт. Тут уже, чувак, совсем другая история. Отвечаешь не за строчку кода, а за всю архитектуру, блядь. Вот недавно монолит здоровенный на микросервисы резали — один на Lumen под API, другой под очереди через RabbitMQ. Команду менторю, стандарты кодирования (эти ваши PSR) внедряю, CI/CD в GitLab настраиваю. А ещё любимое занятие — анализ производительности через XHProf или Blackfire. Находишь узкое место, и волнение ебать — чувствуешь себя почти богом.

Вот, к примеру, чем сейчас мозг выношу (архитектура сервисов):

// Ответственность Senior-разработчика: проектирование слоя сервисов
class OrderService {
    public function __construct(
        private OrderRepository $repository,
        private PaymentGateway $gateway,
        private EventDispatcher $dispatcher
    ) {}

    public function create(CreateOrderDto $dto): Order {
        $order = $this->repository->create($dto);
        $this->gateway->charge($order);
        $this->dispatcher->dispatch(new OrderCreatedEvent($order));
        return $order;
    }
}

Вот смотришь на такой код и думаешь — красота, пизда рулю. Всё разложено по полочкам, каждый класс своё дело знает. Не то что в старых проектах, где в одном файле на тысячу строк и бизнес-логика, и работа с базой, и HTML рендерится. Терпения ноль ебать на такое смотреть сейчас.