bash.im ithappens.me zadolba.li

Программизмы

11084

И никто не виноват

Я пишу для Ардуино,
Это славная машина.
Я пишу для Ардуино
Скетчи разных железяк.
Если плата выйдет плохо —
Назову её «дурёха».
Если скетчик выйдет плохо —
Назову его «дурак».

Подошли ко мне два брата
И тихонько говорят:
«Разве плата виновата?
Разве скетчик виноват?
Ты их пишешь плоховато
И паяешь кривовато.
Ты сама и виновата,
И никто не виноват».

Я пишу для Ардуино,
Пью индийский чай печально,
Я пишу для Ардуино,
Приговариваю вот:
Если плата выйдет плохо —
Назову «электрочайник».
Если скетчик выйдет плохо —
Назову «индийский код».

11061

Точка невозвращения

Девушка собралась к подружкам. Свой телефон она потеряла, взяла мой.

Будильника у меня нет, пользуюсь тем, который на телефоне. На следующий день на работу — вставать как-то нужно. Решил написать будильник. Написал. Проверил. Работает.

Встал бодрым и выспавшимся. Смотрю на время. Естественно, проспал: при отладке забыл брейкпоинт убрать.

11048

Вот такие пироги

На IT happens часто ругают программистов за кривые интерфейсы, нелогичное поведение программы и прочие подобные вещи. Вот только далеко не всегда в этом виноват программист. Если это не какой-то самопальный проект, а коммерческий продукт, в зависимости от конторы в разработке интерфейса могут участвовать проектировщик взаимодействия, дизайнер, менеджер, маркетолог… Нет, есть клинические случаи, когда этим заставляют заниматься программиста, но тут, опять же, претензии надо предъявлять не программисту, а его руководству.

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

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

Так что, уважаемые пользователи, если вам попалась программа с кривым интерфейсом, не стоит сразу ругать программистов. Часто мы на вашей стороне, но не всегда имеем возможность что-то изменить.

11045

К четвёртому пришествию

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

— Сделаем всё, как вы хотите! А как вы хотите?

— А вот так!

Обговариваются интерфейсы, высылаются спецификации, летят недели — наступает понимание. Через неделю макет — кривой, что-то делает, но всё не так, как обговаривали. Поднимаются истории разговоров, указывается трижды подчёркнутое и согласованное, а в ответ:

— А мы так не можем! У нас всё так и вот так — и никак иначе. Иначе только на год сдвинуть сроки.

Машу хвать, так что ж ты заливал, что всё можно? Что ж ты рассказывал, что всё понял? Что ж ты ждал от меня (и получил ведь, и согласился!) концепций и принципов работы заказанного модуля? Очевидно, чтобы было на что стакан с кофе поставить, ибо всё равно сделал по-своему.

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

Мне этот ужас потом встраивать. А отказаться от них уже нельзя: времени нет. Как говорится, если хочешь сделать что-то хорошо, сделай сам.

11000

Вышиб дно и вышел вон

Четырёхъядерный проц, 2 ГБ ОЗУ, 64 ГБ флеш-памяти, экран 1920×1080. Как многие поняли, сейчас я описал смартфон известной фирмы. По характеристикам он не отстаёт от среднего ПК двух-трёхлетней давности. Да, хорошо, я принимаю, что микропроцессоры сейчас стоят копейки, что время программиста дороже. Но в итоге, следуя простой истине «нет ничего постоянней, чем временное», получается куча кода, который тупит. Да-да, несмотря на выдающиеся характеристики железа. Более того, ПО так нагружает процессор и память, что те разогревают весь смартфон до невозможности.

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

Так, может быть, дело не в железе, а в том, кто писал для него софт и накладывал требования, которые выполнить нереально?

10995

Вспомни, как это было

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

На тот момент я уже прекрасно знал, как устроен DOS. Из обыкновенного Паскаля выяснил, что просто в памяти затёрта запись о диске. Легко! Написал простую программку, восстанавливающую в памяти status quo, — дисковод появился.

Админы оказались хитрые, искодники проверили и на следующий день удалили. Ладно, написал дома на ассемблере в Hiew, переписал в шестнадцатеричных кодах на листик. Вбить одну строчку в кодах можно за полминуты. Дисковод был мой. Админы поняли, стали со мной дружить, делиться редкими книжками. Я уже был на их стороне.

10958

Блестит, поёт, не хочет ехать

Знаете, за долгое время работы программистом я усвоил одну вещь. Расскажу на примере.

У нас есть замечательный завод, который выпускает прекрасные автомобили «Запорожец». К нам приходит важный заказчик и говорит: «Хочу авто, чтобы через неделю и чтобы ездило». И вот гендиректор завода вместо того, чтобы собрать «Запорожец» из лучших деталей и отполировать его до блеска, заставляет рабочих собирать «Мерседес», учитывая, что деталей нет, запчастей нет, а есть только голый энтузиазм. В итоге через месяц (путём затягивания сроков и обещаний «завтра точно будет готово») заказчик вместо прекрасного «Запорожца» видит «Мерседес» с салоном из дерматина, вентилятором вместо кондея, аудиосистемой «Урал» вместо магнитолы, без колёс, дверей и двигателя. Подивившись на такое чудо, важный заказчик уходит к конкурентам и через неделю получает от них «Жигули», которые через несколько месяцев постепенно превращаются в «Астон Мартин».

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

10951

onTongueDown()

Пишу обработчик события onclick на Javascript. Написал, кликаю-кликаю, но чего-то не работает. Смотрю код, а там — onlick. Ну конечно не работает, событие же другое! Лизать надо!

10950

Вредоносонос

Присылает мне моя дражайшая любовь свеженаписанную игрушку. Скачиваю без раздумий, ожидая увидеть что-то вроде «змейки». Запускаю приложение — обычный черновик, мелькают строчки. Заготовка «рогалика», короче. Внезапно вылетает аська, следом, трепыхнувшись напоследок и выдав «Опаньки!», браузер. Всё перестаёт реагировать на команды, диспетчер задач даже не вызывается. Завершает безобразие BSoD при ребуте.

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

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