Site icon AppTractor

Почему каждый знакомый мне Senior разработчик планирует уйти

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

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

Невидимый налог на продуктивность

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

Разбивка времени (40-часовая рабочая неделя):

В HFT важны микросекунды. Тем не менее, я провожу больше времени в Jira, чем за оптимизацией алгоритмов. Ирония удушающая.

// What I want to write
func optimizeOrderExecution(order *Order) (*Execution, error) {
    return executeWithMinimalLatency(order)
}

// What compliance requires
func optimizeOrderExecution(order *Order) (*Execution, error) {
    // Log entry for audit
    auditLogger.Info("order_execution_started", 
        "order_id", order.ID,
        "timestamp", time.Now().UnixNano(),
        "user", getCurrentUser(),
        "compliance_version", "v2.3.1")
    
    // Validate 47 different compliance rules
    if err := validateCompliance(order); err != nil {
        auditLogger.Error("compliance_failure", "error", err)
        return nil, fmt.Errorf("compliance check failed: %w", err)
    }
    
    // Execute with monitoring overhead
    start := time.Now()
    result, err := executeWithMinimalLatency(order)
    duration := time.Since(start)
    
    // Log everything for three different systems
    metricsCollector.RecordLatency("order_execution", duration)
    complianceDB.LogExecution(order, result, duration)
    auditLogger.Info("order_execution_completed", 
        "duration_ns", duration.Nanoseconds())
    
    return result, err
}

Обёртка для обеспечения соответствия решулятивным требованиям добавляет 40–60 микросекунд задержки. В HFT это разница между прибылью и убытком.

Архитектура разочарования

Архитектура корпоративного программного обеспечения превратилась в настоящего монстра:

┌─────────────┐    ┌──────────────┐    ┌─────────────┐
│ Developer   │────│ Code Review  │────│ Security    │
│  Writes     │    │ (3-5 days)   │    │ Scan        │
└─────────────┘    └──────────────┘    │ (2 days)    │
                                       └─────────────┘
                           │                   │
                           ▼                   ▼
┌─────────────┐    ┌───────────────┐    ┌─────────────┐
│Performance  │────│ Compliance    │────│ Manager     │
│Test (1 day) │    │Review (3 days)│    │ Approval    │
└─────────────┘    └───────────────┘    │ (1-2 days)  │
                           │            └─────────────┘
                           ▼                  │
┌─────────────┐    ┌──────────────┐           │
│   Staging   │────│ QA Testing   │───────────┘
│  Deploy     │    │ (2-3 days)   │
│ (4 hours)   │    └──────────────┘
└─────────────┘            │
                           ▼
                   ┌──────────────┐
                   │ Production   │
                   │ (if lucky)   │
                   └──────────────┘

Общее время: 15–20 дней на исправление ошибки в две строки.

Тем временем мой сторонний проект разворачивается за 30 секунд:

Developer ──► CI/CD ──► Production

Разница в производительности ошеломляет.

Экономика не складывается

Senior разработчики создают огромную ценность, но получают от неё лишь малую часть. Вот расчёты моей нынешней HFT-компании.

Оптимизация алгоритма, которую я внедрил:

Моя годовая компенсация: 280 тыс. долларов

Коэффициент получения ценности: 3.8%

Для сравнения, та же оптимизация алгоритма в качестве стороннего инженера в консалтинге обошлась бы в 500 тыс. долларов с учётом текущих лицензионных сборов.

Кризис технического долга

Устаревшие системы топят нас. Каждое «быстрое исправление» становится постоянной архитектурой:

// Code from 2019 (still in production)
func processLegacyOrder(data string) error {
    // TODO: Refactor this when we have time
    parts := strings.Split(data, "|")
    if len(parts) < 15 {
        // HACK: Handle malformed data from old client
        parts = append(parts, make([]string, 15-len(parts))...)
    }
    
    // WARNING: Magic number mapping - don't change!
    if parts[7] == "X" {
        // Special case for client X (expires 2020)
        return processClientXOrder(parts)
    }
    
    // More hacks for different clients...
    return processStandardOrder(parts)
}

Мы накопили более 50 подобных хаков. Каждый из них делает систему более уязвимой, но бизнес-приоритеты никогда не позволяют провести полноценный рефакторинг.

Взрывной рост числа совещаний

Производительность инженеров обратно пропорциональна частоте совещаний.

2019: 3 часа в неделю на совещаниях, важные функции выпускаются ежемесячно.

2021: 8 часов в неделю на совещаниях, функции выпускаются ежеквартально.

2024: 15 часов в неделю на совещаниях, ничего значимого не выпущено за 6 месяцев.

Корреляция идеальная и разрушительная.

Стратегии выхода, которые я вижу

1. Консалтинг/контракты

2. Бизнес, основанный на продуктах

3. Финансовая независимость

4. Обучение/создание контента

Парадокс производительности

Мы оптимизируем наносекунды в коде, тратя годы на процессы:

// Spend 2 weeks optimizing this
func ultraOptimizedHash(data []byte) uint64 {
    // Custom hash function, 15% faster than standard library
    // Saves 50ns per operation
    return customHashImplementation(data)
}

Ежегодная экономия времени: 0.3 секунды по всем операциям. Время, затраченное на оптимизацию: 80 часов. Рентабельность инвестиций: бесконечно отрицательная.

Между тем, исключение одного ненужного совещания сэкономило бы 52 часа в год.

Причины исхода

Техническая стагнация: Устаревшие системы, технический долг и культура, не склонная к риску, препятствуют инновациям.

Накладные расходы на процесс: Больше времени тратится на процесс, чем на продукт.

Несогласованность стимулов: Создание миллионных ценностей, получение тысяч в виде компенсации.

Размывание автономии: Микроменеджмент и цепочки согласований для тривиальных решений.

Искусственные ограничения: Требования комплаенса, которые увеличивают стоимость, не принося никакой пользы.

Письмена на стене

Senior разработчики — это канарейки в угольной шахте. Мы видим траекторию:

Многие уже навострили лыжи. Удаленная работа нормализовала консалтинг. ИИ-инструменты снизили барьеры для самостоятельной разработки. Финтех демократизировал платежи и банковское обслуживание для создателей.

Будущее распределено

Следующее десятилетие принадлежит:

Традиционной занятости была оптимизирована для индустриальной эпохи — стандартизация, контроль и процессы. Информационная эпоха поощряет креативность, скорость и прямое создание ценности.

Мой график ухода

Этап 1 (следующие 6 месяцев): формирование консалтингового портфеля.

Этап 2 (6–18 месяцев): переход к консалтингу на неполный рабочий день.

Этап 3 (18+ месяцев): полная независимость с доходом от продукта.

У каждого знакомого мне Senior разработчика есть похожий план. Вопрос не в том, произойдет ли это, а в том, когда.

Исход не грядет, он уже наступил.

Источник

Exit mobile version