Мне всегда очень тяжело почему-то писать, как нужно что-то делать. Казалось бы, мысленный идеал, наверное, живет в душе каждого программиста. Но он временами недостижим, временами слишком сложен, временами - просто нереализован... Так и получаются неудобные, недоделанные, неготовые проекты.
Для меня основными проблемами всегда были: нехватка времени, нехватка сосредоточенности, нехватка целеустремленности, или же нехватка стимула. Например, из-за банальной невнимательности, не далее чем сегодня, в нашей внутренней статистике Берсерк-Онлайн было найдено огромное расхождение (размером с мою зарплату). Нет, мы не потеряли деньги - мы просто ошиблись в расчетах, а конец месяца - самое время находить подобные ошибки.
У меня состоялся нехороший разговор с моим шефом, другом и партнером (в одном лице). Проблему в статистике, само собой, я устранил мгновенно, но неприятный осадок остался, и над этим досадным происшествием я думал весь вечер. Выводы озвучены в продолжении статьи. Написано довольно сумбурно, - если чувствуете, что я загоняюсь - просто не читайте дальше... ничего не потеряете.
Финансовая отлаженная система редко дает сбои. В крайнем случае, эти сбои устраняются мгновенно - будь то ошибочная СМС, платеж на другой номер или что-то в этом роде. Короткое сообщение от суппорта, минута и готово. Но как искать и устранять проблемы в том, чего ты не понимаешь? Я не понимаю, как по этой странице можно оценивать качество нашей работы и реакцию на наши нововведения. Есть несколько графиков и таблиц, которые я понимаю. Другие - нет. Например, для меня вообще сегодня стало открытием (условно говоря), что идеальное состояние системы - это A + B = сумма всех C = D. Что поделать, я не особо разбираюсь в потоках этих электронных денег. Скрипты честно выполняли поставленную мной задачу, но поскольку я не до конца понимал ее суть - задача была сформирована не совсем верно.
Самые нелепейшие из ошибок, которые я допускал в программировании, были связаны либо с тем, что я не понимал, как работает компьютер; либо я не понимал, как функционирует система. Сегодня я осознал принцип работы системы - сегодня я наладил систему. Но если ты не пользуешься системой - ее практически невозможно наладить до идеального состояния.
Возьмем, к примеру, мою другую недавнюю задачу. Для небольшого стороннего фан-проекта, я подключал платежную систему Интеркасса. Сделав первый тестовый платеж по MoneyMail, я был в шоке. Все вроде бы сделано верно, а результат - сообщение "Ваш платеж был отменен". Вместе с тем, мои деньги замечательно покинули мой счет, и по логике, должны были перекочевать на счет нашего проекта. Ринувшись разгребать логи, я увидел, что система вообще не взаимодействовала с нашим сайтом. Я отправился искать проблему в коде, но не нашел. Казалось бы, все написано идеально. Убедившись в работоспособности кода, я снова полез в логи... и - о ужас! Я обнаружил там запоздавшее на 5 минут уведомление от Интеркассы о том, что платеж был успешно перечислен на счет магазина.
Готов поспорить, что программист, писавший этот шлюз, заставил систему работать так, как написано в ТЗ. Вернулся на сайт системы - денег нет - значит не заплатил. А когда деньги приходят, надо про это сообщить магазину. Но как быть пользователю, деньги которого ушли в никуда и он не знает, что ему теперь делать? Мой тестовый платеж был всего лишь на сумму 10 центов, но я ощутил муки обманутого пользователя. И ринулся искать ошибку в своем коде.
Это была безумная, сумбурная запись. Написанная человеком, который просто не хочет в данный момент спать и слегка приболел гриппом. Так что если суть записи не уловлена - это, скорее всего, моя вина. Не ваша. Я хотел всего лишь сказать одну маленькую, простую вещь. Просто представьте, что вы - пользователь системы, которую вы разрабатываете. Осознайте ее смысл. Тестировщики говорят, что вероятность того, что человек совершит ошибку - 10%. Так вот, по моему мнению, чаще всего в эти 10% попадают программисты в ситуации, когда они не понимают работу с системой как пользователь.
P.S. Этой статьей я никого не хотел обидеть. Система Интеркасса - действительно работает, просто в случае с MoneyMail возникает вот такая вот заминка - в остальном все работает. Берсерк - стоял и будет стоять, надеюсь, еще долго. Вероятно, в будущем я также буду допускать ошибки - надеюсь лишь, что этих ошибок станет намного меньше. А пользователи - что ж, пользователи страдали, страдают и будут страдать от использования программ, которые писали люди, не понимающие, что они делают. Уверен, что-то в этом роде чувствовали и другие мои коллеги.