Опубликовано 18 сентября 2011 года
Я подготовил читателям два рассказа о софтверных ужастиках, с которыми вынужден сражаться последние годы. Сами по себе темы малопривлекательны (как и любой негатив в жизни), однако полезны с точки зрения философии программирования, ибо наглядно иллюстрируют, как не нужно делать программы.
Первый ужастик называется Evernote. О нем я впервые написал в бумажной Голубятне в апреле 2008 года («☺Глоток свободы на глубине два метра»). Тогда по рекомендации читателя я установил программу в версии для Windows (да-да, в прошлой жизни я пользовался этим чудовищем ), однако почти сразу удалил, поскольку мне не понравилась концепция хранения данных на облаке.
За три года взгляды мои по части хранения личной информации на сервере чужого дяди существенно либерализировались и сегодня я уже спокойно отношусь к неизбежному. Тем более, что облачная система предоставляет идеальную среду для синхронизации, которая с вхождением в мой обиход трех незаменимых и постоянно задействованных устройств (Macbook — iPad — iPhone) стала жизненно необходима.
По этой причине сразу после перехода два года назад на платформу Надкусана я вернулся к тестированию Evernote, тем более, что в то время эта программа практически не имела альтернатив и к тому же пользовалась культовой популярностью у яблочных фанатов.
На первых порах я проникся оптимизмом и с удовольствием принялся заполнять Evernote информацией, которую собирал ото всюду по профессиональным нуждам. Очень быстро, однако, начались неприятности: чем больше документов попадало в базу данных Evernote, тем неповоротливее эта база становилась.
Когда число вхождений перевалило за 4 тысячи, Evernote просто сдох. В прямом смысле слова: любое действие, любая операция с данными длилась не просто неприлично долго, а несовместимо с понятием осмысленной работы.
Я дождался окончания годовой подписки (да-да, Evernote штука платная, хотя формально можно пользоваться и бесплатным огрызком, однако длинный список ограничений, среди которых запрет на пользованием базой данных в режиме оффлайн на мобильных устройствах, превращают этот огрызок в насмешку) и удалил программу с компьютера.
На смену Evernote в роли моей главной информационной базы данных пришел EagleFiler, которым, собственно, пользуюсь до настоящего времени. У этой скромной программки есть много достоинств, однако имеющиеся недостатки не то, чтобы отвращают от пользования, но однозначно подвигают на постоянные поиски альтернативы. В частности EagleFiler довольно нерасторопен (хотя, конечно, ни в какое сравнение не идет с Evernote, чья неторопливость не позволяет работать) и — самое неприятное — начисто лишен каких бы то ни было форм синхронизации. Разработчик советует пользоваться Dropbox — я не против, но как работать с базой данных на мобильных устройствах, если у EagleFiler нет (и не предвидется!) никаких клиентов?!
Посему я периодически устраиваю шерстение сети на предмет выявления новых кандидатов для ведения информационной базы данных, а также проверки старых знакомых на предмет обновлений и новой / улучшенной функциональности. Поверите ли: я ставил Evernote четыре раза! И все четыре раза удалял, чертыхаясь и клятвенно обещая больше не повторять маразма. Потому что вот уж точно: рожденный ползать летать не научится никогда до самой своей смерти!
К сожалению в случае Evernote поговорка обретает зловеще хрестоматийное звучание: от версии к версии популярность программы в мире растет как ошпаренная, новых функций и рекламных примочек нарастает по самое не балуйся, однако ни один из врожденных дефектов не только не устраняется, но и с каждым разом все усугубляется и усугубляется.
Объясняется безысходность просто: все недостатки программы связаны с работой базы данных под нагрузкой. Вернее, в неумении Evernote работать под большой нагрузкой. Устранить этот дефект возможно только одним способом: переписать ядро базы с нуля, отказавшись на корню от используемого в настоящее время движка и алгоритмов. Разработчик, разумеется, ничего этого делать не будет и не собирается, поскольку проект коммерческий и главная задача — «наращивать мегапиксели», то есть обвешивать уже выращенное дерево рюшачками, фишечками и фенечками, популярными в гламурном народе.
До того, как Evernote превратился в то, во что он превратился сегодня — еле шевелящуюся разукрашенную ёлку — это была маленькая программа-блокнотик, созданный на основе концепции временной ленты. Рудименты этого нововведения сохранились до сих пор в форме никому не нужного и даже вредного (для полноценной базы данных) аппендицита. Временная лента в скромном блокнотике — самое оно: написал десяток другой заметочек («не забудь купить кефир!», «дернуть Нинку за косичку на перемене!»), прокрутил ленту по времени — лепота!
Потом, однако, этот блокнотик стали обвешивать кенгурятниками и трупоотбойниками, для него непредназначенными, в надежде превратить его в полноценный ПИМ. Вместо ПИМА вышла Шнива на 255ой резине.
Короче говоря, мораль проста: продумывайте свои софтверные творения изначально, предвосхищая даже самые последние дни их жизни! Потому что нет ничего ужаснее изменения парадигмы на середине пути: все равно ничего путного не выйдет. Если же не повезло и вы вляпались, то изыщите ресурсы для ведения параллельного проекта, пусть даже в закрытом виде, в рамках которого перепишите свою программу с нуля, подобрав для нее движок, адекватный новым заявленным функциям, а затем тихо и неприметно под очередной релиз подмените старую лошадь новой — можно даже без лишних фанфар и помпы.
Впрочем, можно и с помпой: как-никак подобный честный отказ от неработающего ядра и мобильный переход на новые рельсы с нуля многого стоит и о многом говорит!
Все эти рекомендации даю от чистого сердца, потому что вижу в Evernote потенциал, который при правильном векторе развития мог бы превратить программу в уникальный трансплатформенный облачный информационный центр.
И потом, чем черт не шутит: может разработчики, разговевшись на сочных харчах своих подписных услуг ( 5 долларов в месяц за пользование облаком — это вам не хухры-мухры!), пробудятся от гламурного морока и все-таки наберутся смелости переписать программу со здорового нуля?