[Перевод] Как решать сложные (технические) проблемы

image

Мировоззрение


  • Нет сложных проблем. Просто отсутствует информация о том, как работает система
  • Помните, что ошибка возникает по логической причине
  • Будьте необоснованно уверены в своей способности исправить ошибку
  • Чем сложнее будет баг, который вы исправите, тем лучше вы будете
  • Каждая ошибка — это возможность узнать что-то новое

Поиск первопричины


  • Постарайтесь воспроизвести проблему
    • Можете ли вы воспроизвести это из командной строки?
      • Другим людям легче воспроизвести проблему
      • Легче проверить исправление
  • Есть ли логи? Что за сообщение об ошибке?
    • Прочтите описание ошибки. Каждое его слово. Дважды.
    • Есть ли где-нибудь опечатка (командная строка / конфигурация / код)?
  • Изолируйте проблему
    • Удалите некоторые части системы и попробуйте воспроизвести ошибку
    • Меняйте одно за раз, сохраняя все остальное постоянным

Проблема все еще не устранена? Чек-лист


  • Постарайтесь решать сложные проблемы утром на свежую голову и без отвлечения (решите её перед тем, как вы просмотрите: почту, чат, тикет-систему, мониторинг)
  • У вас несколько проблем? Сначала попробуйте решить основную проблему (например, ssh-соединение, которое разрывается каждую минуту)
  • Это действительно проблема или просто недоразумение (работает как положено?)
    • Есть ли функция/политика безопасности, которая блокирует вашу работу?
  • Найдите стабильную среду отладки
  • Проблема возникает только на одном сервере? То же самое работает где-то еще?
    • Какая разница? Проверьте!
  • Когда впервые возникла проблема? Что изменилось?
  • Можете ли вы увеличить журнал логов?
  • Сделайте некоторые проверки на вменяемость
    • Вы на той виртуальной машине?
    • Можете ли вы пропинговать хост?
    • DNS все еще работает?
    • Проверьте сетевой трафик с помощью ngrep/tcpdump. Вы видите то, что ожидаете?
    • Один из дисков полон?
    • Вы редактируете нужный файл?
      • Напишите мусор и попробуйте скомпилировать и проверить синтаксис
    • Проверить систему мониторинга
      • Есть ли проблемы с другими виртуальными машинами заказчика?
      • Есть ли проблемы у других виртуальных машин, работающих на том же гипервизоре?
      • Не работает весь центр обработки данных?
    • Клиент авторизован в системе? Что он делает (проверьте bash_history и ps -u)

Через некоторое время отладки


  • Заставьте себя выразить проблему легко и понятно, чтобы ее поняла даже бабушка.
  • Будьте терпеливы и примите тот факт, что все занимает больше времени, чем ожидалось.
  • Попытайтесь понять, что происходит. Не с помощью бесконечных проб и ошибок
    • Есть ли документация, которая поможет вам разобраться в системе?
    • Поговорите с другими людьми, которые знают систему лучше, чем вы
  • Сделайте перерыв (прогуляйтесь, сделайте зарядку, сделайте глубокий вдох, выпейте воды, съешьте фрукты)
  • Вернемся к началу: в чем проблема? В чем причина проблемы? Какую цель вы пытаетесь достичь?
  • У вас нет времени и вы зациклились на каких-то несвязанных деталях?
    • Используйте другой подход для решения вашей актуальной проблемы

Если вы копируете код из Stackoverflow


  • Не копируйте код из Stackoverflow, не понимая реальной проблемы
  • Не копируйте код из Stackoverflow, не понимая предлагаемого решения
    • Если у вас нет на это сейчас времени => запишите это решение (даже когда вы уже разберетесь с проблемой)
    • Если вы не знаете, что делает команда или инструмент, прочтите документацию (https://explainshell.com)
    • Не копируйте команды/код. Пишите самостоятельно


После решения проблемы


  1. Отличная работа! Я рад, что ты не сдался!
  2. Что вы узнали для себя?
  3. Какие предположения были неправильные?
  4. Как вы можете решить подобную проблему в будущем еще быстрее?


image
Вакансии для тестировщиков
НПП ИТЭЛМА всегда рада молодым специалистам, выпускникам автомобильных, технических вузов, а также физико-математических факультетов любых других высших учебных заведений.

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

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

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


О компании ИТЭЛМА
Мы большая компания-разработчик automotive компонентов. В компании трудится около 2500 сотрудников, в том числе 650 инженеров.

Мы, пожалуй, самый сильный в России центр компетенций по разработке автомобильной электроники. Сейчас активно растем и открыли много вакансий (порядка 30, в том числе в регионах), таких как инженер-программист, инженер-конструктор, ведущий инженер-разработчик (DSP-программист) и др.

У нас много интересных задач от автопроизводителей и концернов, двигающих индустрию. Если хотите расти, как специалист, и учиться у лучших, будем рады видеть вас в нашей команде. Также мы готовы делиться экспертизой, самым важным что происходит в automotive. Задавайте нам любые вопросы, ответим, пообсуждаем.


Список полезных публикаций на Хабре

© Habrahabr.ru