Я зарабатываю на жизнь программированием. Если быть точнее, то веб-программированием - это такая высокоуровневая область компьютерного программирования, характерная тем, что прощает ошибки и говнокод. Известно, что у счастливых людей хобби и работа совпадают, и я считал себя счастливым человеком довольно долго, но сейчас, сравнивая ощущения от работы в последние пару лет с тем, что было в годы 7ТВ, понимаю, что никакого сравнения давно уже быть не может. Иногда думаю о том, что могло бы быть, если бы в 1999-м году мне достался не советский трёхскоростной «Суптник», а хотя бы «Старт-шоссе», и меня бы подтолкнули в нужном направлении…
К сожалению, из того, что приносит деньги, которых бы хватало на путешествия (хотя бы половину путешествия, если учесть что последние два я завершал в долг) я умею только программировать. В известной степени, мне повезло - с 2005 года, когда я влез в веб, Интернет опутал всё и вся, и спрос на мои навыки только растёт.
Однако, у распространения Интернета есть обратная сторона, которая ударила мне прямо в сердце три недели назад. За редчайшими исключениями, сайты, на которых зарабатывают деньги, делают в расчёте на аудиторию для домохозяек. Помните, раньше ведь не было этих огромных кнопок «купить», ссылок «вернуться», или «вверх». Подразумевалось, что пользователь Интернета знаком с компьютером, и знает, что у браузера (он знает что такое браузер, да) есть кнопка «назад» (alt + стрелка влево), а на клавиатуре есть кнопка Home. Подразумевалось, что пользователь умеет читать и видит весь экран целиком подобно тому, как шахматист видит всю доску.
Если пользователь не может что-то найти, то виноват программист. Пользователь всегда прав. Чтобы изучить его поведение, придумали всякие гугл-аналитикс и яндекс-метрики, где можно отследить чуть ли не траекторию движения указателя мыши. По этой статистике будут переделывать интерфейс, расставляя хинты для идиотов и подсветки для дальтоников. Так индустрия ложится под диктатуру большинства, которое по определению малограмотно, лениво и самодовольно.
Сделать интерфейс, который был бы удобен это, наверное, непросто. Сделать интерфейс, который не оскорблял бы зрячих и квалифицированных - намного сложнее. Если 6 лет назад я черпал вдохновение, когда представлял, что вот сейчас буду делать удобное и хорошее людям, то сейчас я поставлен на колени перед этими людьми - они скажут мне как им удобнее, и я беспрекословно последую всему, что они говорят.
К сожалению, результат в веб-программировании измеряется количеством пользователей, а не их качеством. Если вы делаете сайты на ширпотреб - кроме морды по большому счёту ничего не важно, а многим начальникам контор, которые такие сайты делают, можно показать эту морду, подделать пару страниц, и они сочтут что проект готов.
Поскольку «результата» в моей профессии добиться сравнительно легко, программисты, и я в том числе, когда называют сроки выполнения того или иного задания, исходят из того, что нужно, чтобы результат был на выводе. А не из того, как сделать это без ущерба остальному коду. Сделать так, чтобы этот код можно было использовать повторно. Чтобы он вписывался в концепцию.
Повторюсь, в вебе будет работать почти всё и всегда, получить результат очень легко. Но когда таких «решений» становится пара десятков, система теряет управляемость и становится человекозависимой - поддерживать её может исключительно аффтар, который, уволившись, оставляет последователю кучу говнокода. Наиболее вменяемые конторы дают возможность программисту переписать всё, но, подгоняемые сроками, мы всё равно допускаем исключения и идём на компромиссы.
20 Ноября я понял, как далеко ушёл от того идеала, который шевелил мои извилины и пальцы, писавшие код. Я открыл список файлов проекта и заплакал. Грандиозные планы, на реализацию которых нужно не больше недели, откладываются годами. На фундаментальные вопросы даны ответы, но далеко не исчерпывающие. Я не плакал очень давно, года с 2005 наверное, когда в День Рождения - и по той же самой теме! - на меня наорал по телефону начальник. Я не плакал, когда узнал о смерти друга. Я не плакал и утром 10 Августа, когда казалось, что встречи с мечтой не будет.
А в тот день я плакал. Плакал как ребёнок, которому сломали любимую игрушку. Я был связан обещанием закончить проект и в то же время не мог закончить его как следует. При этом, я не мог назвать сроков, которые нужны на «как следует», потому что делал то, чего не делал никогда - по-настоящему абстрактную систему.
У меня очень понимающие руководители. Фактически, за всё время работы были выполнены все мои требования. Пусть и скромные, но все. Надеюсь, это не только потому, что я работаю по демпинговым ценам. Они выслушали мою истерику и пообещали, что после запуска альфы я смогу заниматься творческой работой. Мне в помощь наняли программиста - типичного представителя отрасли.
Следующие три дня я испытывал такой стыд за то, что выходило из под моих рук, какого не испытывал никогда. Только костыли, только частные решения, «взять-преобразовать-вывести» - всё на месте.
Прошло две недели, и у меня нет ответа кто прав. Я перевёлся на домашнюю работу, взяв некоторый объём задач, которые волен решать столь тщательно, сколь нужно. Им нужен новый функционал для очередной демонстрации рекламодателям и прочим ненавистным мне дельцам, которые, как это ни постыдно, делают деньги, на которые я катаюсь на велосипеде. Именно по этой причине я время от времени думаю о том, чтобы работать в соседнем Ашане, расставлять товары по полкам - просто и честно. В прошлом году я уже осуществил нечто подобное, когда месяц работал курьером - впервые в жизни мне платили за езду на велосипеде. 130-150 км по Москве ежедневно. Платили втрое меньше, чем я получаю сейчас и в 6 раз меньше, чем я могу получать, если засуну в жопу свои принципы и буду служить пользователям.
Им нужны сроки и результаты, а мне нужно творить. Как может художник или скульптор сказать, сколько времени у него уйдёт на произведение? Иногда приходится называть сроки, расценивая это как вызов. Так на прошлой неделе я сделал за 4 дня то, на что думал просить 10. Закончилось, правда, всё рабочим «днём» с 10 до 6… утра.
Продолжение