Я сказал это раньше. Я говорю это сейчас. Я всегда буду это говорить.

Диагностические навыки - ваша отправная точка.

Настройка

Диагностический ум - это чудо. Приятно наблюдать в действии. И это потрясающее чувство - иметь то, что - уверенность, а не дерзость - лучше, чем у большинства. Я всегда был таким: «Да, но почему / как?» парень. Если есть проблема, особенно с механическими устройствами, я тот парень, который вам нужен. Я знаю ... "Конечно, звучит довольно дерзко!" Я понял. Но это 54 года уверенности, которую мы прожили и заработали.

Я не могу сказать, что чувствую, что у меня очень много уверенности в этом мире, но когда дело доходит до диагностического мышления, это моя единственная суперсила. - Конечно, это не моя способность быть высоким, худым, великолепным и хорошо причесанным, - говорит невысокая, толстая, лысая горгулья! :)

Начало

Несколько лет назад, когда моя компания была меньше, компактнее и пыталась вывести на рынок несколько продуктов одновременно, мои начальники подумали, что делают мне одолжение, и пригласили компанию по кодированию для создания проекта. Этот проект представлял собой веб-приложение (просто называть его веб-сайтом, действительно, упускает из виду многие функции, которые мы планировали для него). Мое участие должно было быть спланированным и начальным.

Я составил небольшой, но четко определенный список требований. Для этого требовалось:
* запускать в мире Heroku / AWS;
* разделять пользовательский интерфейс и функциональный API;
* внутреннюю базу данных PostgreSQL;
* создавать предпочтения в NodeJS, Go, или C # для API
* чистый / переносимый интерфейс интерфейса HTML + CSS
* мобильная работа должна выполняться на более поздних этапах, отсюда и необходимость в API

Этот список был передан руководителю проекта в студии кодирования, у нас было несколько встреч, и все кивнули и одобрили мой список. Прохладный. Я задал несколько вопросов, получил несколько ответов, и, хотя я бы предпочел, чтобы моя команда и я занимались этим проектом, мы все должны были согласиться, что я уже довольно сильно разошелся, и, очевидно, время было критическим, чтобы это новое предприятие было рынок. Прохладный. Я начал, передал общее руководство проектом другому человеку в нашей компании и вернулся к трем другим проектам, которыми я управлял и / или кодировал.

Проблемы

По прошествии некоторого периода времени, когда я время от времени появлялся на совещаниях по статусу, мы узнали, что они создавали PHP-приложение стека LAMP 1999 года без отдельного API (они хотели взимать с нас дополнительную плату за это), встроенный код + html, база данных MySQL, НЕ размещенная в нашей среде Heroku, и множество других плохих решений с общим знаменателем.

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

«Прощай!»

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

Это был плохой опыт.

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

До сих пор.

Неудачи

Мы запустили сайт в прошлый вторник, 7 сентября… то есть мы открыли браузер и перешли к нему… и при попытке войти в систему вся эта чертова штука сгорела. Я решил, что сегодня, четверг 9-го числа, у меня будет целый день, посвященный выяснению того, что не так, после 1/2 часа срочной диагностики во время звонка о статусе компании, который меня ни к чему не привел.

Я очистил свой дневник, выпил ВСЕ кофеин и приступил к работе.
* Apache запущен, проверка (сайт отвечает)
* Попытки входа в систему, ужасная неудача
* На разных страницах нет входа в систему
* Вход в базу данных вручную с использованием инструменты администратора, проверьте
* Ошибки в журналах Heroku, много, много, слишком много

Это была системная проблема. Мы не вносили никаких изменений в код в течение очень долгого времени, но то, что когда-то работало, больше не функционировало. Я перезапустил дино, я проверил журналы и, наконец, появилось какое-то непонятное небольшое сообщение об ошибке, а затем, следуя по этому пути в коде, я мог поверить, что не поступало никаких данных о сообщениях ‹form› и сообщениях в целом.

Ага! Место, где можно сосредоточиться и сосредоточиться.

В конце концов я откопал наиболее часто повторяемую запись в журнале, включающую статические вызовы нестатических методов, и проверил их все, а также переплетения, и решил, что мне придется выполнить некоторые проверки версий. PHP обновлялся после некоторых регулярных обновлений обслуживания на хосте, и ряд функций - хорошо, МНОГО вызовов функций - давали сбой и в большинстве случаев возвращали логическое значение false вместо ожидаемого значения.

Дерьмовое кодирование не допускало нулевых входящих данных в очень, очень многих местах. Вещи, которые я бы никогда не спроектировал и не построил; да, честно говоря, я намного лучше, чем это. Но вот и мы, и вы имеете дело с той рукой, с которой столкнулись.

Углубившись в различные конфигурации и код, я узнал, что компания, занимающаяся кодированием, никогда не устанавливала версию или диапазон версий для PHP, поэтому всякий раз, когда хост обновлялся, последняя на тот момент версия PHP появлялась как часть переиздания, и все начинало ломаться. в какой-то момент. У нас была служба, отслеживающая домашнюю страницу на предмет серьезных сбоев сайта, но не отслеживающая детали внутренних страниц или функций приложения. Конфигурация была просто установлена ​​на версию php «*», последняя, ​​самая лучшая, все остальные факторы игнорировались.

Неудачи были известными проблемами при обновлении PHP пару лет назад, и я узнал, что исходной версии PHP, под которой эта штука была разработана, было уже около 3 лет на момент доставки, так что теперь нам почти 6 лет. Прошлая основная версия PHP- ›Кодирование соответствует.

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

Не заставляйте меня начинать с жестко запрограммированных значений, которые они добавили в почтовую программу SMTP глубоко внутри библиотеки PHPMailer, которую они установили. Видимо файлы конфигурации или настройки ENV - проклятие для этих людей. (вздыхает) Руководители обеих компаний договорились не ругать друг друга, иначе я с радостью скажу вам, в какой контрактной кодировочной компании в Теннесси, чтобы избежать ее, вы цените свое время, деньги и рассудок.

В любом случае…

Диагностика - всегда лучшая отправная точка для хороших программистов (и разработчиков, и системных администраторов, и… всех). Развивайте этот навык, если вы выходите на рынок труда или хотите сделать шаг. Если вы менеджер по найму, ищите его в первую очередь в каждом кандидате, которого вы оцениваете. Программисты задач хороши, необходимы, даже ... но диагносты когда-нибудь спасут вашу задницу, и они лучше всего подходят для руководящих должностей. Нет замены хорошо поддерживаемому набору навыков, основанному на твердом, фундаментальном, врожденном таланте.