Истории с тегом: программы

Всего историй: 796

12601

Дорог костыль ко Христову дню

Вижу, менеджеры всех достали… Давайте я вам расскажу одну запомнившуюся мне историю, которую программисты мне припоминали потом ещё о-о-очеень долго.

Итак, небольшая компания, пилящая софт для химиков. На дворе 2006-й, конкурентов у нас не так много: конкретно нашу задачу не решает ни HYSYS, ни CHEMCAD. До релиза две недели, график-план на следующий релиз составлен, и я решаю проверить обновившуюся продукцию одного из двух конкурентов. Сразу обращает на себя внимание иконка в трее, вытаскивающая приложение на передний план, причём с сохранением иерархии окон. «Гм…» — думаю я, оформляю рабочую поездку и направляюсь к одному нашему клиенту.

Первое, что бросается в глаза — огромное количество открытых окон, полностью забитая панель быстрого запуска. Приложений открыто так много, что надо именно скроллить вниз, чтобы их все пролистать. Аккуратный расспрос химика подтверждает: все эти приложения ему нужны, он с ними работает. По большей части это просто документы с описаниями, но есть и разные таблицы, графики. Задаю вопрос насчёт иконки в трее и привожу химика в бешеный восторг. Аккуратный просмотр открытых приложений попутно с расспросом химика подтверждает: почти все эти окна исчезнут с его экрана… через два релиза. То есть через год. За этот год нас просто порвут на кусочки своей иконкой в трее.

Ещё два дня ездил по нашим клиентам и везде убеждался: иконка — это простой костыль, который станет ненужным через два, максимум три релиза. Но вот конкретно сейчас она нам просто необходима, иначе мы потеряем до половины клиентов (мы работали по подписке, так что клиент мог в любой момент разорвать договор).

В четверг (а релиз запланирован на следующую пятницу) я прихожу к директору, открываю перед ним ноутбук, показываю конкурента и рассказываю, как нас порвут без этой долбаной иконки. Директор кусает губы, просит составить ТЗ, а сам он пока подумает.

В общем, в пятницу, не дождавшись реакции директора, но понимая, что он, скорее всего, одобрит, я бегу к главному программисту с бумажкой ТЗ, объясняя, что это надо сделать до релиза. Программист начинает бухтеть, что это всё очень сложно, долго, и за неделю никак не успеть. Я прозрачно намекаю на то, что директор по-любому спустит это ТЗ, вопрос в том, когда: в понедельник или во вторник. Тимлид вздыхает и принимает бумажку.

На общей планёрке в понедельник директор достаёт ТЗ и начинает разливаться соловьём, как нам нужна эта иконка, без неё нам не жить, и я понимаю, что директор успел уже сам покататься по химикам и побеседовать с ними. Тут поднимается главный программист и начинает объяснять, что программистам никак не успеть.

— Не успеете — срежем премию, — говорит директор.

— А успеете — выплатим в полуторном размере, — добавляю я и получаю недовольный взгляд директора. Но всё же он кивает.

Засада в том, что это был 2006-й, и не у всех клиентов был высокоскоростной интернет. И для того, чтобы курьеры успели развести релиз, сборка должна проводиться в четверг. Об этом нюансе я узнал вот прямо на планёрке.

Программисты уложились в срок. Правда, тестировать пришлось ручками, а не тестами, но всё же. В итоге баги той недели исправляли ещё месяц, если не два, выпуская и рассылая багфиксы. Однако клиенты не отвалились, все остались довольны, с прогерами я ещё не раз пил пиво.

Почему запомнили именно этот косяк? Потому что это был мой первый косяк в этой фирме. И именно косяк: задумайся я на три месяца раньше, при составлении плана на следующий релиз, иконка была бы в следующем релизе… И я бы успешно профукал её появление у наших конкурентов.

А иконка так и осталась, хотя теперь ей уже почти не пользуются.

12579

Никакого секрета здесь нет

Что важнее для пользователя — мышь или клавиатура? Детский вопрос; должно быть и то и другое. Но всё-таки, исчезновение чего будет раздражать пользователя больше?

Во времена DOS один программист написал shareware-программу для специфических расчётов. Время её работы в бесплатной режиме было неограниченным, но пользоваться можно было только виртуальной клавиатурой. Чтобы избежать этого неудобства, нужно было купить у автора специальную клавиатуру калькуляторного типа, подключаемую вместо принтера. Взломать программу, чтобы работала с обычной клавиатурой, было, конечно, можно, но пришлось бы переписать половину программы, в которой соответствующий метод ввода не был предусмотрен вообще, и этого никто не стал делать. Специальная же клавиатура состояла из одних резисторов и кнопок, автор из её схемы секрета не делал, но честно предупреждал: поскольку он покупает эти детали оптом, а пользователю пришлось бы в розницу — дешевле купить у него. А в виде набора — ещё дешевле. И, намучившись с виртуальными клавиатурами, люди покупали, тем более что программ для этого вида расчётов тогда больше не было.

А говорите, GUI против консоли…

12551

Нажмите «Сделать всё» для всего

Расскажу и я о бритвах. Не так красочно, как мой коллега, но ближе к реальности.

История начинается с обычной опасной бритвы, которая появилась за 2000 лет до нашей эры. Время шло, металл становился доступнее, бритвы — острее, тоньше, легче, но лишь в начале двадцатого века инженеры додумались, что хорошо бы лезвие окружить чем-нибудь эдаким, предотвращающим порезы. Так родилась безопасная бритва. Ещё через почти полвека кто-то додумался ставить не одно лезвие, а картридж из нескольких. Потом ещё полвека — появилась эргономичная ручка, полоска для смазывания с экстрактом чего-нибудь, лазерная заточка и многое другое. Правда вот, использование лезвий из аморфных металлов, которые почти невозможно затупить, нам уже лет тридцать обещают, но никто не торопится вводить эту фичу. Но даже за это время станки так и не обезбажили: хрупкий пластик крошится в руках, заточки часто хватает на одно-два бритья, после чего процесс превращается в разновидность пытки, а одноразовый станок выбрасывается целиком. Бриться, как в рекламе, чтобы с одного раза и сразу начисто, у меня не получалось ни разу ни с одной бритвой за все двадцать лет, что я бреюсь.

Что же с программированием? В программировании сроки не измеряются веками. У нас не то что веков — нет даже десятилетий! Многие продукты доходят до стадии беты за год-два. Столкнувшись с простеньким багом или торможением, пользователи начинают верещать на ультразвуке: это бритве можно не сбрить с первого раза щетину или затупиться, а тут они же аж 15 баксов за продукт заплатили (в лучшем случае), они — клиенты, и у них всё должно быть идеально! Это к бритве не надо прилагать инструкцию на десять страниц и организовывать круглосуточную техподдержку, а к любому ПО надо, потому что даже если там будет форма с огромной кнопкой «Сделать всё» и надпись «Нажмите „Сделать всё“ для всего», то обязательно найдётся пользователь, который позвонит и будет истерить, что он ничего не понял и у него ничего не работает, а он же деньги платил и теперь натравит на нас НАТО, ООН и Спортлото.

Мы можем сделать всё быстро, качественно, недорого — но выбрать можно лишь два пункта, а для сложных приложений так и вовсе один.

12542

Proof of shave

Раз пошло такое дело и заговорили о бритвах, давайте я расскажу историю, почему же программисты делают именно такие предметы личной гигиены.

Начинается всё со здравой мысли: а давайте сделаем новую бритву! ТЗ простое: удобная ручка, два лезвия с расстоянием между ними N миллиметров и относительным сдвигом K, срок жизни — пятьдесят тысяч срезанных волосков, прилагаемое усилие — до 100 ньютонов. Реализуемая функциональность: побрить.

И вот одинокий, но гордый инженер за пару дней создаёт proof of concept. Бритва выходит неказистая, ей ещё можно порезаться, она плохо бреет дряблые щёки, но ей уже вполне реально побриться.

И тут приходят они — люди, которые знают, чего хочет заказчик. И говорят они странные слова. Заказчик бреется утром, а утром ни у кого ни на что не хватает времени. Давайте прикрутим к бритве телевизор, чтобы заказчик, пока бреется, мог посмотреть новости. Поскольку заказчик постоянно крутит бритву, к системе нужно прикрутить гироскоп и обеспечить поворот экрана по трём осям, чтобы он постоянно был горизонтален.

Одинокий, но гордый инженер тяжело вздыхает и сообщает, что в телевизорах он разбирается очень слабо, а в системах пространственного позиционирования вообще ни в зуб ногой. Поэтому ему придают в помощь телемастера и специалиста по этим самым системам, а чтобы их согласовывать — руководителя проекта.

Следующий месяц команда из четырёх человек старательно клепает новую систему. Телеэкран оказывается нелёгким, система моторчиков тоже весит немало, гироскоп тяжелый по определению, но его удаётся заменить цифровым акселерометром. Наконец, заказчику демонстрируется прототип. Пока заказчик водит прототипом по выбритым с утра щекам, телеэкран висит у него перед глазами. В итоге заказчик ухитряется порезаться, и в список требований добавляется система позиционирования бритвы на лице.

К этому моменту сама способность побрить уже в глубоком загоне. Инженер, проектировавший бритву, на 80% занят в другом проекте, и про этот вспоминает, как про страшный сон. К бритве прикручивается лазерный сканер поверхности и система предупреждения о недопустимых углах наклона. Заказчик в целом одобряет, но вносит предложение, раз уж в бритве есть лазер, добавить возможность использовать его как лазерную указку при проведении презентаций.

Ручка, рассчитанная на 10 килограммов, уже не справляется, и её перепроектирование поручают телемастеру. Телемастер ваяет новую ручку из дерева. Тестировщики находят в ручке десять багов — мест, где она всё равно ломается. Баги назначаются на специалиста по пространственным системам, и тот укрепляет ручку фрезерованным металлом. В одном месте ручка всё равно продолжает ломаться, но время поджимает, к тому же есть workaround: если место поломки прилепить на жвачку и замотать изолентой, ручка кое-как работает, так что этот баг переносится на следующий релиз.

В этот момент выясняется, что побрить верхнюю губу этой бритвой невозможно: телевизор мешает. Чтобы этого не происходило, нужно временно перевести телевизор в режим огибания носа, и эта процедура описывается в инструкции по эксплуатации. После всех нововведений лазерную систему нужно калибровать перед каждым применением, для чего нужно ей указать на дальнюю стену и поводить по ней лучом, чтобы нивелировать погрешности.

Новая бритва стоит, как небольшой паровозик, среди её функциональности — будильник, радиоприёмник, женский режим, пин-код для защиты от детей, фронтальная камера для съёмки свежеобритого себя и возможность связываться с домашним компьютером через Bluetooth. Срок службы лезвий прежний, они тупятся за неделю.

А в это время уже в другой конторе одинокий, но гордый инженер за пару дней создаёт proof of concept простого, дешёвого устройства, которым можно бриться. Пожелаем ему удачи.

12516

Один сломал, второй потерял

Да, дорогим инструментом удобнее, эффективнее, приятнее работать. Есть лишь одно «но». Так и хочется сказать: «маленькое», да только не маленькое оно, а существенное, кардинально всё меняющее. Дорогой инструмент постоянно боишься сломать или потерять. От этого трясутся руки, и эффективность, удобство и приятность сходят на нет.

Опасения эти не напрасны. Вскоре после покупки уронить дорогую дрель, раздавить собственным задом дорогой телефон и тому подобное — это те случаи, когда дважды платит отнюдь не скупой. Поскольку сам виноват, не помогут ни страховка (тем более что страхуют не всё — слышали ли вы когда-нибудь о страховании дрели?), ни гарантия, если она ещё действует. Зайдите в любую мастерскую — если там несколько дрелей, и одни старые, а другие новые, сотрудники стремятся сначала полностью выработать ресурс старых, выжать из них максимум, а новые берегут до поры до времени. И правильно делают.

Сотовый телефон стал моим рабочим инструментом в 2002 году. Уже тогда я задумался обо всём этом и принял решение купить б/у аппарат. И уже тогда начал получать первые навыки несложного ремонта мобильников (а в 99% случаев он требуется именно несложный).

Да, я менял телефоны. Но не тогда, когда они ломались, а когда хотелось новую функцию. Сначала GPRS, потом камера, потом вайфай, потом навигация. Всякий раз брал добротные модели, но в состоянии «очень б/у», потому и получалось недорого. Аппетиты на новые функции у меня росли медленно, поэтому каждый аппарат служил мне до полного физического износа корпуса — но не железа, которое я поддерживал в исправном состоянии, как мог. Некоторые мобильники, которые и после этого работали как часы, просто выглядели не очень, я сумел раздарить. Некоторые, с очень уж неприглядными, проклеенными со всех сторон корпусами, которые не подаришь даже бомжу, до сих пор лежат у меня в полностью рабочем состоянии, включая тот, самый первый. Не пользуюсь я ими только из-за отсутствия нужных функций.

Экономил я и на связи. Первым узнавал об акциях разных операторов, оперативно менял их, когда у того или иного выгодность акций перевешивала. Первым узнавал о безлимитном интернете с ограничением скорости, ещё когда это было в диковинку, потом — о ежедневных бесплатных минутах внутри сети. Всё это грамотно использовал и использую.

Ремонт телефонов никогда не отнимал у меня много времени. Самостоятельное копание в них не помешало мне за это время обрести семью, не сделало меня раздражительным — ничего подобного не наблюдается. Упущенной выгоды — тоже. Многие из тех, кого я знаю, меняют телефоны каждый год, некоторые берут для этого кредиты и даже вовремя с ними разделываются. Бывает, теряют и очень горюют. А я ни разу не брал кредитов на средства связи, ведь «очень б/у» можно купить (в том числе и у тех знакомых) и без этого. И всё у меня работает как часы, хотя и внешне покрыто трещинами и заплатами. Что я делаю не так?

Ах да, вернёмся к нашим баранам. Платное ПО. Права на его использование внезапно лишиться столь же легко, как раздавить телефон. Достаточно, в зависимости от способа подтверждения этого права, нечаянно повредить наклейку, потерять USB-ключ, подвергнуться угону аккаунта в магазине приложений и так далее. Только не предлагайте пиратство — вот тут уже скупой действительно платит. И не дважды, а на пару порядков больше.

А ещё запомните: кто привык находиться в перманентном состоянии преодоления искусственных трудностей, при возникновении реальных окажется в положении «тяжело в учении — легко в бою». А что скажет владелец несамодельного несуперкара, сломайся его «паркетник» на расстоянии в пару сотен километров от ближайшей СТО?

12493

Почти что часть ядра

Мой телефон с зелёным роботом внутри в очередной раз заартачился и отказался ставить обновления программ по причине «места мало» — ага, 200+ мегабайт свободной памяти! Пришлось начать шаманские танцы. В процессе плясок возникла необходимость пометить пару программ (которые в обновлениях не нуждались) как системные. С моей лёгкой кривой руки в этом списке оказалось приложение Buben с очевидной функциональностью. Я посмеялся, перезагрузился (как велела инструкция)… и с удивлением обнаружил, что зелёный робот бодро обновляет софт.

Я не знаю, кто именно отзывается на звон бубна, но этот кто-то явно могуч…

12492

Far too scary

На сервер надо было закинуть большое количество данных, поэтому вместо копирования по сети решили подрубить USB-диск напрямую. Диск подключён, определён. Запускаем Far — и экран гаснет, а через секунду появляются белые буквы на синем фоне.

У админа встают волосы дыбом. А, нет, это всего лишь Far в полноэкранном текстовом режиме запустился…

12443

Догнать, скачать и побороть

Порой мы удивляемся: почему многие предпочитают пиратские программы бесплатным, даже если вторые по тем или иным параметрам лучше? Сыромышеловочный стереотип? Хромающая совместимость форматов? Да, но не только.

Я застал годы, когда школьники играли с вкладышами и очень любили отнимать бумажки с картинками у тех, кто на класс младше или просто слабее. И другая игра была — олдскульщик вспомнит посреди ночи — с гоночными болидами, сложенными методом полуоригами, ибо не из квадрата, а из полоски. У нас многие умели оформлять эти болиды ещё красивее вкладышей. Да ещё и изобразить можно что хочешь, а не ограничиваться тем, что есть, как на вкладышах. Но вторая игра была заметно менее популярной. Азарта не было. Чтобы заполучить вкладыш, надо было либо жвачку купить, либо догнать и перебороть. А болид можно было изготовить и оформить быстро и без напряга. Мы считали это не слишком интересным.

Получается, любой, кто сегодня «героически» мучается с кряками и кейгенами — до сих пор чуть-чуть школоло?

12360

Плюс девять пальцев

Интересная проблема — разработка интерфейса. Того, через который пользователь будет работать с компьютером, программой или сайтом.

Нет, серьёзно: игрушка или инструмент почти бесполезны, если люди люди не смогут пользоваться самым простым и быстрым способом. И есть тысяча и один способ достичь противоположного результата. Творческая деятельность! Если делать всё по-взрослому — очень много надо работать с людьми. Одна из методик, которую я видел в английском интернете, мне очень понравилась своей смесью смекалки и варварства. Надо отловить пять человек (если хобби — то знакомых, а если есть такая роскошь — то и пятнадцать), кого-то со знанием компьютера, кого-то — нет, показать им распечатку своего сайта или скриншот приложения и спросить, как они его понимают. Наверняка не так, как ты задумывал. А когда ты расспрашиваешь подробнее, начинаешь понимать, как видят предлагаемые возможности другие люди. Мир начинает выглядеть более странным местом, чем прежде.

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

Я не могу представить, как можно запихнуть и утрамбовать Фотошоп в мобилу или айпод без потери функциональности и удобства — так, чтобы с ним можно было быстро работать одним пальцем, без клавиатуры с хоткеями. С Иллюстратором — то же.

Я видел, как специалист работает с Экселем. Для него это программа, в которой можно быстро добиться нужных результатов. С помощью макросов, фильтров и хоткеев он выдирает и упорядочивает тысячи складских записей. Это выглядит почти поэтично. Это менеджер. Он делает анализ, для которого наши полувраги-полудрузья из соседнего отдела используют четырёх человек.

Я видел записи на Ютубе, как профессор геологического работает с Емаксом. Это уничтожило мой разум. В этом есть красота.

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

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

12318

Чему стоять, того не миновать

Меня внезапно озарило, что любое знакомство с новой технологией/продуктом неизбежно проходит пять стадий принятия смерти:

  1. Отрицание. «Да ну его в жопу, я не буду работать с этим куском говна!»

  2. Гнев. «Да твою же мать, какая пьяная мартышка делала этот интерфейс?! Чем у них колются индусы-кодеры?! Твою мать, что ты творишь, срань господня, я же только файл переименовать хотела!»

  3. Торг. «А, может, этот кусок задачи выполним вот на этой старой доброй платформе? Ну, в последний раз! Честно!»

  4. Депрессия. «Шла 1856-я страница мануала…»

  5. Принятие. «Ну… После четвёртой переустановки и подгона всего окружения, в принципе, можно работать!»