О постмодерне написано много, особенно в политике, искусстве, общественной жизни. Посмотрим, как невидимая рука постмодернизма добралась до информационных технологий (ИТ / IT). С началом производства программных продуктов в промышленных масштабах лучшие умы отрасли задумались об оптимальных процессах производства: с одной стороны, производимые продукты разные, их выпуск нельзя поставить на классический конвейер, как автомобили или ноутбуки; с другой стороны, это и не штучное производство картин или скульптур. Плюс почти полное отсутствие физической составляющей, виртуальность продукта соблазняет задуматься о предсказуемом и стандартном процессе.
Водопадная или каскадная (Waterfall) модель разработки, как говорится, долго витала в воздухе, впервые описана Уильямом Ройсом (William W. Royce) в 1970 году. Суть водопада в выделении последовательных фаз жизненного цикла софта: анализ, проектирование, кодирование, тестирование, поставка, поддержка. Переход к следующей фазе происходит только после успешного завершения предыдущей. Для водопадного процесса важны продуманные и стабильные требования к началу проектирования. Если требования меняются, то изменение порождает обратный водопадик внутри водопада и замедляет процесс.
Методика Microsoft Solutions Framework (MSF) - впервые опубликована в 1994 году (тем самым) Microsoft'ом, по сути - водопадная разработка для большого продукта, с узкой специализацией ролей исполнителей и таблицей возможного совмещения ролей в одном сотруднике. Почти одновременно в 1996 году выходят монструозные PM BOK и COBIT, в первых версиях чисто водопадные, с кучей деталей.
Наконец, в 1997 году появляется Rational Unified Process (RUP) - водопадно-итеративная модель, с наложением фаз друг на друга, и возможностью выпуска продукта частями (итерациями). Создана группой блистательных товарищей, но в её основе объектная модель Ивара Якобсона (Ivar Jacobson), заслуженного учёного и мощного ИТ авторитета, также одного из авторов Unified Modelling Language (UML). RUP несколько лет казался процессной панацеей, был очень объёмен, но допускал настройки и упрощения. Проблема чистого водопада с неприятием изменений в требованиях решена итерациями, в ходе которых требования можно планово уточнять.
Подоспели и всевозможные стандарты. ISO засветилась выпуском нескольких процессных моделей специально для ИТ. Уотс Хамфри (Watts S. Humphrey) в конце 80х опубликовал исчерпывающий набор софтверных практик, который можно было уложить в любой жизненный цикл (процесс) разработки: анализ альтернативных решений (decision analysis and resolution), перекрёстное рецензирование (peer review), отслеживание требований(requirements traceability) и т.п. В 1997 году на основе этого набора Software Engineering Institute выпустил процессную модель, которая сейчас известна под именем Capability Maturity Model Integration (CMMI).
Впоследствии, всё это назовут классическими методологиями. Учебные материалы по таким методологиям начинались с утверждения, что ИТ отрасль молодая, много в ней неясного, но практический опыт есть, и по этому опыту собрали лучшие / проверенные практики и процессы, которые и предлагаем вашему вниманию.
В классической разработке было хорошим тоном делать измерения производительности и качества. Наиболее показательные индикаторы:
- Производительность разработки - Единицы функциональности, разрабатываемые за единицу времени. Функциональность можно измерить в единицах оценки (Functional points, Use case points) или в модифицированных логических строках кода (одно довольно точно переводится в другое).
- Качество продукта - Плотность дефектов, т.е. количество дефектов (поведений продукта не по требованиям, как правило, после передачи заказчику) в единице функциональности.
Зрелые ИТ компании не просто измеряли свои показатели, но и управляли ими статистически. То есть знали, какая ветка процесса приведёт к какому диапазону качества и производительности.
Можно упомянуть и другие достижения процессных классиков: Стивен Макконнел (Stephen McConnell) исчерпывающе описал методы оценки (estimation) программных продуктов и проектов. Панкаж Джалот (Pankaj Jalote) "на пальцах" показал, как внедрить большинство лучших практик CMMI (надо признать, что напрямую из первоисточника это понимали считанные единицы). Майкл Конрад (Michael Konrad) расписал, какие методы математической статистики и как применять для количественного управления процессом софтостроения.
Таким образом, пользуясь "классическим" арсеналом, по крайней мере, для однотипных продуктов и релизов можно было построить стабильный и предсказуемый процесс, оптимизирующий длину релизов и состав команды. При этом классики негромко и с прискорбием признавали, что производительность разработки неуклонно падает. Были единичные лидеры, которые повышали производительность на определённых типах проектов, но среднемировая тенденция была неумолима. Это пытались объяснить усложнением технологий и требований к софту, не следованием или неправильным следованиям процессным моделям, но концепции, как победить или взять под контроль все эти уложения с помощью ещё более умных процессов, выработано не было.
И вот часть ИТ сообщества провозгласила, что устала от процессной сложности и бюрократии, и в конце 90х годов выпустила Манифест гибкой (agile) разработки: Люди и взаимодействие важнее процессов и инструментов; Работающий продукт важнее полной документации; Сотрудничество с заказчиком важнее контракта; Готовность к изменениям важнее следования плану. Agile-манифест был подписан десятком специалистов, из них порядка четырёх до сих пор хорошо известны узкому кругу ИТ-шников: Алистер Кокбёрн (Alistair Cockburn) - писатель пользовательских историй (use cases, затем user stories); Мартин Фаулер (Martin Fowler) - в большей степени программист с популярным блогом, чем процессник; Кен Швабер (Ken Schwaber) и Джеф Сазерленд (Jeff Sutherland) - разработчики, пожалуй, самой популярной процессной модели на основе agile.
Манифест не то чтобы интуитивно понятный, но сложно критикуемый. Как и многие манифесты - за всё хорошее. Чудеса начались при появлении методологий, реализующих манифест. Вводились практики с недоказуемой полезностью - нашёл дефект - не документируй его, а почини; и церемонии более социально-религиозной направленности, нежели процессно-технической: ежедневные собрания на ногах (Daily stand-up meetings), совмещение обязанностей, только короткие итерации.
Ни один видный деятель классических ИТ-процессов "гибкий" манифест не подписал. Но и заметной критики от гуру-классиков никуда не просочилось. Как настоящие учёные, они, вероятно, восприняли очередное новшество с любопытством, типа "посмотрим на ваши результаты". Только Ивар Якобсон точно сформулировал, что agile - гораздо больше про социальную инженерию, чем про техническую; всё используемое им техническое придумано до него, но непонятно почему так скомбинировано.
Смотрим на популярные гибкие методологии: Скрам (Scrum) описан Джефом Сазерлендом в 2002 году. Команда выпускает продукт или его части короткими итерациями (sprints) одинаковой длины (например, 2 недели). Перед итерацией Владелец продукта (Product Owner) расставляет приоритеты и, руководствуясь оценками команды, планирует, что будет сделано за итерацию. Участники команды равноправны, но есть Скрам мастер (Scrum Master), который не начальник, но направляющий и смотрящий за процессом. Во время итерации каждый докладывает о достижениях и планах на ежедневном собрании, стоя на ногах, чтобы не занимать много времени. Во время итерации требования менять нельзя, но это не страшно, поскольку она короткая. В конце итерации демонстрация (Demo), на которой обсуждается и принимается результат с Владельцем продукта.
Другой популярный agile: KANBAN - именно в адаптации к ИТ выходит в 2004 году. Здесь задачи итерации вывешиваются на доску-таблицу и переходят из колонки в колонку по мере продвижения задачи. И третий заметный - Scaled Agile Framework (SAFe) - попытка адаптации гибкой разработки к большим организациям - публикуется в 2007 году. Последний, по сути, признал, что в большой организации просто Scrum of scrums не поможет, нужны более сложные надстройки.
Посмотрим на персоны "гибких" гуру: Джеф Сазерленд - бывший военный, и внешне и по поведению напоминает одиозного сенатора Джона МакКейна; Кен Швабер - выпускник академии торгового флота. Конечно, нельзя зацикливаться на происхождении и прочих внешних признаках, но что получается - на военного с торговцем сошло озарение, которое переплюнуло модели и научные обоснования от классических физиков и математиков, создававших софтверную отрасль? То ли помогла незамутнённость сознания, то ли невидимая рука постмодерна.
Учебные материалы по гибким методологиям обычно начинаются с критики классических методологий - которые сложны, косны и часто ведут к провалу. А теперь всё стало проще, понятнее и, как многие добавляют, веселее (в смысле fun).
Аргументы сторонников гибких и классических методологий, которые можно было услышать в локальных дискуссиях начала и середины 00х годов:
Аргументы сторонников гибких (agile) методов | Ответ сторонников классических методов | Ответ на ответ от "гибких" | Ответ на ответ от "классиков" |
---|---|---|---|
Кросс-функциональные самоорганизующиеся команды, у каждого есть первичная роль (например, аналитик), но может исполнять ещё несколько ролей по необходимости (тестировщик, внедренец...) | Широкие специалисты дороги, плюс сложно быть хорошим спецом сразу в нескольких областях; ничего в мире не самоорганизуется. | Широкие специалисты автоматически воспитываются в слаженной команде, со спецами в смежных областях. А хорошие спецы с общей целью могут самоорганизоваться. | Но посмотрите на команды, построившие настоящий agile: там текучесть кадров выше, чем у классиков. Это результат воспитания и самоорганизации? |
Выпуск продукта короткими итерациями в 2-3 недели, в конце каждой итерации имеем минимальный рабочий продукт или хотя бы его прототип. | Бывает объективно объёмный функционал, который выпускается долго. Классические измерения показывали, что оптимальная длина релиза "среднего продукта средней командой" располагается вокруг 3х месяцев. | Большой функционал можно выпускать частями. Жизнь ускоряется, бизнес не может планировать на 3 месяца вперёд и не может так долго ждать. | Выпуск частями чреват необоснованными переделками (rework). Есть заказчики, которые могут планировать и на год вперёд. Если заказчику нужна срочность, то не надо его обманывать, что срочно можно сделать также дёшево. |
Решения принимаются в присутствии всей команды, документация не нужна. | Сложно собирать всю команду ежедневно, особенно если она большая. Большой проект, или проект с часто меняющимся составом участников просто развалится без документации. | Добивайтесь дисциплины пристуствия всех. Организуйте иерархию собраний для больших команд (Scrum of scrums). Устаревшая или формальная документация только мешает. | При полной дисциплине можно добиться и полного своевременного документирования. Иерархические собрания - вариант испорченного телефона. |
В 2010х годах наступила ясность и тишина. Никто из сомневающихся ничего никому не доказал, но agile и его вариации шагают по планете. Бывшие "процессные" секции ИТ конференций переименовываются в секции "гибкой разработки", вместо процессных инженеров организации ищут agile коучей, крупные заказчики ИТ услуг без сопротивления согласились, что теперь сами отвечают за ИТ результат в лице Владельца продукта (Product Owner). Ведь Владелец продукта участвует в ежедневных встречах, и видит, как команда старается.
Столпы классиков, со временем, не то чтобы сдаются, но приспосабливаются. Публичный MSF полностью адаптировался к agile, но усилились слухи, что сама Microsoft этой публичной версией процесса не пользуется. В модель CMMI добавлены расширения (amplifications) о том, как внедрять некоторые практики для "гибких" процессов. Ивар Якобсон рекламирует свою новую процессную модель Essence, в основном, на примере Скрама (может, модель и хорошая, но кто на неё обратит внимание, если не сопроводить модным словом).
В гибкой разработке, дабы не тиражировать глобальную сложность, отказались и от классических измерений производительности и качества. Классики-скептики хотели посмотреть на наши результаты в традиционном формате? Их не будет! Новая модель не будет выпускать мусор, а значит каждая строчка кода значительно ценнее, их нельзя сравнивать с классикой. В лучшем случае, функциональность измеряется в Story points, которые определяет сама команда, а следовательно производительность, измеренная в этих единицах, не поддаётся сравнению и контролю даже внутри одной организации (между соседними командами).
В общем, признаки постмодерна детектед: ясность (пусть и шокирующая неверующих "изгоев"), тишина (отсутствие видимой дискуссии), ненависть к сомневающимся. Гибкие методологии, подобно тотальной толерантности к извращенцам и к творцам из говна вдруг, на глазах одного поколения, превратились в непреложную истину.
А что думают простые сотрудники ИТ-организаций, на которых строят разные процессы? Как правило, ничего. Если процесс мешает - негромко ворчат, если привыкли - то не замечают, на каком именно виде "прозы" они говорят. И это естественно. Сотрудник не в восторге от любого процесса. Среднестатистический рабочий сборки предпочёл бы слоняться по цеху и искать, к какому из агрегатов нужная деталь ещё не прикручена, чем стоять на конвейере, который указывает, куда и в каком темпе прикручивать. Хорошие процессы нужны организациям, а постмодерн позаботился о том, чтобы руководители организаций ИТ-заказчиков в ИТ-процессах не разбирались, но чётко слышали, что Скрам или Канбан - это круто.
Логичный вопрос, а что делать в хорошем будущем сверхмодерне, когда отклонения перестанут называть нормой - что, вернёмся к Водопаду? Конечно, нет, но вопрос непростой. Очевидно, необходимо снова признать объективные сложности и проблемы, и думать над их решениями, а не над балаганными упрощениями. И от "гибких" методов можно взять что-то полезное, но нужно найти общие объективные показатели результатов, которые позволят каждой методологии найти правильную нишу, а главное - двигаться дальше. Но кто спонсирует дорогостоящие поиски и движения, если невидимая рука постмодерна спонсирует то, что есть?
Комментарии
Отлично подмечено! При этом ещё стоит добавить, что эти нововведения пиарятся стартапами Кремниевой долины, финансирование которых все менее и менее подразумевает работу на финансовый успех.
так эта методология в основном и подходит стартапам. просто эмбиэйчики считают, что скрам эта та самая "серебрянная пуля", которая решит их проблемы, порожденные в основном их "управлением"
Разным продуктам нужны разные процессы, в чистом виде (как задумано на бумаге) я ни один тип процессов не видел. Почти всегда всё адаптировано для определённого продукта.
Именно так и руп и скурм и иные - все просто процессы в деле. Винить руп или еще иное не стоит - не за что. В нем есть методология и мы пользуемся ей очень успешно.
Так вот откуда пошёл неоптимизированный говнокод, куча багов и стопиццот обновлений в месяц, чтоб эти баги пофиксить, а заодно наплодить в два раза больше новых!
Господа профессионалы просто прошли мимо наблюдений господина Фокса.
Уверяю Вас, не оттуда. :)
Это результат управления разработкой "профессиональными менеджерами", а не инженерами..
Не забудьте добавить моду на сертификацию по ISO-9001:2008.
Да! Проходили и через такое!
Какой же все это карго-культ реальной управленческой культуры!
Скорее следствие и порождение культа эффективно-управленцев.
С отрывом управления от организуемой предметной области и его вырождением.
Есть какое-то ощущение, что за глупость в ИТ мире стали доплачивать в разы больше, чем за реальную работу на эффективно достигнутый результат, но может быть просто индусы захватили управление и танцуют вместо разработки.
Очень образно сказано. Но кто "танцует" этих индусов!..
Всё просто и достаточно давно документировано: читайте Брукса.
Зато как ликуют производители процессоров и памяти. Ведь всё это жрёт ресурсы, значит надо усиливать железо. Бездонный ящик потребляства!
В Андроидах программы работают и на слабом железе. Так что могут, когда захотят.
ага только вот - средний проц современного смартфона примерно в 4-6 раз быстрее компа 5-ти летней давности........
А о чем эта статья? Что Agile это не то что нам нужно?
На субъективный взгляд - да, Agile - не то, что нам нужно, и точно не универсально. Но объективно это доказать или опровергнуть в текущей ситуации почти невозможно. Спасибо, что помогли кратко сформулировать суть статьи.
Agile нужно уметь готовить, причем это достаточно просто. Идея Agile в том, что мы изначально расчитываем что в проекте будут изменения в требованиях. И работаем исходя из этого.
Все остальное типа стендапов, стори-карточек и прочего - это лишь инструменты.
Поэтому не знаю что тут можно найти более универсального...
Замените в первом абзаце Agile на RUP, во втором абзаце стендапы и стори на итерации и вижены, в третьем абзаце ничего не меняйте, и получите утверждение ровно той же степени валидности. Только если их поставить рядом, то вывод 3го абзаца будет смотреться уже не так уверенно.
Я уже уставший, написал немного не так как хотел. Правильно будет так:
Идея Agile в том, что мы изначально расчитываем что в проекте будут изменения в требованиях во время итерации.
А RUP это параллельный водопад, причем в разы более сложный к администрированию. Ни в одном проекте где мы пытались использовать RUP в начале 2000х он не прижился.
Вы еще один из первых проектов руп вспомните - когда с оракл обосрались по полной. Не показатель вообще ничего.
Ну вот мы не так давно стали применять такой метод: я разрабатываю базовую модель, имеющую только базовые функции. Но я знаю, что модель намного сложнее и знаю, какие блоки пойдут параллельными к базовому блоку. Внедряем базовую модель и потом её дорабатываем до конца, плюс подвязка остальных блоков общей модели. Получилось неожиданно удачно. Потому, что, во-первых, как правильно сказано в статье - производство не может ждать полгода, им горит, ибо они развиваются. Да и эти полгода мы в глазах руководства будем выглядеть, как дармоеды, требующие большую зарплату.
Вторая причина гораздо существеннее. На стадии проектирования очень редко кто из заказчиков (а у меня внутренние заказчики, я не консалтер)))) - так вот, редко кто может внятно озвучить полную модель со всеми подробностями. В основном - мычат) Приходится додумывать за них. А когда запускаешь народ в базу - у них вдруг творчество включается и они начинают требовать то бантики, то розовые пуговицы)) Видимо, просто не умеют "представлять" в уме все подробности будущего процесса. А я тоже не папа Римский, чтобы уж совсем всё знать в технологических процессах. Иногда "мимо проскакиваю") Хотя меня уже вполне можно брать куда-нибудь в следственный отдел, настолько научилась "носом рыть" и из невнятных мычаний выцеплять рациональное зерно)
Поэтому, когда запускаешь их в модель с базовыми функциями - вот тут начинает идти поток вполне внятной информации для доработки модели. И дело начинает идти весело)
Давайте представим Библию, как программный продукт для переформатирования социума! Сначала написали первую версию, в основном рабочую. Какое-то время обкатывали на реальном обществе. Потом заметили баги и стали вносить сервис-паки на соборах. И вносят до сих пор. Например, когда-то христианство декларировало реинкарнацию, потом от нее отказалось и пришло к варианту одной жизни, а после накопления достаточного количества Душ в загробном мире - Страшный суд и оживление всех умерших. Я не про подробности христианского вероучения, а про модель разработки. Там полная аналогия с реальным программным продуктом. А церковь, в таком случае, инструмент для загрузки христианской операционки в головы прихожан с одновременным стиранием исходного кода, который загружается при рождении и дорабатывается по мере взросления.
Что-то в этом есть))) Помечу этот коммент и обдумаю на досуге.
Хорошо))
Я в свое время поржал, как технические планерки оказались модной техникой разработки.
«Собор и базар» успели забыть?
"Стыд и скрам!" (с)
Тут есть обычный для любой новой методики момент - "будет сплошное телевидение!", когда она тыкается куда попало. И куда не попало - тоже тыкается.
Есть много великолепных продуктов, сделанных в одиночку (или небольшими командами). Как пример - Mathematica или, для олдфагов, ТеХ на начальных стадиях - его ядро, например. Если Вы посмотрите, какими ресурсами был достигнут такой результат (недосягаемого для индустрии качества), Вы просто охренеете. Разница в человеко-днях - десятки, сотни(!) раз. То есть, человек в одиночку делал то, для чего "нормальная" индустрия со своими "человеко-месяцами" собирала коллективы в сотни человек (зарплаты, аренды, время), а потом ещё и получала результат гораздо хуже, чем у одиночек или небольших команд.
Agile и все метания вокруг него возникли как результат того, что манагеры посмотрели на то, как работают маленькие сверхэффективные команды, а потом попытались перенести это на индустрию целиком.
...
Критика методик может быть обоснованна или нет... но просто чтобы отвлечь Вас от выбранного Вами дискурса: Вы когда-нибудь разрабатывали какой-нить инструмент в одиночку, для себя, для какого-то конечного результата?
И как, у Вам был "водопад", строгое планирование, документация, графики с человеко-днями? Или Вы всё-таки был полный аджайл с документацией по факту и немедленным воплощением хороших идей?
Вот все остальные пляски с бубном - они вокруг того, как превратить работу программиста на зарплате в большой конторе - в нечто подобное. Методики кривые, то, во что они превращаются религиозными фанатиками методик - вообще ужасно... но. Но цель-то - воистину верная.
КМК, как-то так.
Да, разрабатывал в одиночку, хаотично и без водопада. Но обратите внимание, я признаю, что всё, чем могут похвастаться процессные классики, это возможность "для однотипных продуктов построить стабильный и предсказуемый процесс, оптимизирующий длину релизов и состав команды". Революционные продукты так не создаются, а чтобы построить хороший процесс для рутинного продукта - нужен хороший процессный специалист, поддерживаемый и направляемый высшим руководством. В большинстве случаев того, другого, или ничего из этого не было.
Ну, я, честно говоря, тогда не понимаю фокус на критике самого процесса в статье.
Тот же SCRUM вполне себе годная методика для команды из 5 человек, которые разрабатывают, допустим, тулзу для внутреннего использования (там, где плотный контакт с пользователями, "срочно сделайте нам это вот!", неопределённый функционал и даже бизнес-процессы, которые взаимно оптимизируются по пере внедрения софта - ну вот это вот всё, что мы все так любим без памяти). Попробуете построить там "водопад" или даже KANBAN - сдохните, как та корова.
То есть, проблема сводится к тому, что не те, не там и не для того применяют новую методику. Ну а что Вы хотели от людей, у которых кроме степени MBA нет ничего, а главное - нет опыта в процессе на низах ни с одно стороны?
При чём тут постмодернизм? Это ещё классики модернизма (см., например, опыт коллективизации крестьян) проходили.
Ну, скорее всего постмодернизм заключается в том, что по невозможности предоставить результаты в привычных классических критериях эффективности, эти критерии просто упразднили. Т.е. все декларативные "прелести" аджайла они всё больше носят какую-то гуманитарно-социальную направленность, к примеру "Увидел баг - исправь его, не надо документировать", если сам-один пишешь - логично, если вас 3 - уже не так логично, но допустимо, а если не дай бог больше - автоматически выдаёшь индульгенцию тому, кто этот баг сотворил творить их и дальше.
То же самое с возможностью изменения требований по ходу выполнения - заказчику дай волю, если он видит что к его требованиям прислушиваются и реализуют - на 2-3 итерации потребует встроить в продукт цыганский ансамбль и дрессированных медведей, "а что - удобно, а исполнитель воплощает, чо ему - и это воплотит".... В бытность мою общения с заказчиком, приблизительно на половине срока была встреча с заказчиком для уточнения требований, изначально не вошедших в проект, на вопросы заказчика "А можно ещё вот это и это...", давался ответ "Конечно можно! Вот это будет добавлять 5 дней к исполнению (у всех почасовая оплата), а ещё вот это - 7 дней, будем воплощать или...?" И заказчик сразу урезал осетра до размеров абсолютно необходимого, на чём требования и фиксировались.
А в целом, напоминает мне ситуацию с появлением DevOps. Когда в различных дискуссиях я говорю, что это было придумано
русскимихитрыми менеджерами для того, чтобыденег не платитьне нанимать человека на позицию сисадмина, а заставить программиста, выполнять обязанности сисадмина за те же деньги, всякие гуры и коучи взвиваются и начинают курлыкать, что "я не понимаю, а это новый взгляд на всё и новый способ разработки", но на просьбу перечислить конкретные выгоды и преимущества такой "новости" дружно сливаются...Постмодерн, он такой постмодерн
В небольшой команде багописательство быстро станет видным, такие вещи нельзя скрыть, в этом преимущество маленьких команд - в скорости и неформальности реакций. А далее - без всяких документаций творца багов и стабильного в качестве говнокодера ждёт ответка (начиная "ну что ж ты, Вася, творишь-то?" и заканчивая просьбой к менеджеру о том, что "скрипач - не нужен"). Поэтому scrum-команды и должны быть по 5-7 человек, максимум: в таких командах ещё сильна зависимость личного успеха от успеха команды и наоборот, все эти обратные связи работают.
А насчёт изменений, Вы не догнали методику. Да, ессно, на новой итерации владелец продукта может внести новую фичу. Но вот ни оценку её трудоёмкости (её делает только команда!), ни сроки (ставит она же) никто не отменял. Специально для того чтобы привести религиозные догмы к реальности вводятся grum-сессии, где ещё до планирования все хотелки заказчика (на несколько спринтов вперёд) оцениваются (командой) по трудоёмкости - а дальше... ну, вспоминая анекдот про Сталина, его же ослы, куда хочет - туда и садит. Считает он, что ему такая-то фича нужна кровь-из-носу, не жалко ему человеко года - ну, почему нет? Команда сделает - лишь бы деньги платили. Считает что дорого - пусть урезает хотелки, обговаривает, как можно обойтись чем-то более дешёвым. Это 100% ОК, и это вписывается в agile (правильнее сказать, что в этом суть agile).
Он носитель знаний о том, как это будет применяться, ему с этим продуктом жить.
...
С девопсами - ну, опять же, их не любят те, кто их правильно готовить не умеет. Девопс - ни разу не заменитель сисадминов. Девопс - на стыке областей. Если пробовали когда-нить поставить сложный чужой продукт
ракомв сложную конфигурацию, наверняка, замечали, как не хватает знаний о нутрёшках продукта. И наоборот: если рассчитывать деплой продукта на сисадмина, который максимум может на кнопку "инсталл" нажать и потом логи посмотреть - это куча дополнительного труда. Оправданного только если продукт реально массовый - вот как для десктопов. Во многих прочих случаях гораздо лучше вариант, когда Вася-разработчик сидит рядом с сисопом и если чего тот кличет Васю посмотреть, почему тут ексепшен, и нормально ли в логах подряд 3 сообщения "не могу найти файл чегототам12345.офг", хотя обычно всегда 2 таких было.И если продукт странно себя ведёт при установке нового сервис-пака ОС, только девелопер может сделать что-то вменяемое: дать совет, поправить код и т.п.. Вопрос в том, как эта информация о проблеме будет ходить от девеловера к сисопу и обратно - многие дни через баг-трекинг систему с кучей формализации и потраченного времени или просто внутри головы человека за секунды после короткой реплики "Вася, а посмотри".
И т.д., и т.п. Девопс - очень правильная концепция, но ни разу не то же самое, что "халявный сисадмин на зарплату девелопера". Сисопы - совершенно отдельная работа, и в больших конторах им есть, чем заняться.
И пробовал и успешно ставил и интегрировал для сторонних организаций - несколько лет моя контора посылала меня на проекты, которые я видел в первый раз по приезду "на место" - и ничего, как-то справлялся, внутренности изучал "по ходу дела". Неприятно, но не смертельно.
Боюсь, что контакты с непрофессиональными админами оставили у вас неверное впечатление об их должностных обязанностях и требованиях к уровню квалификации, но уверяю вас "может начать на кнопку "инсталл" " это не о них, может нажать кнопку как раз программист и частенько успешно нажимает.
Как показывает практика, именно девелопер с удовольствием и злорадством проигнорирует требования по информационной (да и физической) безопасности - "потому что это мешает работать" (к примеру, в далёкое забытое время - ещё до краха доткомов - доводилось наблюдать как девелоперы провели "трубу" T3 интернет ...прямо во 2й контур защищённого интранета финансовой организации - "потому что им был нужен быстрый доступ в Интернет, а заполнять бумаги на предоставление было некогда и лениво").
Я к тому, что подход к проектированию системы у админа и у девелопера совершенно разный, потому что разный образ мышления и круг обязанностей. Не получится от админа получить достаточный объем качественного кода в разумные сроки, как не стоит ожидать от девелопера создание устойчивой, защищённой и пригодной к обслуживанию без криков и матов и ночных вскакиваний, системы.
Вот так как-то.
Спасибо за подробный ответ, согласен. Ещё добавлю, что для 5ти профессионалов, делающих штучный проект, вообще процесс не нужен; но и церемонии скрам им не сильно помешают, хотя непонятно какую ценность добавят.
Про DevOps рано писать, это пока только философия, а не методология. Ещё не вышло ни одного описания, которое можно было бы считать DevOps процессом или BOK'ом (Body of Knowledge).
По собственным ощущениям скажу, что есть предел сложности, при котором менеджер проекта и скрам необходимы и крайне положительно сказываются на прогрессе - особенно в случае взаимодействия нескольких исполнителей-организаций, не всегда дружественных к друг другу и не обладающих одинаковым уровнем компетенции - грамотный менеджер проекта умеет их всех правильно пришпорить и направить в нужную сторону.
Ниже этого уровня сложности менеджмент в таком же объёме не полезен, а просто вреден, поскольку просто занимает рабочее время.
Насчёт DevOps - посмотрим как оно будет развиваться. Есть у меня тайная надежда, что дальше философии это дело может и не пойти - "поиграются и бросят"...
Это всё - новое прочтение старому "вся власть советам".
Если найдёте общие объективные показатели результатов - имхо - ближе будет автоматизировать написание такого кода, чем делать что-то другое.
Мир сошёл с ума от слишком быстрого прогресса.
Качество не нужно никому. Всем нужно быстро, сейчас, успеть ДО конкурентов.
Тесторование? На пользователях!
Отладка? Попутно с разработкой новой версии.
Довели до ума? Стабильно? Ок. Выпускаем новую сырую
ТБМверсию.Раньше говорили, что продуктами мелкомягких можно пользоваться,
но только после второго сервиспака.
А что сейчас?
А сейчас вся техника работает три-пять лет. И покупай новую.
Примеры: автомобили, стиралки и т.п.
Мир сошёл с ума...
вот-вот. Никто не заинтересован в написании прошивки 1.0 под китайский mp3 плеер, который тут стоит тысячу, а там - 2 бакса, если есть версия 0.1а, которая хоть иногда но работает)
Это реалии рынка. Если до Вас конкуренты займут массовый рынок, то потом их продукт получится привычнее и удобнее всех последующих, если они не будут тупить и доведут продукт до работоспособности, удобства и легкости использования.
Именно поэтому немцы в разработке софта не рулят (SAP я не считаю). Пока немцы спланируют свой водопад, и сделают все по-немецки параллельно и перпендикулярно, американцы (ну или русские) уже займут рынок.
Если пользователи предпочитают более дешевый продукт - они и получат сколько заплатили. Безошибочность стоит денег. Например разработка ПО для Space Shuttle стоила 20 миллионов долларов.
Занять рынок при полном отсутствии конкурентов легко - любой говнокод расхватают как горячие пирожки. Трудно его потом с таким подходом удержать, потому как рынок ты захватил, но со своим говнокодом будешь разбираться сам. Когда конкурент будет вписывать в имеющуюся у него архитектуру новый функционал, захвативший рынок будет судорожно пытаться внедрить то же самое в свою груду костылей, ничего при этом не сломав.
Если говорить по делу, то программное обеспечение бывает разное и разрабатывать его надо с помощью той методологии, которая для этого больше всего подходит. Если нужно ПО, от которого зависят жизни людей, то каждое изменение должно быть задокументировано и одобрено несколькими опытными специалистами. Если заказчик сам ещё не знает, чего он хочет, то нужен прототип. Прототип должен быть легко изменяемым, документировать его не надо, потому что как только он будет готов, его нужно выкинуть и написать всё сначала, уже понимая что именно требуется.
Однако, для менеджеров нет разницы между прототипом и готовой программой - если и то и другое работает, тогда зачем тратить время? Менеджер может выписать себе бонусы уже сейчас, а что дальше будет с программой - его не колышет. Он к тому времени уже устроится в другую компанию и продолжит уже опробованную методологию разработки, которую можно назвать "заказчику впарим прототип, а доработки будем продавать за отдельные деньги".
Угу , так отечественное энергомашиностроение работает. Еще нет ни чертежей, ни готового проекта - уже режут металл , еще технолог не посмотрел чертежей- уже какой-нибудь ротор суют на станок. Потом в ходе изготовления по 100500 раз всю документацию переделывают, в особо тяжелых случаях вообще ее выпускают постфактум подгоняя под то, что по факту сделано)
А мне без разницы если честно, лишь бы деньги платили. Скажут - с завтра будет Agile, планерки и митапы каждый день - ну ок, скажут - будет каскадно-спиральная модель, ну ок. Работодатель покупает мое время, как специалиста. Если его устраивает что оплаченный им специалист в оплаченные им часы будет сидеть на планерках, митингах, и прочем - то мне то чего. Я и столы попередвигать могу за свою зп, все равно время оплачено.
вообще говоря в вотерфлоу вы продаете только свою техническую компетенцию, а в аджайле вы совмещаете в себе менеджера-аналитика-разработчика, но конечно да при любом подходе есть разработчики которые с 9 до 18 реализуют только то, что описано в ТЗ не задумываясь о сути происходящего и качестве кода
Вот вы конечно красиво все расписали, а я предпочитаю считать что продаю свое рабочее время, а на сам код все вообще фиолетово, нужно писать настолько плохо, насколько это не приведет к увольнению.
Это быстро ведёт к деградации как специалиста. Незаметно, пока работаешь на одном месте, но с таким подходом при смене работы какой-то момент придётся довольствоваться часовой ставкой двигальщика столов.
Делать настолько хорошо, насколько возможно (раз уж нет возможности уйти с места) - эгоистичная и разумная стратегия. Остальное - оправдание глупости и лени.
Так вам нужно радоваться что есть такие как я, как верно подметил товарищ в комментарии ниже. Пока есть некто вроде меня, настоящие профи могут требовать себе огромные зп, интересные проекты и кофемашину в офис. А неинтересные проекты с визуализацией на формочках запросов из БД останутся нам, ибо скучной, плохооплачиваемой, монотонной, неразвивающей работы на старых технологиях много.
Страницы