Со мной случился проект внедрения фронт-офиса. А вместе с ним поставщик решения — Землесофт. Землесофт — это хуже внезапной диареи посреди танцпола на концерте рок-звезды и страшнее зверожука с Трааля.
Была у Землесофта система. Она была как правильнописание Винни-Пуха: хорошая, но хромала. Такой себе инвалид третьей группы, но с разрешением на работу. Система фронт-офисом никогда не была, да и сейчас она всё ещё не он.
В отличие от программистов, менеджеры у Землесофта хорошие. Они приехали к заказчику, предложили хорошую цену (всё-таки кое-что надо было допилить), рассказали о космических кораблях, бороздящих просторы Большого театра, и понеслась.
В процессе допиливания инвалид третьей группы стал инвалидом второй, заразился полиомиелитом, ему сломали обе ноги и руку. Проект разбился на этапы, этапы — на спринты, спринты — на задачи, и выяснилось великое. Первый этап: инвалид с одной рабочей рукой (доработанной, но чуть-чуть не допиленной функциональностью) не обладает свойствами, необходимыми для реализации второго этапа. Нужна операция на сердце (повышение версии ядра), и будет счастье. Казалось бы, ну да, нужно. Повышаем — получаем инвалида с новым ядром, поломанной рукой, поломанными ногами, долечиваем его так, чтобы он хотя бы мог передвигаться, и наконец-то запускаем в эксплуатацию после года-то пыток этот проклятый первый этап фронт-офиса.
Второй этап продолжаем доделывать, чтобы когда-нибудь в туманном будущем… Но заказчику уже сто процентов пора что-то давать. И что? И ничего — Землесофт не ищет лёгких путей. С инвалида сделали клон, ядро ему заменили, но на какое-то не релизное. Рабочую руку сломали — функциональность первого этапа во втором инвалиде не работает, правда, как и функциональность второго, потому что второго ещё нет.
И вот стоит заказчик и затравленно оглядывает двух инвалидов, которых по уму легче и гуманнее было бы пристрелить. Но бодрая «команда» проекта Землесофта надежды не теряет. У них по-прежнему есть упаковка лейкопластыря, аскорбинка, полтора неких программиста, которые пишут некий код для неких объектов.
Надежду стала терять команда заказчика. Заказчик отчётливо осознает, что Боливар не вынесет двоих, и настоятельно просит выбрать какого-то из двух инвалидов. Отчаявшись донести свою мысль до команды Землесофта — им оба инвалида дороги как родные дети, — заказчик обращается к руководству Землесофта. Руководство кивает, со всем почти соглашается и говорит:
— Слушайте, а если мы докажем, что первый инвалид отлично ходит, можно мы оставим обоих?
«Твою мать», — думает про себя заказчик и вежливо спрашивает:
— Но такой подход всё равно приведёт к тому, что первый инвалид будет заменён вторым?
— Да.
— И замена эта будет нелёгкой, это будет второе полномасштабное внедрение, а мы ещё не закончили это?
— Ну что вы, у второго рано или поздно мы руки починим, вы почти не заметите никакой разницы. Ну, раньше контролы были слева, теперь справа, чё там такого? Ну, функциональность всю ещё раз оттестируете, ну, системные возможности проверите, мы даже обещаем логировать операции удаления данных. И вообще, вы видели, как Microsoft изуродовал Office?
— Видели, — соглашается заказчик. — Именно поэтому оставляем одного инвалида, и именно того, кого познакомим с пользователями.
И что, вы думаете, ответил Землесофт?
— Мы к вам лично приедем и объясним, что два инвалида лучше, чем один. А первый вообще не инвалид!
Бодрая команда Землесофта после этого разговора стала ещё бодрее. У них есть три дня, чтобы первый инвалид со сломанными ногами побежал, но он пока не бежит, иногда подпрыгивает, но всё больше бьётся в конвульсиях в надежде сдохнуть своей смертью. А мы ждём заморских гостей.
Занимаюсь поддержкой и доработкой модуля CRM биллинговой системы. По функциональности очень жирный модуль: около 200 визуальных форм, по сути, одно из основных рабочих мест биллинговой системы.
Разработка начиналась около 15 лет назад на средстве разработке, столь популярном тогда на территории экс-СССР, названном в честь древнегреческого города. Тогда это был передовой край IT — визуальное средство позволяло быстро и качественно рисовать пользовательский интерфейс. А архитектура этого средства позволяла дорабатывать стандартные компоненты и классы, разрабатывать свои собственные или использовать сторонние, что повышало качество и привлекательность создаваемого программного продукта.
В отличии от маститых конкурентов, имевших тяжкий груз наследия старого кода, разрабатывали уже трёхзвенную архитектуру, чем немало гордились. Вот, мол, у них надо драйвера базы ставить (драйвера Оracle поставить и настроить — это довольно муторно, если рабочих мест за сотню с лишним), кому-то ещё фреймворк для работы клиента, а у нас тонкий клиент: создал ярлык на экзешник с файл-сервера, и уже всё работает. Конкуренты апеллировали, что клиентские места надо создавать в средствах разработки, которые заточены для работы с БД и прям со структуры базы сами рисуют пользовательский интерфейс (страшный и кривой, зато возиться не надо), а не на вашем комбайне, на котором только утилитки десктопные строгать.
Прошло пяток лет, и тонким клиентом стал считаться веб-браузер. В те годы они, конечно, мало что умели и годились для ввода пары строчек в простейшей форме редактирования или отображения не слишком большой таблицы (какие сортировки/фильтрации/группировки — забудьте!). Конкуренты, вышедшие на рынок после нас, потешались над нами за отсталость технологий, мы над ними — за убогость интерфейса.
И вот развитие веб-технологий позволяет нарисовать интерфейс, неотличимый от нативного, а средства разработки позволяют нарисовать его комфортно. Вот только браузер с открытой почтой, новостным сайтом и этой страничкой ест оперативы столько же, сколько сервер приложений с полутысячей активных пользователей, и в пять раз больше клиента, в котором загружен список под сотню тысяч записей (раз клиент хочет себя мучить такими списками, то проще сделать, чем спорить).
Да, у нас разрабатываются небольшие специализированные рабочие места на веб-технологиях (зачастую с бо́льшими трудозатратами, чем потребовались бы для реализации того же на древнем, но удобном средстве разработки), но переписывать огромный продукт, понимая при этом, что это не только потребует совсем других ресурсов и от сервера приложений, и от клиентских мест, но ещё и ограничит функциональность… Мы это время лучше потратим на развитие системы, а я своё свободное рабочее время — на изучение фич новой версии БД, название которой некоторым образом ассоциируется с описанной средой разработки. Всё-таки основная моя специализация — разработка БД.
К чему это я? Да все к тому же баяну, повторяемому тут на каждой странице: холивар вечен и повторяется на каждом витке развития технологий. А каждой технологии своё место и своё применение.
В нашей стране почему-то упорно не желают делать так, как удобнее сотрудникам. Обязательно надо сделать так и только так, как хотят бюрократы, и сегодняшний пример тому подтверждение.
Есть компьютерные классы и две серверные, которые стоят на сигнализации. Год назад лично носила служебные записки, чтобы меня включили в список разрешений на один компьютерный класс и две серверные (изначально мне почему-то эти разрешения не дали), а в этом году все эти разрешения упразднены. Почему? Ответ прост: бюрократам захотелось, чтобы каждую точку могли снимать только два человека, максимум три, а я получаюсь уже лишним четвёртым человеком. На мой логичный вопрос, как быть, если в этих серверных стоят мои серверы, да и все эти классы на моем обслуживании, мне невозмутимо ответили, что в этом случае я должна попросить снять с сигнализации коллегу. А если наш факультет рассредоточен по четырём корпусам? Прикажите мне ждать, когда придёт мой коллега, у которого есть право снять эту серверную, в которой стоит мой несчастный сервер? Да, я могу подождать, мне несложно. Но! Если есть проблема с сервером, значит, в компьютерном классе преподаватели не смогут провести занятия, а значит, проблему с сервером нужно устранить как можно быстрее. Мне всё-таки ждать коллегу?
Неужели у бюрократов не возникает мысли, что мы не ради прикола или самоутверждения просим себе права на снятие с сигнализации нужных нам аудиторий? Мы — IT-отдел, мы обслуживаем компьютеры и оргтехнику. Так почему нам не дать столько разрешений на электронный ключ сигнализации, сколько нам де-факто требуется для нормальной и эффективной работы?
Я не прошу права снимать с сигнализации кабинет декана или кафедру — приду, когда люди будет на месте. Но снимать классы и серверные, за которые я непосредственно отвечаю, мне просто необходимо. А самое обидное то, что если из-за проблемы с сервером, которую я не смогу устранить, потому что мне не дали разрешения на снятие с сигнализации серверной (а по закону всеобщего невезения именно в этот момент коллеги будут устранять неисправности в других корпусах), достанется мне, моему начальнику и коллегам.
Бюрократы, скажите мне: зачем нам нужна сигнализация, которая защищает от проникновения сотрудников IT-отдела? Если вы забетонируете окна и двери в эти аудитории, то вы нас не удивите нисколько: вашими разрешениями пользоваться столь же удобно, как и запечатанными наглухо древними захоронениями фараонов или иных правителей древнего мира. Мы всего лишь вуз, а не Пентагон, и секретов федерального значения у нас нет. Так, может быть, будем хоть чуточку человечнее и станем выдавать разрешения, исходя из реальных потребностей, а не из ваших сиюминутных желаний?..
Дорогие мои ваятели опенсорса! Я из тех, кто ругает и ненавидит программное обеспечение со свободным кодом.
Вот офисный недопакет на букву L. Поставили его перед визитом Всем Известного Отдела взамен MSO2003. Теперь все бегут с вопросами: «А где? А как?» А всё потому, что система меню и значки очень далеки от «оригинала».
Вот текстовый процессор (хотя и ненавижу это словосочетание) Writer. Диалоговое окно «Параметры страницы» обнаружил в «Формате», а все закономерно ищут в «Файле».
Вот векторный недоредактор Draw оттуда же. Судя по названию, имеет претензии на одноимённый продукт Corel. Инструментов минимум — ну да ладно, для моих задач хватило бы и этого. Но посмотрите, насколько удобно пользоваться инструментами в «оригинале» и насколько неудобно работать у вас!
Прежде всего, перемещение с шагом в несколько миллиметров. Нужно точнее — зажмите Shift. Сделать точное перемещение в графическом редакторе безо всяких лишних кнопок — не наш вариант.
В CorelDRAW двумя щелчками через контекстное меню можно заблокировать различные элементы, чтобы их нельзя было случайно выделить или переместить. У вас возможности блокировки я не нашёл.
Посмотрите, как у вас организована работа с кривыми. Это не работа, а издевательство.
В CorelDRAW есть несколько видов линий, и любой из них можно превратить в кривую в два щелчка. Также в два щелчка можно отредактировать, добавить и удалить узловые точки.
Прокрутка и масштабирование. Колесо прокручивает вверх-вниз. Масштабирование с зажатым Ctrl. Горизонтальная прокрутка только с помощью скроллера внизу окна. Прокрутка при нажатии на колесо (третью кнопку мыши)? Нет, не слышали.
Персональные лучи ненависти тому, кто придумал писать такой громадный пакет на Java, поскольку быстро работать оно по определению не может и не будет. Ах, совместимость? C++ вон тоже компилируется под кучу платформ.
Огромное спасибо за напрочь отсутствующий API (в предке на букву «O» он есть хоть в каком-то виде).
Вот другой графический недоредактор на букву G. Кому пришло в голову написать его на Python?
Кто придумал совершенно левые значки? Вот, например, инструмент кадрирования. Поставить значок «рамка», который используется вот уже полтора-два десятка лет в совершенно разных редакторах? Нелогичности и так не хватает, наверно, надо добавить ещё. Надо придумать что-то своё (в данном случае — стилизованный ножик).
Прежде чем сделать что-то своё, сперва внимательно посмотрите, как это сделано у других, а только после этого делайте. За юзабилити и эргономику пока что денег не берут — или я неправ?
Знакомый рассказывал. Один товарищ находился в отпуске, и нужно было попасть на его компьютер. Звонят ему, чтоб узнать пароль. «123», — говорит. Не подходит.
Для работы вне офиса у нас есть VPN-инструмент. Звонит одна сотрудница из дома. Не пользовалась VPN примерно полгода и подзабыла, что к чему. Рассказал, проверили настройки — имена серверов, логин группы, жив ли токен. Сервер nslookup’ится из её домашней сети, вроде бы всё окей, но не подключается. Предлагаю два варианта:
а) Ребутнуться — тем более что сама признаётся, что перезагружалась давно;
б) Ребутнуть роутер — а вот тут начинается самое интересное:
— Я не могу этого сделать.
— Почему? Это несложно. Можно просто вытащить провод питания и через 30 секунд вставить назад.
— Понимаете, у меня нет роутера. Я пользуюсь халявным интернетом, который кто-то из соседей раздаёт уже два года, и не могу попросить перезагрузить роутер.
— Как я понимаю, выбираем перезагрузку компьютера?
Вечеринка по поводу выхода новой версии продукта. Вся толпа коллег подтянулась в холл и под шампусик с красным винцом и салатиками, блаженно улыбаясь, пропускает мимо ушей соловьиные трели начальства, вещающего, какой глобальный рывок совершила компания вопреки всем нашим усилиям. Начальство, которому эта вечеринка тоже до лампочки, должно откатать обязательную программу, поэтому со скорбной миной на лице продолжает лениво рассказывать нам, какие же мы замечательные, как мы здо́рово работаем и насколько огромны и всеобъемлющи наши успехи, когда начальство нам не мешает.
Попутно начальство останавливается на статистических данных:
— С момента выхода предыдущей версии продукта объем репозитория вырос с 32 до 34 миллионов строк кода! Мы починили — вы починили — двадцать тысяч багов!
Я, наворачивая салатик:
— Хм. В статистике пропущен важный нюанс. Мы починили двадцать тысяч багов. А сколько внесли?
Коллега, наворачивая шампусик:
— Ну, это просто. По статистике, в программе объёмом больше десяти миллионов строк кода есть один баг на каждые четыре строчки. Мы добавили два миллиона строк, это значит — внесли пятьсот тысяч багов. Даже если при этом починили двадцать тысяч.
И, бросив взгляд на моё ошарашенное лицо, хлопает меня по плечу:
Вы всё ещё не верите, что у компьютеров есть душа?
Позвали меня на работе помочь с ноутом — зависла сеть и документы, открытые с другого компа. Отрываться от дел ой как не хочется, но надо… Во всеуслышанье обзываю комп засранцем и иду поглядеть.
Поверх зависшего Проводника выскакивает окошко с доступными беспроводными сетями и рапортует: «***_net подключена». Ага, типа, я работаю, не трогайте меня. Пожимаю плечами, убиваю Проводник, открываю по новой. Пробую зайти на нужный комп по сети — бац! — всё пропадает. Окна, ярлыки, панель задач — только треклятая «Безмятежность» висит, как ни в чём не бывало. «Занят я, завтра приходите», называется.
В сердцах замахиваюсь кулаком и аккуратно опускаю его на корпус (не ударив, только легко прикоснувшись). О чудо! Курсор тут же мигает песочными часиками («Погоди, не бей меня!»), возвращаются на место ярлыки и панель задач, значок сети уверенно подмигивает, а винда испуганно выдаёт: «Безопасность компьютера может быть под угрозой».
Так долго я ещё не смеялась. Больше проблем с сетью в тот день не было.
Сижу на работе, «примус починяю», а в голове мысли крутятся.
Вот одни товарищи создают гибкий экран, а вот другие выпускают смартфоны с шестью камерами и 3D-эффектами. А ведь так и до создания магической газеты из «Гарри Поттера» недалеко. А ситуация с тем, что сейчас молодёжь всё меньше понимает внутреннее устройство гаджетов, со временем, возможно, только ухудшится.
В далёком-далёком будущем простые пользователи будут считать подобные разработки магией, а искусственный разум будет подслушивать людей всюду и в качестве пасхалок иметь некоторые интересные голосовые команды. Похожи они будут на заклинания, вызывать будут голографические эффекты, например, со спутника в любом уголке мира. Преподавать магию будет какой-нибудь бородатый админ, похожий на Хагрида, Дамблдора и других персонажей Джоан Роулинг. Почту можно пересылать управляемыми совами, а проход в колонне вокзала делать иногда твердеющей голограммой, пропускающей только «избранных»…