Я смотрю, последнее время популярны истории, в которых авторы ставят знак равенства между множествами «почти всегда это так» и «изредка это так», например, вольно сравнивая undo для IT и не IT. Что же, проблема эта известная и широко распространённая. Расскажу и я свою историю.
Коллеги-разработчики! Мы часто ноем, сталкиваясь с чужими багами и «особенностями дизайна», с проблемами, уходящими корнями вглубь. Порой, в настройке софта или в организации библиотеки/фреймворка нет никакой видимой логики или глубокой задумки — просто автору так захотелось, потом захотелось другому автору, потом третьему, и вот этот мутный франкенштейн коллективного творчества предстаёт перед нами с прилагающейся к нему шестисотстраничной документацией, забитой исключениями, отступлениями от POSIX и удивительно корявыми решениями. Их невозможно понять, их надо просто запомнить. И потом, через полгода, троллить новичков, решая «элементарные» проблемы. Но всё равно стресс копился, копилось раздражение, и тогда по совету коллеги я занялся микроэлектроникой в качестве хобби.
Карл, даже обычная кнопка оказалась проблемной. Вместо одного события нажатия прилетает десяток по прерываниям! Дебаунсинг, Карл! Хуже того — в простой кнопке нет состояния 0/1, там есть или что-то (например, 1, если цепь замыкается на +3,3 В) и floating, который определяется то как 0, то как 1. Это решается лишь чисто механически.
Разобрался с кнопкой? Призовая игра — rotary encoder (например, колёсико мышки), который шлёт несколько событий, позволяющих определить, в какую сторону он вращается. Из-за того же баунсинга зачастую приходят противоречивые сигналы. Типа, сперва +1 и тут же −1 (тут я понял, почему у меня так же глючит скролл на одной дешёвой мышке). Попытки дебаунсить приводят к тому, что «шаги» проглатываются или неверно определяется направление.
Универсального решения нет.
Ультразвуковой сенсор позволяет измерить расстояние до объекта с точностью до миллиметра… в теории. На практике из пяти измерений одно вернёт 0, одно — какое-то запредельное значение, ещё три выдадут результат с разбросом в пару сантиметров. Более-менее стабильной работы удалось добиться, проводя семь измерений и забирая медианное значение. А ведь ещё бывает эхо…
Когда я добрался до простых дисплеев (TFT, OLED) — это оказался просто праздник! Ни один не заработал сразу. Везде приходилось долго искать конкретную модель, драйверы-библиотеки под неё, а некоторые даже исправлять и дописывать.
Теперь обычные проблемы разработчика воспринимаются с улыбкой. Подумаешь, прочитать документацию — она хотя бы есть и даже не на китайском. Подумаешь, с первого раза не запустилось что-то — сейчас покурим маны и посмотрим логи… (О, как же приятно, когда есть логи!) Снова ошибка? Ничего страшного, по крайней мере, из-за неё чип ценой в десяток долларов не превратился в бесполезный кусок горячего пластика.
Волнующая связь, говорите? Расскажу свою историю, не совсем из IT, но принцип тот же: надо уметь работать с тем, что есть, и учить по ходу работы. Главное — на входе отсеять совсем уж неадекватных персонажей.
Итак, иду по Старому Арбату, захотелось съесть и выпить вредного. До банкомёта далеко, денег на карточке вроде должно хватить на небольшой перекус, а заведение умеет их принимать. Из наличности — 25 рублей в кармане. Захожу, заказываю еды и прошу «Мне ноль-пять кока-колы лайт». Расплачиваюсь карточкой. «Угу, — говорят, — подождите, сейчас всё принесём».
Приносят пять стаканов по 0,5. Вернуть могут только всю сумму, она попадёт в блокировку и станет доступна в лучшем случае только на следующий день. Наличности не хватит, оставшейся суммы на карточке — тоже. Дитя степей, естественно, не понимает, в чём проблема: он же явно услышал слово «пять», а то, что оно было «ноль-пять» — как-то опустил. Тогда-то мне и стало понятно, почему в фастфуде напитки бывают маленькие, средние и большие. «Ты бы ему ещё „500 миллилитров“ сказал», — добавил злой и голодный внутренний голос.
Прочитал истории про неспециалистов и вспомнил один случай. Скорее грустный, чем смешной. Зашёл по какому-то мелкому вопросу в салон сотовой связи — из крупных сетей. Передо мной пожилой человек расспрашивает продавца про телефон (который тот ему, скорее всего, и подсказал). При упоминании Bluetooth дедушка задаёт вопрос: «Что это такое?» Продавец начинает объяснять, что это для связи с внешними устройствами и тому подобного. Дед говорит: «Нет, это понятно, но какой физический принцип? Инфракрасное излучение используется или что-то ещё?»
И тут продавец выпадает в осадок и мямлит: «Э… Ну, это Bluetooth».
Я говорю: «Радиоволны». Дед меня понимает моментально.
А вот продавец сотовых телефонов, не знающий, какова природа этого самого Bluetooth, конечно, печалит. Bluetooth — и всё.
Студенческая общага, отдельно взятая комната. Все на разных специальностях, у каждого свой круг общения, свои вкусы и интересы. Игры в основном довольно свежие — один часами выносит мид, второй может до утра сидеть на сайте с флеш-играми, третий предпочитает отстреливать кровососов на Зоне, четвёртый в лице серба-уголовника терроризирует американский мегаполис… В общем, по вечерам комната превращалась в дурдом.
Захотелось мне на днях вспомнить детство. Добыл «Нереальный турнир» 1999 года, поставил, бегаю…
— Unreal?
— Угу…
— Дай установщик!
Спустя пятнадцать минут:
— А давай по сети?
— Давай!
Бегаем вдвоём, синхронно материмся. Один из соседей отрывается от монитора:
— Что это у вас? Unreal?
— Он самый.
— А дайте установщик!
Через двадцать минут синхронного мата становится больше. Выходит из мида третий:
— Народ, что здесь происходит? Вы по сетке рубитесь?
— Да, вот флешка с установщиком. Присоединяйся!
Сетевые бои быстро стали традицией.
А сегодня к нам аккурат во время очередного заруба пришли соседи — ярые поклонники танковых боев:
— Народ, ну что за дела?! Вы каждый вечер материтесь! Вы уже зае… (Пауза.) Unreal?
— (Хором.) Да!
— А дайте… (В сторону просителей летят сразу две флешки.) Эмм, спасибо.
Через двадцать минут из-за гипсокартонной перегородки, которую здесь почему-то называют стеной, начинают доноситься подозрительно знакомые звуки.
Вот скажите, вы умеете обращаться со своим телефоном? Умеете. А ведь современный телефон — это маленький компьютер, только с модулем связи.
А автомобиль у вас есть? Тогда там вполне может быть установлен бортовой компьютер. И со всем этим хозяйством вы умеете управляться.
Банкомат. Тоже компьютер.
Платёжный терминал. Тоже.
Игры. Ничему учить не надо, сами во всём разбираетесь. Даже ухитряетесь как-то ставить их на рабочие компьютеры и играть в них, даже если игра не по-русски. Сам лично видел, как вы резались в добуцу сёги на корейском.
Но вот дело касается рабочих программ. Большинство из того, чем вы пользуетесь, по функциональности не сложнее программы банкомата. Да, даже в пресловутой жёлтой программе большинство из вас только вводят данные или даже просто на них смотрят, всю сложную обработку делают особо доверенные лица, которые как раз не жалуются. Но почему вы сразу забываете все свои умения по работе со сложной техникой? Почему не можете прочитать сообщения даже на русском? Почему с испугом смотрите на единственную кнопку? Почему в игре вы прекрасно знаете, что такое «OK», но мгновенно забываете, что это, если это вам выдаст рабочий компьютер? Впрочем, если там будет «Да», «Расчёт окончен», «Завершить», эффект будет тот же самый — барановоротный.
Нет, мы не жалуемся. Благодаря вашему нежеланию работать у начальства никогда не возникнет идеи о том, что отдел ИТ тоже можно сократить наполовину.
Некоторые полагают, что цифровая техника несколько непедагогична, поскольку позволяет исправлять сделанные ошибки, приучая к мысли о наличии такой же возможности и в жизни. Проиграв компьютерную игру, можно начать её сначала, неправильно набранный символ — стереть, и так далее.
На самом деле цифровая техника от этой мысли может и отучать. После
format С:
или
rm -rf /
обратной дороги нет (или она тернистая/дорогая), высланное «мыло» — не воробей, а попавшись на взломе, уже не «распопадёшься».
Традиционная же аналоговая техника в некоторых случаях позволяет исправлять ошибки не хуже цифровой. Магнитную фонограмму можно стирать, ловко редактировать кнопкой «трюк», ошибки в карандашных записях, чертежах и рисунках — исправлять ластиком, в масляной живописи — закрашивать неудачные фрагменты и писать поверх них. Впрочем, о непедагогичности карандаша тоже иногда говорят.
Недавно я расширил круг своих интересов эмуляцией Atari ST. Отдельная кнопка Help (хотя F1 уже есть) меня удивила не сильно. Но отдельная кнопка Undo! Вот уж действительно — пессимист разгадывает кроссворды карандашом. Может быть, потому-то и линейка машин, всю свою историю шедшая вровень с ещё не «Маками», а «Макинтошами», что по характеристикам, что по дружественности интерфейса к гуманитариям, а по дружественности к музыкантам — даже превосходящая, в начале девяностых сошла с дистанции.
Урок нам всем на будущее: не будем пессимистами! Последствия пессимизма с трудом поддаются исправлению. Хотя в данном случае поддались. Архитектура снова жива: под неё пишут опенсорс, выпускают современные аппаратные клоны и эмуляторы с лицензионно чистыми прошивками. Оптимизм победил!
Позвали меня в гости антивирусник продлевать. Так как у меня ключей с собой не было, я решил переустановить другой антивирь.
Ну, то, что лицензия винды после обновлений попала в чёрный список, для меня не новость. Потихоньку удаляю установленные обновления в надежде, что всё-таки удастся отключить чёрный список. Копаюсь, антивирь обновляется, время тянется, начинаю скучать.
— А что, по-моему, у вас какой-то аппарат не работал…
— Да, — говорит девушка. — Миксер не работает.
— Давайте посмотрю.
Приносит. Я включаю миксер в розетку, обхватываю его руками и начинаю бормотать про себя невнятные предложения, осматривая целостность кабеля. Секунд через 15–20 включаю миксер — и он начинает работать! Девушка (богомольная, как и её мать), увидев такие чудеса, выбегает на балкон и начинает усердно то ли молиться, то ли креститься.
Да, думаю, ошарашил девушку… Наверное, просто на миксере окислились контакты на переключателе режимов и никакого чуда тут нет. Но какого же было моё удивление, когда после перезагрузки винда была исключена из чёрного списка!
На этом сайте — да и на многих айтишных и околоайтишных ресурсах — не раз и не два проезжались по некомпьютерному люду, в особенности по пресловутым бухгалтерам, которые вроде бы и не глупы, но, сев за компьютер, вдруг начинают вести себя как идиоты. Почему я вдруг об этом вспомнил? Не потому ли, что сегодня готовил и сдавал налоговую декларацию — простейший документ, который любому из этих бухгалтеров на один зуб?
Я фрилансер-сайтодел. Оформлен как ИП — разумеется, с упрощённой системой налогообложения. Эта система не зря называется упрощённой, она и вправду совсем не сложна. По сути, имеешь дело всего с двумя документами, да и те доступны в любезном сердцу электронном виде. В книгу доходов и расходов механически переписываешь цифры, а квартальные итоги Эксель сам сосчитает. А ежегодная налоговая декларация — всего три страницы, включая титульный лист; значения большинства полей либо переписываются из той же книги доходов, либо считаются по простейшим формулам, которые приведены тут же на бланке. Мало где встретишь столь дружелюбный интерфейс; но если вам и этого мало — есть и «хелп»: подробная и понятная инструкция по заполнению.
Но что же происходит раз за разом, когда я берусь за эти нехитрые документы? Почему я всякий раз буквально тупею так резко, что даже сам это чувствую? Элементарная задача вида «добавить строчку в XLS-файл и переписать в неё несколько цифр из банковской выписки» вдруг становится для меня сложным квестом, требующим изрядного времени. А уж заполнение декларации (задача максимум на полчаса, и то если не спешить) занимает от трёх-пяти часов до пары-тройки суток. Всё это время я долго перечитываю инструкции, пытаясь понять, что делать на каждом из шагов, и с трудом удерживаюсь от звонков в налоговую с кучей вопросов, с которыми скорее стоит обращаться к Капитану Очевидность. Ко всему прочему это вгоняет меня в такой стресс, что минимум день потом я работаю, «не приходя в сознание».
И ведь я сам прекрасно понимаю, насколько нелепо это выглядит. Сам понимаю, что задачи, которые для меня так сложны и стрессогенны, на деле не сложнее школьных примеров для третьего класса. Что они требуют меньше логики, чем рядовой квест в RPG, и меньше расчётов, чем поход в магазин за продуктами на неделю. И, тем не менее, раз за разом превращаюсь в идиота…