12589

Moron-driven development

Каждый раз читаю в сети (как здесь, так и на других IT-ресурсах) про негодование разработчиков от менеджеров — чего стоят все эти истории про создание бритвы! — и каждый раз задумываюсь: уж не в параллельной вселенной ли я живу? Или, может, всё куда проще, и людям, как обычно, свойственно валить свои косяки и проблемы на кого-то другого, а также делиться по принципу «мы vs они» и «свой vs чужой»?

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

О проектах, ведомых разработчиками, можно долго рассказывать, но чаще всего там всё довольно-таки прозаично и упирается в неадекватные шапкозакидательские оценки сроков исполнения, абсолютно ублюдочную проработку интерфейсов, логики работы и юзабилити (ведь это всё «не нужно», «тут всё ясно и дебилу» и т. д.), посредственную поддержку и производительность на устройствах конечных клиентов (когда каждый раз «внезапно» оказывается, что средний домашний и офисный компьютер — это не десктоп с i7, 32 ГБ ОЗУ, 27-дюймовым монитором и последними версиями всего ПО). Впрочем, это всё банальные проблемы, которые так или иначе потом можно решить, хотя они и бесят, когда одни и те же люди умудряются регулярно попадать в них раз за разом и не делать выводов.

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

Свистелки и перделки? Господи, да ведь именно заказчики в первую очередь и просят весь этот бред! Дурной вкус, желание выделиться, понты — объясняйте как хотите, но именно заказчики в первую очередь тянут подобное в проект. Нестандартные, выдуманные ими сами и абсолютно неинтуитивные/нелогичные элементы управления, меню, схемы поведения — шедевры креатива заказчиков. Рахитичные дизайны, кривые схемы вёрстки, цветовые схемы для инопланетян, несочетаемые шрифты, дикие пиктограммы, переусложнённые формы, бессмысленные анимации и прочее «добро» — это как раз результаты прямого доступа заказчика к руководству проектом. Про постоянные смены настроений, идей и многократные переделки уже сделанного я вообще молчу — да, кому-то такое нравится, вот только сроки сдачи проекта таким образом могут сдвигаться почти вечность. В итоге то, что можно было сделать, протестировать и сдать за три-шесть месяцев, делается более двух лет. Я не знаю, каким надо быть мазохистом, чтобы разработчику нравилось участвовать в этом балагане, даже получая за это приличные деньги.

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

12588

Если ранцы всем раздать, будут все тогда летать

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

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

Грёзы разрушила очередная научная передача, где о реактивных ранцах заговорили с привлечением простой математики. Есть такой закон: чем более массово производят товар, тем он дешевле. Вот TFT-дисплеи, например: в том же начале девяностых «активная матрица» в ноутбуке считалась престижной характеристикой, а теперь они даже в самых дешёвых смартфонах. Что мешает и реактивные ранцы так же массовыми сделать?

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

Ладно, а если удастся найти дешёвый и компактный источник энергии — такой, чтобы стоимость перелёта на ранце через дорогу стала ничтожной? Увы, препятствия останутся. Над дорогой не меньше опасностей, чем на ней — одни троллейбусные провода чего стоят!

Хорошо, возразите вы, но если такой источник найдут, то и троллейбусам провода будут больше не нужны. Да, но с таким источником будет выгодно делать весь транспорт летающим. А тогда средства безопасного перехода дорог будут не нужны по той простой причине, что исчезнет сам предмет перехода.

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

12587

Принцип Паули в программировании

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


Пишем вдвоём программу. Логика сложнейшая, там и тут самопроверки.

— Иди сюда, программа пишет: «Mismatch on 0»! — кричит тестер.

— Значит, сработала самопроверка, — отвечает программист. — Давай проект, буду разбираться.

Через десять минут программист возвращается.

— Ты не поверишь: ошибка в самопроверке!

12585

Дерьмо — оно и есть дерьмо

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

Но ничего, ведь у меня же есть онлайн-кошелёк! И там много-много денег, которые я смогу перекинуть на телефон, чтобы сделать один звонок. Но живу я в глухомани, сижу с Йотовского модема, который плохо ловит покрытие и не может прогрузить все эти тонны перегруженного Яваскрипта.

Кто-то скажет: сам виноват, ты нищеброд, живёшь далеко. Ищи другие способы. Но мне, знаете ли, пофигу. Дерьмо — оно и есть дерьмо само по себе, каким бы я ни был неподготовленным и «безответственным».

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

У почты Google есть опция перехода на «простой HTML». Прекрасная просто опция: нажал — и можно читать письма, можно писать письма, можно отправлять их в спам. Сделайте же хотя бы это!

Мне до лампочки ваш «минималистический стиль» с хипстерской графикой. До фени то, что у вас сейчас модно делать всё на этом JS какими-нибудь хитрыми фреймворками, замещая правильный какими-нибудь document.open. Обезьян, которые делали фронтенд этого неработающего хлама, нужно гнать вон из профессии. Дилетанты!

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

Задолбали некомпетентные «разработчики»!

12583

Здесь, сейчас и точно так

Знаете, в чём искусство быть айтишником (и любым другим специалистом)?

Не в том, чтобы вывернуться наизнанку и непременно сделать что-то самому.

Не в том, чтобы переложить задачу на собственноручно написанный скрипт, эникейщика, соседний отдел, подрядчика, аутсорс, форумный «многоуважаемый олл», разработчиков платного ПО и т. п.

И даже не в том, чтобы попеременно применять оба подхода в зависимости от собственного настроения. Нет!

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

Выработайте его у себя, и всё у вас получится.

12582

Если к жопе приспособить сопроцессор фирмы «Крей»

Любители конструирования бритв сподвигли высказать свои пять копеек. Собственно, чем отличается ПО от материального мира? Отсутствием износа, лёгкостью копирования и большой сложностью создания. Разработать что-то сложно, тиражировать не стоит практически ничего. Как бы в таких условиях происходила разработка автомобиля?


У нас задание: сделать автомобиль. Так, когда-то мы делали лодку, возьмём за основу.

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

Мотор? У Петровича есть старый авиамодельный движок. Копии ничего не стоят. Берём 150 копий и ставим вокруг дифференциала. Дифференциал и задний мост придётся купить, убив на него половину бюджета. Мы же можем только водопроводные трубы гнуть и стеклопластик клеить.

Говорят, у машины должны быть амортизаторы. Бюджета нет. Варим раму из водопроводных труб и подвешиваем лодку внутри рамы на резинках от трусов. Одну резинку я из собственных трусов пожертвовал, а копирование нам ничего не стоит.

Колёса? У нас есть ролик от коньков. Если сделать обруч из водопроводной трубы и прикрутить к нему ролики — думаю, покатит. С крепежом проблема: есть болты М8 и гайки М20. Искать другое долго и дорого. Надо сделать пробку в гайку М20 и нарезать внутри этой пробки М8. Кажется, это называется «враппер».

Поворотники для сигнализации светом? О, для сигнализации светом есть списанный автомат отстрела тепловых ракет от СУ-27. Если положить в порох добавки для цвета, будем сигнализировать так, что мало не покажется.

Теперь найдём опенсорсные тормоза…

12581

Масонско-опенсорская мини-ложа

Довелось мне как-то общаться с товарищем. Узнав, что я сторонник открытого ПО, он начал всячески его поносить. Пересказывал содержание дорабатывавшего тогда последние месяцы Get the Facts, приправляя страшилками, которых нет даже там: «опенсорс используют хакеры-террористы», «опенсорс портит железо» и прочее в этом духе. Я пропускал мимо ушей, с трудом сдерживая смех: не первый раз подобное слышал, только в более мягкой форме.

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

При первой же встрече я прямо в лицо сказал ему:

— Видел тебя в таком-то чате, ты, оказывается, сам опенсорсник.

— Да, у меня всё ПО опенсорсное, недавно даже BIOS перепрошил.

— А почему ж ты тогда мне проприетарщину пропагандировал?

— Потому что опепнсорс — для элиты, и я делаю всё, чтобы отвадить от него быдло.

Во амбиции! Целая масонская мини-ложа, из него одного и состоящая. Я колебался, куда это запостить, сюда или в «Задолба!ли». Решил сюда: и об IT, и сказать ему тогда хотелось не «задолбал», а «такие, как ты, позорят республику». Но не сказал и этого: такие, как он, существовали в единственном экземпляре. Или ошибаюсь — вы тоже сталкивались? А «существовали» в прошедшем времени — потому что он и сам от этой точки зрения потом отказался.

А мечтам его сбыться было не суждено. Трудно сегодня найти вычислительное устройство, где не было бы хотя бы одного опенсорсного байта.

12580

Перемен не требуют наши сердца

Ножовка по металлу (а также по пластику и всему чему угодно) — великая вещь. Сделать из МФУ принтер? Пожалуйста!

Совершенно с той же лёгкостью получилось преобразовать громоздкий музыкальный центр с уже не работающим CD-чейнджером на много дисков во вполне компактный микроаудиоцентрик. Ввиду того, что CD-чейнджер умер от удара чьей-то ноги, «ампутация» нерабочей и совершенно неприглядно смотрящейся «части тела» пошла не только на пользу, но ещё и восстановила утраченную эстетику.

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

12579

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

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

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

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

12578

Два таба до счастья

Я не айтишник: не сисадмин, не программист, не инженер. Я занимаюсь наружной рекламой — вывески и всё такое. К компу я и близко не подходил уже года два, но во время о́но довелось мне работать скромным наборщиком объявлений в известной в нашем городе редакции.

Там был IT-отдел, имевший три самописные БД для разных изданий, отдельную БД под клиентов и никак не связанную с ними БД (1С? Не, не слышали) для бухов. Естественно, стыковалось всё это добро такими окольными путями, что и представить сложно.

Для начала меня жутко задолбало отсутствие табуляции в форме набора объявления — на каждое следующее поле приходилось тыкать мышью. Попросил айтишных бойцов сделать. Через неделю получил искомое и научил весь отдел наборщиков пользоваться табом. Потом меня достало то, что наиболее часто встречающиеся слова приходилось вбивать полностью. Была придумана система автозамены сокращений на полные слова, причём автозамена срабатывала на пробел — не надо было жать какие-то комбинации клавиш. Снова поход к айтишникам, удивлённые лица (парень, ты откуда такой умник свалился?!), через неделю реализовано. Опять обучил отдел, включая начальницу, повесил список сокращений на стенку. Всем стало хорошо, а через месяц выяснилось, что производительность отдела набора выросла втрое.

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

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

Решением отца всея издательства я буквально поселился в отделе кодеров, по-прежнему получая жалкую зарплату наборщика, забыв вообще про объявления.

Итогом стало: объединение всех трёх БД изданий в одну и связка с бухами, интеграция клиентской БД в остальные базы, кардинальный рестайлинг интерфейса под менеджеров, бухов, наборщиков и дизайнеров, несколько скриптов, автоматом прикручивающих обработанные в Фотошопе фото к объявлениям, и множество других фишек, включая замену железа на более мощное и кучу всего другого.

Я просто сидел в отделе, пялясь в мониторы с сотнями строчек кода и ничего в этом не понимая, приставая с вопросами: «Как это будет выглядеть?» Новые сборки БД компилировались ежедневно по десятку раз. Я буквально задолбал айтишников.

Наконец был достигнут приемлемый результат. Спустя два месяца мне случайно попался на глаза финотчёт: доходы компании увеличились более чем в два раза. Я по-прежнему получал зарплату наборщика.

Я уволился, заявив, что сделал для компании больше, чем кто бы то ни было (а разве нет?), и попал в чёрный список работодателей. А через две недели меня разыскал начальник IT-отдела, вручил тысячу долларов и ящик пива со словами:

— Хорошо, что ты не айтишник!

Мораль сей басни такова: не стесняйтесь требовать чего-то у айтишников, если понимаете, что вам нужно для того, чтобы работать с большей эффективностью. Если ваши требования логичны и практичны, вам пойдут навстречу.