Продукты пока не для людей


Помните, когда ваши родители и другие далекие от ИТ люди пытались пользоваться вашим Windows 95 или каким-нибудь Norton Commander’ом, или копировали ярлык программы на дискету, удивляясь, что туда поместились все игры и еще место осталось. А вы стояли рядом и думали, что человек вообще ничего не понимает в компьютерах и тыкается просто как слепой котёнок в надежде, что эта волшебная машина каким-то образом все поймет. Это были времена, когда программисты делали продукты для программистов.

Это было не круто, но хотя бы искренне. Никто особо не притворялся, что программы написаны для людей, и было общее понимание: чтобы пользоваться компьютером нужно учиться. Или иметь знакомого программиста.

Сегодня наступили времена, когда программисты делают продукты для людей считают, что делают продукты для людей.

Это не круто и не искренне. Сейчас слепым котёнком себя чувствуют все — и программисты и простые люди. Нужно учиться или просто запоминать, как пользоваться каждым сайтом и приложением. И речь не столько про мелкий софт, сколько про самые массовые штуки: все интерфейсы Гугла это хаос и безумие, Фейсбук это безумие и бардак, Андроид это бардак и головокружение. Попытки выполнить любую не базовую, не самую примитивную операцию похожи на классические пиксель-хантинг игры-квесты: А что если нажать сюда? А это кнопка? А это можно потянуть? Ой, это текст, но он кликается, а это кнопка, но она не кликается…

Общее впечатление от работы с современными интерфейсами это сон. Знаете, как во сне пытаешься бежать, и ничего не получается. И все хаотически меняется и ничего не имеет смысла. А Гугл и Фейсбук все это изучают, делают АБ-тестирование и думают «хмм, а если подвинуть кнопку влево, то в полтора раза больше людей нажмут на нее в первую минуту». И выходит новая версия плохого интерфейса.

Программистам сложно делать по-настоящему безболезненные продукты, потому что чтобы стать программистами, мы долгое время последовательно и упорно страдали. Такова реальность — сегодня нужно съесть много говна чтобы стать программистом. И толерантность к боли у нас намного выше, и это влияет на то, как мы проектируем продукты и интерфейсы.

Я говорю, конечно, об инструментах программирования: языках, библиотеках, фреймворках. Перед тем, как дать волю своей креативной энергии или углубиться в интересные абстракции информатики, нужно сначала совладать с версиями, зависимостями, несовместимостью, багами, апдейтами и прочей случайной сложностью (accidental complexity). И это замкнутый круг, потому что инструменты программирования делают такие же программисты.

Естественно, программисты не от любви к боли все это терпят, и постоянно стараются улучшить ситуацию. К сожалению, очень часто за это платят пользователи: архитектурные решения, принятые на основе удобства разработчика, влияют на пользовательский опыт, дизайн и интерфейсы. Мой любимый пример — текстовый редактор Атом. Текстовый. Работает с видимой задержкой и тормозами на безумно мощной, многоядерной, многогигабайтной машине. Хуже, чем 30 лет назад. Потому что Электрон — удобный инструмент разработчика.

Можно долго ругать программистов, твердить, что люди разучились писать код, что фронтэндеры совсем сошли с ума, и npm — это зло. Но мне кажется, что на макро-уровне это просто такой переходный период. Когда-нибудь мы придем к тому, что программисты станут делать продукты для людей, и, возможно, мы будем считать, что это просто «люди делают продукты для людей».