среда, 19 октября 2016 г.

Главное, чтобы костюмчик сидел

Считается, что программирование - «это самый сложный вид деятельности, которым когда-либо занимались люди» (Ф. Брукс), что, с моей точки зрения, вполне справедливо. Другими словами, этот вид деятельности сложнее строительства зданий и мостов, создания автомобилей, поездов, кораблей, самолетов и даже космических станций. При этом крайне сложно себе представить, чтобы при создании хотя бы одного из перечисленных творений инженерной мысли не проводились бы длительные прикладные исследования, не выполнялось бы тщательное проектирование с созданием огромного количества подробной технической документации, не создавалось и не испытывалось бы множество прототипов, с обязательным внесением исправлений в проектную документацию и т.д. и т.п., а вместо всего этого использовался бы «гибкий» подход на основе двухнедельных итераций. Уверен, нашлось бы очень немного желающих жить в таких домах и летать на таких самолетах, зная, что они выполнены по Agile.

Полный текст статьи

вторник, 18 октября 2016 г.

Чем так ужасен “Agile” и в особенности Scrum

Перевод статьи Michael O. Church.

Гибкость – хорошая вещь, в этом нет никаких сомнений, и Манифест Agile не лишен смысла. По сравнению с пресловутым «водопадом», Agile выглядит особенно прогрессивно. С другой стороны, многие практикуемые в Agile вещи являются глубоко деструктивными, и я на самом деле не думаю, что противопоставление Agile и Waterfall вообще имеет смысл.

Существует разновидность Agile, называемая Scrum, которая по моим наблюдениям попросту убивает компанию. Под «убивает» я имею ввиду не то, что «корпоративная культура становится не такой хорошей как раньше». Я имею ввиду, что ее акции падают почти на 90% менее, чем за два года.

Что такое Agile?

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

Программисты, как правило, не сильны в управлении клиентами. Они очень конкретные люди. Они любят системы, которые имеют четко определенное поведение. Это сильно усложняет их общение с нетехническими людьми, поскольку разработчики воспринимают каждую поставленную им задачу буквально, не стараясь вникнуть, что же на самом деле требуется заказчику. Корпоративный Agile, вырванный из среды консалтинга, пошел еще дальше, предположив, что инженеры недостаточно умны, чтобы осознать, что хотят их внутренние бизнес-заказчики. Это привело к тому, что работа стала разбиваться на т.н. «user stories» и «итерации», что зачастую лишает ощущения завершенности работы, а также надежды на долгосрочное видение того, куда движется разработка.