Были ли случаи, когда вы не соглашались с решением руководства?

«Были ли случаи, когда вы не соглашались с решением руководства?» — вопрос из категории Софт-скиллы, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

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

Я подготовил аргументы и альтернативное решение:

  1. Проблемы глобального состояния: сложность тестирования, race conditions в многопоточных средах
  2. Предложил решение: паттерн Registry или простой класс-обертку с статическим доступом
  3. Привел пример кода, показывающий обе реализации

Исходный подход:

// Глобальная переменная
$GLOBALS['config'] = ['db_host' => 'localhost'];

Мое предложение:

class ConfigRegistry {
    private static array $config = [];

    public static function set(string $key, $value): void {
        self::$config[$key] = $value;
    }

    public static function get(string $key) {
        return self::$config[$key] ?? null;
    }
}
// Использование: ConfigRegistry::get('db_host');

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