Category: архитектура

Профессиональное

Лично я всю жизнь разрабатывал софт методом Intergity Test Driven ("поменял строчку - запустил всю систему с нуля, погонял в разных режимах и посмотрел, получилось ли то, что должно было получиться"), и потому не особо нуждался в юнит-тестах. Но в больших коллективах, где каждый отвечает только за свою строчку, и лишь Бог - за конечный продукт, они наверное нужны, чтобы прикрыть личную задницу. "К пуговицам претензии есть?".

Юнит-тесты, зачастую, работают против проекта, а не "за": любое внутреннее изменение кода (не меняющее поведение системы с точки зрения пользователя) часто заставляет менять, выкидывать или переписывать с нуля кучу тестов.

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


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

Вместо пьятницы

Здесь все от мене зависит (с)

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

Подсчеты ОЭСР свидетельствуют, что если лимит на [американский федеральный] долг не будет расширен, в 2014 году все страны ОЭСР окажутся в рецессии...

На минуточку, ОЭСР - это 34 наиболее развитых мировых государства. И все они, как выяснилось, живут на подачки американского бюджета. Не правда ли, впечатляющий результат централизации?

Казалось бы, самое время "объявлять свой двор валютной зоной". Но вот закавыка - валютные зоны не объявляются, а строятся, и архитектура таких сооружений совсем не простое дело. Посложнее, пожалуй, архитектуры мостов и программных продуктов. И если винды мастдай, то отсюда совсем не следует, что вася-пупкин-ОС сразу же начнет замечательно работать. Создавать валютные зоны тоже уметь надо, а с умениями среди "интеллектуалов", которых у нас "полно", как-то не очень :(

Настоящая причина революций

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

А появляются миллиарды так:

Человек может жить в выгребной яме, и считать себя королем, или страдать во дворце от нестерпимой роскоши.

Зубочистки в Европе

Съездил в отпуск, 3500 километров по Испании, Барселона-Мадрид-Севилья-Гранада-Валенсия и так далее. Так вот, ни в одном кормежном заведении, от придорожных кафе самообслуживания до ресторанов с видом на центральные соборы, UPD: на столах не было зубочисток.

В Москве знакомый удивился моему удивлению: "А ты что, не знал, что в Европе зубочистками не пользуются?". Я поскреб в затылке - вроде бы в Чехии и Италии зубочистки были.

Кто часто там бывает - что, правда не пользуются?!

Софтостроение способом "дотянуть до зарплаты"

Еще ценные наблюдения от d_zh:

...в условиях, когда на зарплату через два месяца деньги еще нужно заработать, а не взять из бездонных закромов, потенциальный клиент может внести существенные коррективы в то, чем мы занимаемся на следующей неделе. Поэтому и программисты с "правильными архитектурными подходами" зачастую остаются непонятыми и неоцененными по достоинству: архитектура должна позволять быстро внести любые изменения, в том числе те, которые изначально не планировались как класс. А это, как правило, такая архитектура, которую интуитивно делают студенты, а не специалисты с 10-летним опытом, сотней прочитанных книг и обостренным эстетизмом :-) Ну и еще привет любителям запойных рефакторингов - в ту же топку. Гигиенические процедуры не должны превращаться в самоцель. Красивый код сам по себе - ни разу не ценность.

Как говорил мне 15 лет назад один мудрый психолог из Одессы, Правота - это 20 килограмм золота в кармане утопленника. Так и здесь: правильная архитектура вместо требующихся "завтра к утру" красивостей (без которых не заплатят) - это вон из профессии. Потому что в реальном мире платят только за то, что можно потрогать руками.

Управление требованиями, или Когда ошибка гарантирует провал

В разработке софта (да наверное и в любой другой разработке, том же бизнес-планировании) существует постоянно забываемое правило: цена ошибки в архитектуре в 100 раз выше цены ошибки в коде. Исправить код - вопрос дней или даже часов; исправить архитектуру - значит по-сути сделать проект заново.

Но существует ошибка, исправить которую вообще невозможно. Это ошибка в исходных требованиях к продукту. Гляньте к примеру Top 10 Epic Fail in Product Launch. Если Вы выпустили Windows Vista, и она "не пошла", поскольку защищенность от вирусов и DRM оказались совсем не тем, что хотела публика - проект умер окончательной смертью. Инвестиции в него уже никак не вернуть.

Вот почему я обращаю Ваше внимание на заметку gaperton, посвященную управлению требованиями:

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

P.S. Заметка на самом деле совсем о другом (о том, что хорошему руководителю Скрам не нужен), но фраза мне понравилась. Жаль, конечно, что о самом "сборе требований" gaperton ничего не написал. Ну вот как научусь, сам напишу :)

Путешествие в сказку, или В Прагу за европейской архитектурой

У моих друзей-архитекторов, а с недавних пор и у меня самого словосочетание "пермская архитектура" вызывает сардонический смех. К счастью, есть и другие города, например, Прага. Побывав в ней, я понял, что городская застройка может представлять собой не только установку в произвольном порядке мало чем отличающихся друг от друга зданий, но и настоящую "музыку камня". Старые пражские улочки показались мне коридорами какого-то громадного замка, каждая комната которого отделана в своем собственном, оригинальном стиле. Улица европейского города - это внутреннее, обжитое, домашнее пространство, в отличие от внешнего, заброшенного, враждебного пространства улиц Перми...
Collapse )

Вот и все. Неделю уже в Перми, а до сих пор просыпаюсь утром, и кажется, что снова пойду по Белогорской улице по направлению к Карлову мосту... Сгинь, наваждение, работать надо!