Зачем нужна диагностика автомобиля?
Если выразиться максимально просто – для того чтобы понять, почему загорелась тревожная желтая или, еще хуже, красная лампочка на панели приборов. А именно, индикатор, свидетельствующий о внезапной поломке или сбое в работе двигателя, трансмиссии, системы подачи топлива, зажигания, газораспределения, кондиционирования и т.д.
Все эти процессы в автомобиле контролирует электронный блок управления (ЭБУ). Он собирает данные с нескольких десятков датчиков, обрабатывает их и передает команды исполнительным узлам. В случае же появления неисправностей сигнализирует индикатором, например, Check Engine.
Чтобы понять, какой именно узел или агрегат поврежден, проводят диагностику автомобиля с помощью приложения для Андроида или программы на компьютер. Данную услугу успешно выполняют на любых СТО, но можно осуществить и самостоятельно. Сэкономите несколько тысяч рублей, как минимум.
На наш взгляд, использовать для диагностики авто приложения на базе Андроид или IOS, можно. Однако, если сканирование выдаст серьезные коды ошибок (неисправность в двигателе или трансмиссии), желательно повторить процедуру вместе с профессиональными мастерами.
Для сканирования можно также отнести специальные устройств, например, недорогой мультимарочный сканер Rokodil ScanX.
Основными преимуществами конкретно этого адаптера является его совместимость с большинством автомобилей начиная с 1993 года выпуска и точная диагностика по всем узлам и агрегатам. Также стоит отметить наличие Bluetooth версии 4.2, что позволит подключить устройство не только к Windows или Android, а также к iOS
Как пользоваться такими программами?
В защиту программ для считывания ошибок автомобиля для Андроида подчеркнем, их использовать гораздо проще, чем софт для ПК. Каким образом проводят сканирование?
ТОП приложений на Андроид для диагностики авто
Ну что же, мы подошли к самому интересному – к обзору лучших программ для диагностики авто на Андроид.
Carista Obd2
Приложение функционирует с 2013 года, последнее обновление в Play Market вышло 30 июня 2020. Есть платная версия с расширенным функционалом (1 неделя – 10$, 1 год – 40$). У компании разработчика есть собственный адаптер – если купить, месяц использования Pro версии предоставляется бесплатно.
По мнению пользователей, это одно из лучших приложений для диагностики автомобиля на Андроид, даже на уровне бесплатного функционала (базовая проверка двигателя, системы газораспределения, анализ токсичности выхлопов). Расширенное сканирование (не хуже, чем в сервисном центре) позволяет протестировать все модули автомобиля – антиблокировочную систему, тормозную, подушки безопасности, датчики давления в шинах и т.д.
Также программа предоставляет и дополнительный функционал – персонализация настроек, разблокировка скрытых функций и т.д.
Hob Drive
Второе место в нашем рейтинге лучших программ для диагностики автомобилей для Андроида отводится клиенту Hob Drive. Приложение представляет собой тройной сервис – бортовой компьютер, анализатор расхода бензина и средство диагностики через OBD2/ELM327.
В Play Market доступна как платная, так и бесплатная версия. Последняя позволяет выполнить текущую диагностику ошибок автомобиля, первая осуществляет постоянное слежение и оперативное оповещение, а также контроль перегревов и подозрительных лагов.
Бортовой компьютер фиксирует расход топлива, выполняет замеры мощности. В программе есть встроенная опция планирования поездок – оценка времени езды на остатке бака, записи о заправках, статистика маршрутов, расчет расходов. Интерфейс можно настраивать по своим предпочтениям, есть много встроенных тем.
InCar Doc
Приложение на Андроид, осуществляющее полную лаунч диагностику авто для сканера с процессором elm327/OBD2.
Выполняет полное сканирование автомобиля, с диагностикой, мониторингом и ведением журнала статистики. Распознает причину индикатора Check Engine, расшифровывает коды ошибок, выполняет очистку старых кодов.
Есть платная версия с расширенным функционалом. Работает в режиме настоящего времени – анализирует параметры двигателя, расход топлива, фиксирует заправки, магазины, сервисы, запоминает местоположение автомобиля и др.
Torque Pro
Еще одна неплохая программа на телефон для диагностики автомобиля, также имеется сокращенная Lite версия (бесплатная).
Продвинутый же вариант предлагает следующие возможности:
Piston
Завершает наш ТОП-5 программа для чтения ошибок автомобиля для Андроида, лидер по простоте интерфейса и лаконичности доступного функционала. Приложение очень простое, но отнюдь не менее эффективное. А еще, оно полностью бесплатное. Помимо диагностики, позволяет выбрать датчики, которые необходимо контролировать. Недостатком программы является отсутствие встроенной расшифровки кодов.
В Play Market можно найти еще с десяток отличных программ на смартфон для диагностики автомобилей. Мы выбрали только лучшие – с большим числом функций, самыми хорошими отзывами и высокими рейтингами. Вы вольны протестировать их все или остановиться на любой другой. Однако, как показывает практика, дальше нашей пятерки мало кто уходит.
Программы для сканирования автомобиля для Андроида, однозначно, помогают следить за исправностью работы ЭБУ, причем, на любительском уровне. То есть, даже не имея специальных навыков и знаний в этой сфере, вы сможете сделать грамотную диагностику, как в сервисном центре. К слову, многие мастера там также пользуются подобными приложениями для Андроид. Так зачем платить деньги за услугу, которую легко выполнить своими руками? Сканер стоит недорого, большинство программ доступны бесплатно, подключение – элементарное. Попробуйте! Хуже точно не будет!
Программы для автодиагностики через ноутбук
Компьютерная диагностика невозможна без применения специальных программ, обеспечивающих расшифровку данных и вывод информации на дисплей. Ниже рассмотрим основных представителей ПО для сканеров.
OpenDiagPro
Программа является универсальным решением для автомобилей отечественного производства. Подходит для машин марок УАЗ, ГАЗ, ВАЗ, ZAZ. Оптимальный вариант для применения адаптера ELM327. Приложение наиболее востребовано и подходит для диагностики современных и не очень современных авто.
ScanMaster ELM 2
Софт ScanMaster ELM 2.1 представляет собой многофункциональное ПО, которое успешно функционирует с иномарками и отечественными машинами. Приходится как профессионалам на СТО, так и начинающим диагностам, планирующих сделать работу самостоятельно.
ForScan
Программа ForScan предназначена для марок Меркури, Мазда, Форд и Линкольн. Сканирует датчики, которые установлены в машине, АБС, подушки безопасности, сигнализацию и систему торможения.
Предусмотрена функция программирования и настройки конфигурации. При желании можно сделать чип-тюнинг автомобиля. Работает с Вай-Фай, Блютуз и USB адаптерами.
TiggoDiag 1
Программа TiggoDiag 1.2.0.3 подходит для адаптеров, изготовленных на базе ELM327. Применяется для автомобилей Черри и Греат Вол. Подходит для некоторых моделей бренда Митсубиси. Применяется для работы с USB-адаптерами.
PROScan
Софт PROScan представляет собой универсальное решение для ELM327 сканеров. Устройство имеет стандартный функционал, способно строить таблицы и графики.
С помощью ПО можно получать сведения об ошибках и стирать их в случае необходимости. Применяется, как правило, с USB-сканерами.
Программы для ELM327 под Android
Многие программы для сканеров ELM327 распространяются в двух вариантах: бесплатном и расширенном, профессиональном (Pro). Есть приложения, которые позиционируются в качестве бесплатных, но требуют оплаты за некоторые дополнительные функции. Есть также профессиональные продукты, которые допускают использование сильно урезанной демоверсии для ознакомления с функционалом. Большинство программ для сканеров под Андроид поддерживают связь с мобильными устройствами по Wi-Fi и Bluetooth.
Одна из самых популярных программ для сканеров ELM327. Есть русский вариант интерфейса с незначительными неточностями и недоработками перевода. Пользователям доступно два варианта ПО. Один — полностью бесплатный (Lite). Второй (Pro) обладает расширенным функционалом и обойдется в 165 рублей.
Даже бесплатная версия отличается весьма неплохими возможностями. В их число входят следующие функции:
Базовая версия обладает хорошим функционалом для проведения диагностики основных систем автомобиля, мониторинга важных параметров во время движения, устранения некоторых ошибок. Версия Pro характеризуется расширенным функционалом диагностики и исправления ошибок, включая расшифровку кодов.
OpenDiag Mobile
Программа разработана российскими специалистами и предназначена для работы с отечественными инжекторными автомобилями. Среди преимуществ — аутентичный русский интерфейс и хороший набор бесплатных функций, а также возможность связи по кабелю USB (в дополнение к Wi-Fi и Bluetooth).
Приложение обеспечивает диагностику следующих блоков и систем:
Программа позволяет определять количество топлива, необходимое для поездки, выводит на дисплей информацию о температуре охлаждающей жидкости, воздуха, давлении топлива и пр. Все сведения отображаются на русском языке. Загрузившие бесплатное приложение пользователи могут при необходимости докупать дополнительные платные блоки.
EOBD Facile
Ещё одна удобная программа для сканера ELM327 на русском языке. Базовый вариант является бесплатным, но некоторые функции доступны только в премиальной версии.
Премиальная версия позволяет не только определять коды ошибок, но и удалять их.
ScanMaster Lite
Очень удобное и довольно простое в обращении приложение для сканера ELM327 с русским интерфейсом. Несмотря на бесплатный статус, отличается очень хорошим набором функций. Планируется выпуск расширенной версии Pro.
Интересная опция — наличие режима паузы, который позволяет прокручивать уже записанные сведения, изменяя размеры графиков.
Car Scanner ELM
Профессиональная программа для тестирования и диагностики через сканер ELM327. Одно из лучших приложений с русским языком и очень широкими возможностями.
Программы для ELM327 под iOS
В отличие от ПО из предыдущего раздела, данные программные продукты обычно не предусматривают связь сканера с мобильными устройствами через Bluetooth. В большинстве случаев здесь используется только Wi-Fi.
Некоторые описанные выше программы имеют свои русские версии и под iOS. В частности, это относится к EOBD Facile и Car Scanner ELM.
InCarDoc OBD2
Бесплатная программа с русским интерфейсом для работы iPhone со сканерами ELM327.
Кроме стандартного диагностического функционала с мониторингом параметров, выводом на дисплей ошибок, их расшифровкой и возможностью частичного удаления, в inCarDoc предусмотрена также функция экономайзера.
ХобДрайв
Приложение с русским интерфейсом для владельцев iPad.
ELM327 программы для компьютера или ноутбука (Windows)
Эти elm327 программы предназначены для диагностики автомобиля с помощью компьютера, устанавливаются на компьютеры на базе Windows. В описании к программе написано для каких автомобилей она предназначена, а так же с какими типами адаптеров она работает — USB, Wi Fi или bluetooth.
Самая универсальная и функциональная elm327 программа. Отлично работает как с иномарками, так и с автомобилями Российского производства. Рекомендуем начинать диагностику именно с этой программы.
Работает с адаптерами: USB, Bluetooth, Wi-Fi
Программа для диагностики всех моделей русского автопрома (ВАЗ, ГАЗ, УАЗ и др.). Поддерживает несколько видов адаптеров, в том числе и elm327. Это самая удобная программа для диагностики русских авто. Если у Вас русский автомобиль, то рекомендуем использовать именно эту программу.
Эта elm 327 программа создана специально для автомобилей марок: FORD, Mazda, Lincoln и Mercury. Она имеет огромные возможности, сканирует все блоки авто, включая подушки безопасности, ABS и прочее. Есть возможность конфигурации и программирования параметров.
ELMConfig
Эта программа так же для автомобилей FORD. Умеет работать со всеми модулями авто, а так же, помимо диагностики, даёт возможность калибровки и конфигурирования.
ScanXL
Программа отлично работает со множеством марок автомобилей и имеет отличный набор функций.
Это универсальная elm327 программа. Имеет все необходимые функции: замеряет параметры, строит графики, считывает и стирает ошибки и многое другое. К сожалению русского языка нет.
ELM327 программы для iPhone и iPad (iOS)
Ниже представлены elm327 программы для использования на iPhone и iPad, т.е. на смартфонах и планшетах с операционной системой iOS. Программ для этих устройств достаточно немного и, как правило, все они на английском языке. Но мы всё таки постарались подобрать для Вас хорошие программы с лёгким освоением и широким набором функций. Обратите внимание, что устройства от Apple поддерживают только Wi-Fi адаптеры, потому программы, соответственно тоже.
DashCommand
Достаточно хорошая, со всеми необходимыми возможностями, elm327 программа для iPhone и iPad. Она универсальна и подходит для диагностики огромного количества авто. Проста в освоении и интуитивно понятна несмотря на отсутствие русского языка.
Работает с адаптерами: Wi-Fi
OBD Car Doctor
Простая и удобная программа на русском языке. Позволяет считывать параметры работы двигателя, а так же есть возможность считывать и стирать ошибки engine check.
ELM327 программы для Windows Phone
Ниже представлены elm327 программы для смартфонов на базе Windows Phone.
Работает с адаптерами: Bluetooth, Wi-Fi
Кроме мобильных приложений для телефонов на ОС «Андроид», для автодиагностики можно использовать программные приложения для ОС Windows.
В заключении следует отметить, что необходимую автомобилю диагностику можно выполнять самостоятельно, экономя на недешевых услугах СТО. Для этого достаточно приобрести диагностический сканер и установить на смартфон, планшет или ПК специализированное программное обеспечение.
При выборе диагностического ПО, обращайте внимание на функционал, наличие русскоязычного меню, возможность установки дополнительных функциональных плагинов, способность приложений составлять аналитические отчеты, передавать данные по Интернету, расшифровывать и удалять ошибки в ЭБУ. В принципе, имеющихся в Сети бесплатных приложений достаточно для проведения большинства диагностических операций. Но даже платная программа обойдется намного дешевле, чем услуги диагностики в автосервисах.
Программы для айфона
Утилиты для установки на iOS поддерживают Wi-Fi, что очень существенно при диагностике с айфона. Таких разработок немного, но они вполне функциональны.
InCarDoc IPhone
Подходит только для автомобилей, поддерживающих функцию OBD-II. Работает в реальном времени.
Читает ошибки, сохраняет параметры, очищает ошибки. Определяет VIN номера кузова, определяет координаты при поддержке GPS. Установить программу можно, скачав ее в App Store.
Engine Link
Одна из востребованных утилит для айфонов. Работает со множеством авто. Предусмотрена функция диагностики блоков управления дизельными двигателями. Подходит для считывания сканером ELM327 (Wi-Fi версия). Что может программа:
Поддерживает OBD-II и EOBD. Для работы с программой необходима совместимость с ЕЛМ Bluetooth Low Energy (для iPhone 4 и более поздних версий) или адаптер Wi-Fi.
EconTool ELM327 for Nissan
EconTool ELM327 for Nissan – ещё одна из лучших диагностических программ для OBD2. Предназначена исключительно для бензиновых автомобилей Nissan до 2008 года выпуска (но работает и с более свежими автомобилями). Является бесплатной, предоставляя те же опции, что и другие подобные программы, но при приобретении PRO-версии открывает дополнительную возможность: позволяет читать и сбрасывать ошибки.
Внимание: для дизельных моделей Nissan утилита не подходит!
ELMScan Toyota
Если вы являетесь владельцем Toyota или Lexus, ELMScan Toyota является хорошей программой для OBD2 на русском языке. Несмотря на то, что программа создана специально для вышеуказанных автомобилей, она также совместима с автомобилями других марок, которые обладают подходящим разъёмом для подключения диагностики. Предлагается в двух версиях: платной и бесплатной, отличается интуитивно-понятным интерфейсом, но хотя и является полностью русифицированной, всё-таки английские термины в ней кое-где да встречаются.
ELMScan Toyota вошла в список лучших программ для диагностики obd2, благодаря своим возможностям:
Эта одна из лучших программ для OBD2 на Android раскроет все секреты работы двигателя, трансмиссии, круиз-контроля, иммобилайзера, вспомогательных систем безопасности, подвески, электроусилителя руля, а также других датчиков автомобиля.
Важно: в бесплатной версии программы отключена поддержка многих датчиков, так что для эффективности диагностики рекомендуется сразу приобретение полного пакета функций.
После несерьёзной статьи на серьёзную тему Job Safety Driven Development возникла идея написать о том, как появляются ошибки разработчиков. Вместо этого появилась статья «Почему всё ломается даже у хороших программистов?» (Часть 1 и Часть 2). Мысль нужно закончить. Уже рассмотрено два краевых случая, давайте посмотрим и на «обычные» причины ошибок программистов. Тема необъятная, поэтому затронем только основные моменты. Эту статью тоже пришлось разбить на 2 части (Часть 2). Как всегда, попробую писать простым языком, понятным широкой аудитории.
Меня зовут Константин Митин, я сооснователь и руководитель компании АйТи Мегастар/АйТи Мегагруп. Когда-то был простым разработчиком, работал в L3, дорос до тимлида, затем и до руководителя филиала разработки крупной ИТ-компании. Теперь я в АйТи Мегагруп.
Ошибка — это очень сложный и многогранный термин. Иногда ошибки рассматривают через призму вины либо чего-то подобного. Но можно смотреть и через призму цены ошибки, мы уже немного касались этого вопроса в статье «Право на ошибку. Деньги и методологии разработки в ИТ». Однако ошибка как явление нуждается в отдельном рассмотрении. Без этого мы не сможем анализировать ошибки программистов.
Об ошибках
Обычно «ошибкой» называют нечто сделанное неправильно и повлёкшее за собой негативные последствия. Если сделано неправильно, но последствия позитивные, то это не «ошибка», это «находка». Когда мы сделали всё правильно, но последствия всё равно негативные, то это уже «риски». В ситуациях, когда мы не знаем, что является правильным, а что нет, мы тоже работаем с «рисками», вне зависимости от последствий.
У ошибок есть не только цена, но есть ещё и ценность. Заметная часть нашего опыта состоит из сделанных нами же ошибок. Да, можно учиться на чужих ошибках, но удаётся такое не всем и не всегда. Иногда нужно дорасти (накопить свой опыт) для того, чтобы воспринимать чужой опыт и извлекать из него ценность.
Кроме того, не очевидно и не популярно, но опыт тех, кто смог, более ценный, чем опыт тех, кто не смог. Путей сделать правильно и успешно — немного, путей сделать неправильно и неуспешно — бесчисленное множество. Однако, чтобы воспринимать чужой позитивный опыт, необходимо уже иметь какой-то свой опыт, чтобы иметь возможность оценить те подводные камни, которые обошёл владелец позитивного опыта.
Вряд ли для человека в жизни существует возможность избежать ошибок. И дело не в том, что не ошибается только тот, кто ничего не делает. Часто бездействие — очень тяжёлая и дорогая ошибка. Мы начинаем ошибаться ещё в раннем детстве, причём делаем это радостно и с энтузиазмом. Когда мы учимся ходить, мы множество раз падаем. То есть делаем что-то неправильно, падаем и получаем негативный стимул в виде боли от падения. Но мы его игнорируем и опять пытаемся встать и пойти.
Не совсем очевидно, но ценность падений в детстве, при попытке научиться ходить, во много раз выше, чем цена таких ошибок. Мы не столько пытаемся ходить неправильно, сколько готовим и развиваем своё тело до пригодного к хождению состояния. Без этих попыток тело разовьётся неправильно, оно будет слишком слабым, и мы вообще никогда не сможем ходить. Цена же ошибок при обучении ходьбе — маленькая, нам обычно даже весело платить такую цену.
В детстве, когда мы прикасаемся к горячей плите, мы наконец понимаем, что такое горячо, почему это больно и нельзя. Без этого мы не поймём слова своих родителей: «Нельзя. Горячо». Либо даже неправильно усвоим этот урок, сформировав неверную связь в своём мозгу «кухонная плита — страшно» путём копирования беспокойства родителей. Какие-то правила приличия мы усваиваем через стыд. Это аналог боли, который нужен, чтобы ребёнок учился. За какие-то ошибки мы чувствуем вину. Это тоже аналог боли.
Задача наших родителей и учителей состоит в том, чтобы мы не нанесли себе невосполнимый либо просто серьёзный вред в процессе обучения.
Детство — счастливое время, когда цена ошибок минимальна. Во взрослой жизни всё не так. Растёт цена, многие действия и решения являются невозвратными. Повышается актуальность использования чужого опыта.
Негативные паттерны поведения
Ошибки кроме цены и ценности имеют ещё фактор продолжительности. Программисты иногда шутят, что быстро поднятое упавшим не считается. Но только если это был единичный случай. Нельзя надеяться на то, что человек сможет не ошибаться. Но из ошибок нужно делать выводы и исправлять их. Проблемы возникают, когда возникают систематические ошибки, которые обычно опираются на неверно сформированные представления о том либо ином процессе. Их ещё называют негативными паттернами поведения.
Для примера рассмотрим занятный психологический эффект в виде негативного паттерна «Ошибка выжившего». Эффект проявляется в том, что человек сосредотачивается только на опыте тех, кто не смог, оправдываясь неверной трактовкой когнитивного искажения «Ошибка выжившего». Разберём этот случай как пример искажения изначально верной и рабочей идеи до состояния негативного паттерна поведения.
В статистике существует такое понятие, как «систематическая ошибка отбора». Их много разных, но нам нужна «систематическая ошибка выжившего». Это когда по одной группе объектов данных много, а по другой группе объектов данных мало. Если у всех объектов будут одинаковые веса, без учёта доступности информации по группам, результат анализа будет искажённым.
Давайте просто поймём, что математики и авиационные инженеры — не глупые ребята, а военные лётчики по возвращению на базу пишут отчёты и о том, как погибли их товарищи тоже.
Но для описания когнитивного искажения «Ошибка выжившего» нужно было рассказать красивую историю, её и рассказали. Изначально посыл был правильным, то есть: «Воспринимайте любую историю успеха или неуспеха, как одну из версий развития событий, а не как истину в последней инстанции».
Например, у многих крупных бизнесменов есть истории успеха. Но никто не гарантирует вам, что, попробовав повторить их, вы сами сможете преуспеть. Хотя бы потому, что в историях успеха даётся не вся информация. Иными словами, вы можете попробовать стать миллиардером, как Билл Гейтс, начавший бизнес в гараже у родителей. Вот только ваш прадедушка должен быть сенатором, дедушка вице-президентом национального банка, а ваши отец и мать должны быть представителями советов директоров крупных банков, вот не меньше.
Воспринимайте любую историю успеха или неуспеха, как одну из версий развития событий, а не как истину в последней инстанции.
Ну и ещё бы вам стоило помнить, что минимум 90% всех начинаний в бизнесе оканчиваются провалом. Однако, если кто-то в своё время упал с лошади и теперь боится заниматься верховой ездой, это ещё не значит, что всадников на лошадях не существует. И это не значит, что существующие всадники никогда не падали с лошади, скорее всего, они это сделали и не раз.
Потом изначально правильный посыл превратили вот в это: «Воспринимайте любую историю успеха, как одну из версий развития событий, а не как истину в последней инстанции. Найдите неудачную статистику или истории провала и посмотрите, что в них пошло не так».
Звучит похоже, но призывает концентрировать своё внимание на статистике неудач. Не учитывая, что способов сделать неправильно много больше, чем способов сделать правильно. Как результат — обесценивание позитивного опыта. То есть в неверной трактовке когнитивного искажения «Ошибка выжившего» содержится систематическая ошибка отбора под названием «Систематическая ошибка выжившего», на которую эта же трактовка попытается сослаться для оправдания неверных выводов.
Запомните этот момент. Даже хорошие и правильные идеи могут быть искажены до состояния своей полной противоположности.
Данный эффект одинаково хорошо проявляется в сфере ИТ и в сфере бизнеса. Равно как и последствия поверхностного подхода к делу. Потому что в работе бизнесмена и работе программиста часто приходится делать что-то новое, и сказать, как это сделать правильно, изначально не может никто вокруг. Приходится придумывать, пробовать, ошибаться, пробовать опять и достигать результата.
Интерактивное программирование
Не стоит воспринимать программиста как человека, который никогда не ошибается. И тем более не стоит воспринимать программиста как человека, который не имеет права на ошибку. Программист — это не кардиохирург, проводящий операцию над открытым сердцем, где дрожь в руках может стоить человеку жизни. Программист — это не сапёр, проводящий разминирование, где стоимость ошибки — оторванные конечности.
На самом деле, вся суть работы программиста состоит в том, чтобы на машинном языке сказать вычислительному механизму, что он должен исполнить. То есть описать программу действий исполнительного устройства. Отсюда и название профессии — программист. Да, иногда эта работа похожа на составление заклинания для вызова и подчинения демона. Ошибся в заклинании, и демон тебя накажет. Дашь возможность демону истрактовать сказанное ему двояко, он сделает это самым неожиданным для тебя образом.
Но давайте будем честны перед друг другом. В отличие от сказочных волшебников-заклинателей, программисты составляют свои послания на машинном языке в безопасных лабораторных условиях, на эмуляторах демонов. Вред код может причинить пользователю, только попав на продуктив. Ну либо вред может быть причинён коллегам, когда код попадает на тестовый стенд и ломает его.
В своё время Фредерик Брукс в своей книге «Мифический человеко-месяц» ввёл термин «интерактивное программирование». В какой-то момент удалось резко снизить стоимость ошибки в процессе компиляции и отладки кода. В результате чего ушла необходимость проверять всё самым тщательным образом, что привело к многократному росту скорости и качества разработки.
Интерактивное программирование — это разработка через пробы и ошибки с минимальной ценой.
Если компиляция вашего кода занимает несколько минут (вместо ожидания в несколько недель для доступа в вычислительный центр), а потом компилятор вам говорит, что нужно исправить, то какой смысл вручную проверять код в течение часа? Вы просто запускаете компилятор, получаете сообщения об ошибках, исправляете их и запускаете компилятор опять. И так, пока ошибки не закончатся. Час сокращается до 5-10 минут.
Аналогично с отладкой. Не нужно сидеть часами над листочком бумаги и гонять в голове различные варианты работы. Написал кусок кода, запустил его, потрогал его работу руками и исправил код. Потом опять запустил, потрогал и исправил. И так, пока не перестанешь находить ошибки.
Интерактивное программирование — это разработка через пробы и ошибки с минимальной ценой. В бизнесе и маркетинге поступают ровно так же. Формируют гипотезы, быстро их проверяют, получают результат и идут дальше.
Сейчас практически вся разработка строится на принципе интерактивного программирования. Допускать ошибки при написании кода — нормально и естественно. Однако плохо, когда ошибки остаются после отладки. Здесь мы подходим к такому негативному паттерну поведения, как разработка через багфикс.
Разработка через багфикс
Когда задачу можно считать сделанной? С точки зрения руководителя проекта — это задача, которая внедрена и сдана на продуктиве. С точки зрения QA-специалиста — это задача, которая прошла проверку. С точки зрения разработчика — это задача, в которой он уже не может при отладке найти ошибки.
То есть если разработчик написал код, то он ещё не сделал задачу. Нужно же посмотреть на то, что сделалось. Оно должно проходить смок-тестирование, отрабатывать базовые позитивные и негативные сценарии. Работать с адекватной скоростью, кстати. То есть быть уже пригодным к использованию в большинстве случаев (например, в 95%-99%).
Но есть объективная проблема. Хороший разработчик — это созидатель, поэтому он плохо выполняет функцию QC (quality control — оценка качества). Забавно, но именно в руках хорошего разработчика начинает правильно работать даже чужой код, который не работает в других руках. Человек просто инстинктивно обойдёт те места, где что-то может сломаться и пойти не так. Пользователи на продуктиве ведут себя не так, и иногда сильно удивляют техническую команду своей фантазией.
Поэтому появилась роль QC-специалиста. То есть того человека, который проверяет то, что сделал разработчик. Зачастую QC-специалистам приходится концентрироваться на негативных сценариях и негативном мышлении, они ищут возможность сломать код. Некую альтернативу им представляют L3-специалисты (третья линия поддержки), благодаря своему опыту разбора инцидентов, они знают, какими действиями пользователи могут ломать код.
Хороший разработчик — это созидатель, поэтому он плохо тестирует.
Есть ещё QA-специалисты (quality assurance — обеспечение качества). Они больше нацелены на то, чтобы не ломалось, а не на то, чтобы сломать. Поэтому они помогают программистам. Например, заранее пишут тесты для задачи и отдают их разработчикам, чтобы они могли использовать их при отладке. Участвуют в CI/CD, который изначально предполагал наличие автоматического тестирования, которое не выпускает сбойный код даже на тестовый стенд. От того, что вы умеете быстро доставлять дефектный код на продуктив, счастья никому не будет.
На самом деле, существует такой процесс, как управление качеством. Обычно никто не стремится, чтобы код был идеальным (это очень дорого) и без ошибок. Стремятся к тому, чтобы в критически важных и наиболее используемых сценариях работы не было ошибок. Поэтому ошибки могут просачиваться через процесс отладки программистом, процесс тестирования QA/QC и попадать на продуктив. Если это не останавливает и сильно не затрудняет работу пользователей, а после обнаружения быстро исправляется, то это в целом нормальная ситуация.
Чаще всего проблемой становятся не нормальные ошибки программиста, а сформированные негативные паттерны поведения, которые могут искажать восприятие целых команд разработки. Например, в месте сопряжения работы разработчика и QC-специалиста возникает негативный паттерн поведения: «Разработка через багфикс». Разработчик говорит, что:
После чего разработчик начинает пропускать стадию отладки и отправлять код, который даже смок-тестирование пройти не может, на тестирование QC-специалисту. То есть считать свою задачу сделанной, когда код написан, а не когда отладка выполнена.
Дополнительным фактором является неправильный учёт времени разработки в организации. У задач на разработку обычно есть оценка времени на выполнение, превышать которую не очень хорошо. Однако баги (найденные ошибки) QC-специалисты оформляют отдельными задачами. Со своими оценками, отметками времени, которые не попадают в общую сумму выполнения задачи.
Нередко затраты на тестирование и багфикс начинают кратно превышать время на разработку. Это первый сигнал о том, что у вас происходит разработка через багфикс. Кроме того, можно посмотреть на своих QC и QA. Если они ходят с потухшими от усталости глазами, ненавидят программистов и жалуются, что им на тестирование посылают нерабочий код, а тестовые стенды периодически лежат, то это именно оно.
Кроме того, время на тестирование и исправление обычно ограничено. Из-за этого часто недотестированный функционал уходит на продуктив, где пользователи начинают страдать от частых ошибок.
У себя мы сделали просто. Оценки и отметки времени делаются в рабочих часах, идеальные часы, майки и иные суррогаты времени мы не используем. Задачей считаем только то, что можно потрогать руками (с точки зрения пользователя), поэтому оценка выполнения зачастую выше 4 часов. Задачу программиста мы считаем сделанной, только когда она прошла тестирование. Багфикс записываем в трудозатраты по задаче. К тому же, при передаче задачи на тестирование программист проводит демонстрацию работы функционала. Это организационный способ убедиться, что разработчик провёл отладку.
Рецепт не универсальный, но нам для заказной разработки подходит.
Подводя промежуточные итоги
Когда мы говорим об ошибках программиста, стоит помнить, что это не что-то страшное, чего стоит избегать всеми силами. Кроме того, процесс интерактивного программирования — это такой же процесс проверки гипотез через пробы и ошибки, как в маркетинге, бизнесе и прочих областях. Просто он хорошо автоматизирован и происходит очень быстро. Но заключительной фазой разработки кода до того, как он уйдёт на тестирование, должна быть отладка, после которой все основные сценарии работы должны функционировать, краевые негативные кейсы проверяться. Задача QC — искать нетривиальные баги, а не участвовать в разработке через багфикс.
Очень сложно научиться чему-то на негативном опыте, ведь путей решения проблемы намного меньше, чем путей, как не справиться с задачей. Тем не менее, на чужие ошибки нужно смотреть и запоминать, где и какие могут быть подводные камни. Тогда, анализируя чужой успешный опыт, вы сможете понять, за счёт чего достигается успех и как обходятся подводные камни. Только так вы сможете адаптировать чужой опыт под свои уникальные условия.
Во второй части статьи мы рассмотрим проблему оптимизации, которая по своей разрушительной силе не очень уступает разработке через багфикс. Посмотрим, а нужны ли программисту фундаментальные знания, а если да, то зачем. И попытаемся затронуть проблему слепого копирования ритуалов (карго-культ) в программировании.
Если вы дочитали до конца и что-то для себя поняли, то спасибо вам.