Истории с тегом: мысли о вечном

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

12086

Как за неделю написать трёхмесячный проект

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

А теперь — собственно, рецепт.


Стадия планирования. Планировщики строят какие-то планы. Менеджмент эти планы утверждает, планы передаются отделу разработки.

Стадия разработки. Все работают согласно приготовленным планам.

Стадия тестирования и стабилизации. QA проверяют функциональность, согласно утверждённым планам, находят какие-то баги, разработчики их чинят.

Две недели до выхода Release Candidate. Приходит крутой спец из отдела продаж и говорит: «А я тут был на презентации конкурента, у них такая классная фича есть! Давайте, чтобы быть конкурентоспособными, мы забацаем вот эдакую фичу? Продаваться наш продукт будет в …дцать раз лучше! А без неё этот наш продукт вообще никто не купит».

«У-у-у… Без продаж нам будет туго. А давайте!» — соглашается менеджмент.

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

QA, скрупулёзно следуя планам, добираются до только что вписанного куска. Описанная в нём функциональность, естественно, не работает, потому что её никто не писал. Открывается баг на тему «Мегаважная фича не работает!!111»; ему присваивается экстравысшая категория важности.

Только тут разработчики офигевают от бага, смотрят в планы (которые не должны были меняться ни при каких условиях), офигевают ещё раз и интересуются: «Это ваще что было?! А нас кто-нибудь спрашивал?»

Всё это сопровождается беготнёй, мейлами через три континента, криками, воплями и инфарктами. Менеджмент убеждает разработчиков поднапрячься. Кого-нибудь делают крайним и спихивают весь проект на этого бедолагу. Он выполняет задачу, держась исключительно на кофе и на мотивирующих пинках начальства. Ну, как «выполняет»… За неделю трёхмесячный проект не написать. Поэтому пишется только good path, и новая фича будет работать, если пользователь ни в коем случае не попытается отойти от описанной в документах процедуры. Всё остальное (а 80% работы обычно занимает обработка граничных и нестандартных значений) закрывается заглушками — иногда прочными, иногда не очень. Поведение программы в том случае, если пользователь всё-таки отошёл от good path, вообще никем не гарантируется. Если повезёт, заглушка сработает, и пользователь ничего не заметит. Если не повезёт… Значит, не повезет. Программист сдаёт проект, получает премию и уходит спать.

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

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

Клиенты получают новую версию программного продукта. Поскольку пользователь — это такое периферийное устройство хаотичного ввода, а инструкции написаны для дураков, от good path отходят почти все. В результате — разрыв шаблонов, потому что программа, в общем-то, очень неплохая, внезапно начинает вести себя как студенческая самоделка, стоит только воспользоваться одной из новых функций и проявить чуть-чуть изобретательности. Хорошо, если дело ограничивается разрывом шаблонов. Иногда разрыв шаблонов переходит в стадию разрывов контрактов.

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

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


Резюме № 1: инициативных дураков из отдела продаж надо убивать-убивать-убивать Ржавой Секирой Ужоса, желательно сразу после их трудоустройства.

Резюме № 2: с момента начала разработки у планировщиков надо забрать физическую возможность менять планы этой версии.

Резюме № 3: менеджмент, который этого не понимает, ведёт компанию к краху.

12057

Пока корона не рассосётся

Все, наверное, слышали золотое правило: работает — не трогай! Это действительно хорошее правило, проверенное жизнью.

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

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

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

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

Ты увидел, но не понял зачем? Подумай ещё раз, пока корона на голове не рассосётся: возможно, это не мусор на полу, а кто-то более опытный просто заранее подстелил соломки?

12041

Мысль неизречённая есть истина

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

На середине мысли с его балконом бесшумно поровнялся флип. Из него вышли двое в серебристых одеждах, затащили бедолагу в футуристическое средство передвижения и куда-то повезли. По дороге ему объяснили, что за мысль о скачивании фильма с торрента полагается пятнадцать суток в «обезьяннике» на Луне. И лучше отбыть пятнадцать суток за мысль, чем гораздо больше — за само скачивание.

В лунном ИВС его охватывали смешанные чувства. С одной стороны, побывать на Луне ему всегда хотелось, но не позволяли финансы. До удешевления таких полётов оставалось лет двадцать. А тут — бесплатно! С другой — ему хотелось погулять по Луне, посмотреть на достопримечательности, а не провести две недели в четырёх стенах.

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

12038

Чёй-то мы?

Как рассуждают компьютерщики:

— Поймите, компьютер — не телепат! Он делает не то, что вы думаете, а то, что вы просите. Научитесь чётко формулировать свои просьбы, и компьютер будет делать то, что вам нужно.

Как рассуждают пользователи:

— А чёй-то вы, компьютерщики, не сделаете эти свои компьютеры телепатами? Сколько задницы протираете, а воз и ныне там! А заодно абстрактному мышлению их обучить не помешало бы.

Нечёткая логика существует не первое десятилетие, а с недавних пор и Bluetooth-энцефалографы доступны рядовым гражданам. А правда, чей-то мы?

12025

Боги, которых мы заслуживаем

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

Но они считают меня негодяем, нарочно устраивающим подставы, грязным, пыльным, вонючим и странным. Путают ли они меня с Богом?

12005

Детство. Отрочество. Юность

В 1989 году обрёл я счастье в виде клона ZX Spectrum по той простой причине, что на «Денди» не хватило денег. Собственно, этот момент определил дальнейшее будущее. Не просто вставил-вынул картридж, чтоб поиграть, максимум — почистил контакты спиртом, а борьба за сохранность информации, программирование (вначале на Бейсике, потом на ассемблере), аппаратное расширение путём паяльника и программатора, а также другой IT-опыт. В народе такие люди называются «гиками».

По мере развития начались эксперименты уже с IBM PC, сетями, периферией и совместимостью несовместимого. Вспоминаются поднятие веб-сервера на медиаплеере, файлопомойки на сотовом телефоне, как раз с теми самыми шустрыми пингами и «приемлемой работой». Такие люди в народе называются «эникеями».

Но всему приходит насыщение. Уже уходишь от наколенных устройств и переходишь в зону стабильности. Это как раз та область, где нужно работать не только с железом, но и с людьми. Да-да, начальство — это тоже люди, но только образованные в несколько другой области. Надо не молчать о своих внедрениях, а объяснять понятным им языком. В народе подобные вещи называются «бизнес-планом». И если этот бизнес-план будет выгоден им, то, соответственно, будет выгоден и вам. Вот тогда и получается, что на нескольких машинах по 20 тысяч рублей можно запустить распределённое вычисление при сохранении возможностей печатной машинки, а не покупать вычислительный сервер за сумму с кучей нулей. Вот это как раз тот самый «админ».

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

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

12000

Поезд уходит в небо

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

Делаем свой модем с частотным разделением на каждый канал, почти четыре месяца пишем систему шифрования и коррекции ошибок, чтоб добиться хотя бы стабильных 20 байт/с через заслон шума и помех, где речь-то не всегда можно разобрать. Потом тесты…

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

Ждём пару месяцев — движений нет. Ну, что делать? Через сеть отдаём команду программе. Бац! На табло загорается: «Опасное сближение». Но сближения нет. Следующая минута — и товарняк пошёл в обратную сторону с динамикой покруче НЛО на космических съёмках. И далее программный троллинг на протяжении почти двух суток, пока систему не вырубили в пользу старой, с картой и лампочками.

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

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

Для доказательства закладки нужен дизассемблинг прошивки, её анализ специалистом по этому компьютеру, поиск места закладки в тоннах кода. Никто не будет заниматься этим ради одного предприятия, не говоря уже про 99% остальных случаев кидалова, когда речь не идёт об опасном производстве.

Что до нашей системы, то денег нам так и не заплатили (впрочем, мы это уже понимали на момент диверсии). Директора и всё руководство филиала, которое нас кинуло, сняли за провал, высшее руководство получило пенделей согласно занимаемой должности. Взамен была куплена французская система, дороже нашей на пять порядков, которая потребовала прокладки кабеля вдоль всех ЖД-линий и сдохла в первые же морозы. В результате до сих пор положение поездов отслеживают тётки в жилетках.

На допросы нас не вызывали, даже не вспомнили про нас. Мы же сдали исправную систему и нам за неё заплатили (по бумагам). Виноват тот, кто такую плохую систему принял.

11934

Робот с улыбкой зверька

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

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

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

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

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

11862

Прыжок вниз и в сторону

Я тоже думал, что перегорел. Тоже думал, что кроссворд разгадан. Спасло меня то, что работу пришлось сменить, и с руководителя IT-управления я дауншифтнулся в рядового программиста. Вдруг оказалось, что у меня попутно есть время для кучи мелких проектов, которыми я помогу друзьям и знакомым. Вдруг изучил параллельную вселенную администрирования линуксов. С учётом того, что осталось в голове после руководства, мои сервера не ломаются и не падают. Нашёл ещё одну параллельную вселенную — SoC и микроконтроллеры, половина которых также работает на линуксе. Попробовал себя в Андроиде, и это тоже оказалось восхитительно. Знаю, куда нельзя пускать дилетантов (в том числе и меня) — и не лезу, а любуюсь чужим профессиональным решением.

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

А привело ко всему этому только одно: наличие свободного времени после ухода с руководящей должности. Потому, если вы действительно любите IT и хотите обратно зажечь огонь в глазах, не спешите руководить и отвечать за ваше стадо оболтусов (хоть они и хорошие люди, но то, что вам очевидно, для них пустые слова). Лучше сдвиньтесь в сторону, и второе-третье-десятое дыхание обязательно откроется.

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

11859

Найти себя без неба

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

Вас объединяет одно: вы верите в романтику профессии. Как пилоты, которые без неба не находят себя.

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

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

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