[Перевод] Как решать сложные (технические) проблемы
Мировоззрение
- Нет сложных проблем. Просто отсутствует информация о том, как работает система
- Помните, что ошибка возникает по логической причине
- Будьте необоснованно уверены в своей способности исправить ошибку
- Чем сложнее будет баг, который вы исправите, тем лучше вы будете
- Каждая ошибка — это возможность узнать что-то новое
Поиск первопричины
- Постарайтесь воспроизвести проблему
- Можете ли вы воспроизвести это из командной строки?
- Другим людям легче воспроизвести проблему
- Легче проверить исправление
- Можете ли вы воспроизвести это из командной строки?
- Есть ли логи? Что за сообщение об ошибке?
- Прочтите описание ошибки. Каждое его слово. Дважды.
- Есть ли где-нибудь опечатка (командная строка / конфигурация / код)?
- Изолируйте проблему
- Удалите некоторые части системы и попробуйте воспроизвести ошибку
- Меняйте одно за раз, сохраняя все остальное постоянным
Проблема все еще не устранена? Чек-лист
- Постарайтесь решать сложные проблемы утром на свежую голову и без отвлечения (решите её перед тем, как вы просмотрите: почту, чат, тикет-систему, мониторинг)
- У вас несколько проблем? Сначала попробуйте решить основную проблему (например, ssh-соединение, которое разрывается каждую минуту)
- Это действительно проблема или просто недоразумение (работает как положено?)
- Есть ли функция/политика безопасности, которая блокирует вашу работу?
- Найдите стабильную среду отладки
- Проблема возникает только на одном сервере? То же самое работает где-то еще?
- Какая разница? Проверьте!
- Когда впервые возникла проблема? Что изменилось?
- Можете ли вы увеличить журнал логов?
- Сделайте некоторые проверки на вменяемость
- Вы на той виртуальной машине?
- Можете ли вы пропинговать хост?
- DNS все еще работает?
- Проверьте сетевой трафик с помощью ngrep/tcpdump. Вы видите то, что ожидаете?
- Один из дисков полон?
- Вы редактируете нужный файл?
- Напишите мусор и попробуйте скомпилировать и проверить синтаксис
- Проверить систему мониторинга
- Есть ли проблемы с другими виртуальными машинами заказчика?
- Есть ли проблемы у других виртуальных машин, работающих на том же гипервизоре?
- Не работает весь центр обработки данных?
- Клиент авторизован в системе? Что он делает (проверьте bash_history и ps -u)
Через некоторое время отладки
- Заставьте себя выразить проблему легко и понятно, чтобы ее поняла даже бабушка.
- Будьте терпеливы и примите тот факт, что все занимает больше времени, чем ожидалось.
- Попытайтесь понять, что происходит. Не с помощью бесконечных проб и ошибок
- Есть ли документация, которая поможет вам разобраться в системе?
- Поговорите с другими людьми, которые знают систему лучше, чем вы
- Сделайте перерыв (прогуляйтесь, сделайте зарядку, сделайте глубокий вдох, выпейте воды, съешьте фрукты)
- Вернемся к началу: в чем проблема? В чем причина проблемы? Какую цель вы пытаетесь достичь?
- У вас нет времени и вы зациклились на каких-то несвязанных деталях?
- Используйте другой подход для решения вашей актуальной проблемы
Если вы копируете код из Stackoverflow
- Не копируйте код из Stackoverflow, не понимая реальной проблемы
- Не копируйте код из Stackoverflow, не понимая предлагаемого решения
- Если у вас нет на это сейчас времени => запишите это решение (даже когда вы уже разберетесь с проблемой)
- Если вы не знаете, что делает команда или инструмент, прочтите документацию (https://explainshell.com)
- Не копируйте команды/код. Пишите самостоятельно
После решения проблемы
- Отличная работа! Я рад, что ты не сдался!
- Что вы узнали для себя?
- Какие предположения были неправильные?
- Как вы можете решить подобную проблему в будущем еще быстрее?
У вас будет возможность разрабатывать софт разного уровня, тестировать, запускать в производство и видеть в действии готовые автомобильные изделия, к созданию которых вы приложили руку.
В компании организован специальный испытательный центр, дающий возможность проводить исследования в области управления ДВС, в том числе и в составе автомобиля. Испытательная лаборатория включает моторные боксы, барабанные стенды, температурную и климатическую установки, вибрационный стенд, камеру соляного тумана, рентгеновскую установку и другое специализированное оборудование.
Если вам интересно попробовать свои силы в решении тех задач, которые у нас есть, пишите в личку.
Мы, пожалуй, самый сильный в России центр компетенций по разработке автомобильной электроники. Сейчас активно растем и открыли много вакансий (порядка 30, в том числе в регионах), таких как инженер-программист, инженер-конструктор, ведущий инженер-разработчик (DSP-программист) и др.
У нас много интересных задач от автопроизводителей и концернов, двигающих индустрию. Если хотите расти, как специалист, и учиться у лучших, будем рады видеть вас в нашей команде. Также мы готовы делиться экспертизой, самым важным что происходит в automotive. Задавайте нам любые вопросы, ответим, пообсуждаем.