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

Category was added automatically. Read all entries about "архитектура".

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

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

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

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


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

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

Любопытное определение "русского"

По крайней мере, конструктивное (т.е. из него сразу же конструируется поведение, определился как русский - сразу ясно, что делать):

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

Россия - дворец, хозяин дворца - русский царь, а те, кто остались жить во дворце - русские и нерусские - это "граждане СССР" (а после прошлого удачного грабежа уже и "граждане РФ"). Русские смотрят, чтобы страну не растащили. А нерусским плевать на это, как им плевать и на хозяина.


Я бы выделил тут две идеологемы: 1) смирение, т.е. понимание, что каким бы ты сам не был умным и крутым, ты всего лишь слуга, а не хозяин, 2) служение, т.е. понимание, без таких хозяев твоя жизнь бессмысленна.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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