SlideShare uma empresa Scribd logo
1 de 2
Baixar para ler offline
Дмитрий Завалишин

                                     Экстремальное проектирование?
Рассуждения автора (http://offline.computerra.ru/2005/589/38836/) сводятся к простой мысли: кодирование — это
не черная и тупая работа.

Кодирование — это принятие решений, и кодер — такой же участник процесса проектирования, как и архитектор
проекта.

Следствие первое. То, что мы привыкли называть проектированием (то, что до кодирования), — штука, возможно,
нелишняя, но и не принципиальная.

Следствие второе. Тестировать, тестировать и еще раз тестировать. Ибо исходный текст — это просто проект, и
только тест позволит убедиться в его корректности.

То есть, по сути, нам предлагается еще одна апология экстремального программирования.

Я убежденный противник экстремального программирования и дочерних практик, таких как Agile Development.
Кратко: XP не предоставляет возможность гарантировать сколь-нибудь разумное качество результата. Этот способ
применим, только если программисты очень высокого класса. Он не работает на больших проектах, а
эффективность многих методик (в частности, парного программирования) вообще никем никогда не была
подтверждена на практике или хоть сколь-нибудь логично обоснована.

Простая мысль: если другая методика разработки софта дает на 10% большую предсказуемость результата ценой
на 100% (!) больших затрат программистских ресурсов, но без парного программирования, то она уже выигрывает
у XP с его парным программированием (которое суть то же самое увеличение затрат на 100%).

На мой взгляд, XP — это своеобразная попытка революционным путем свергнуть «власть» аналитиков и
менеджеров над программистами. Действительно — если аналитик ставит задачи невнятно, а менеджер только
спрашивает «когда?», а больше не делает ничего, то XP может оказаться наилучшей альтернативой. Но это
решение из серии «если летать так и не вышло, давайте хоть быстро бегать». Правильный подход — не заменять
нормальные методики разработки софта на дикорастущее XP, а выгнать нерадивых менеджеров и аналитиков,
набрать профессионалов и заниматься разработкой программного обеспечения с умом.

В то же время многие практики XP вполне разумны. (Впрочем, увы, большинство реально применимых практик
экстремального программирования заимствованы из других методик. То есть само по себе XP принесло мало
полезного.)

Утверждение «Исходный код является последней стадией проектирования» имеет такое же право на жизнь, как и
утверждение «Дом является последней стадией проектирования». Нравится? Правда, нравится? Давайте я
проиллюстрирую построение дома по технологии экстремального программирования.

• Вы (будущий житель) приходите на стройку к рытью котлована и сидите за спиной у тракториста. Воняет?
Купите одеколону. Сидеть придется до готовности дома.

• Тракторист спрашивает вас: «Ну, как, котлован достаточно глубокий?» Откуда вам знать? Ну, вы же заказчик.
Должны знать. Заодно определитесь с тем, какое сечение должны иметь силовые кабели, можно ли соединять
газовые трубы сваркой, и какого типа нужен цемент.

• Когда дом вчерне построен, приезжает эдакая дура с чугунной чушкой на веревке и долбасит по стене. Если
дом разваливается, его стоят заново, укрепив получше в тех местах, где треснуло. Пожалуйста — придумайте
сами, почему вы должны оплатить строительство трех домов, а получить только один. Я не знаю.

• Когда вы включите в розетку чайник и провода загорятся, ваша претензия не будет принята — в
вашем присутствии розетку проверяли втыканием лампочки, и вы согласились, что она работает
нормально.
Я предвижу возражение по пункту 3: мол, если дом не выдерживает теста, то второй вам строят бесплатно. Оно
столь же наивно, сколь и вера в бесплатную медицину. Если программист писал код трижды, заказчик все равно
оплатит его работу, и не важно, будет ему эта сумма выставлена в счете явно или скрыта в завышенной
стоимости работы. Чудес не бывает — или всю работу оплачивает заказчик, или исполнитель разоряется. Не
достроив, кстати, дома.
Экстремальное программирование — вообще ужасно наивная идея. Например, посадить заказчика рядом с
программером, чтобы он рассказывал, как делать, можно, только если:

• Заказчик ужасно мало зарабатывает и тратить его время не жалко. Правда, неясно, откуда у него деньги на
заказ разработки софта. Впрочем, так бывает, если и заказчик, и исполнитель — студенты, а работа сводится к
стряпне сайта за полсотни баксов.

• Заказчик на самом деле понимает, что он хочет получить. Но это заказчик из сказки, в жизни они не
встречаются. Поэтому существуют аналитики.

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

A. Автор утверждает, что проектирование не закончено, пока последняя строка кода не написана и не
оттестирована. По сути это означает следующее: никакой проект не транслируется в код 1:1. В настоящее время
это утверждение вполне справедливо.

Проблема рассинхронизации кода и проекта общеизвестна, и способов борьбы с ней немало. Однако вряд ли
стоит решать ее, низводя проектирование до уровня кода. Правильнее было бы поднимать код до уровня проекта.
В обоих случаях происходит некое слияние проекта и его реализации, но задача автоматизированного получения
кода по проекту проще, чем задача превращения языка программирования в хороший проектный инструмент.
Давайте идти вверх, а не вниз. Не нужно проектировать на С++, нужно сделать так, чтобы код на С++
генерировался из проекта нажатием одной кнопки.

B. Автор фактически подтверждает, что XP ориентирована на высококлассных программистов и не работает, если
программист — среднего уровня. «Пусть все программеры будут классными», — говорит автор. Иллюстрирую: не
будем проектировать автомобили, не будем давать рабочим технологические карты. Вместо этого наймем таких
рабочих, чтобы сами по месту разбирались, что к чему. Наивность этого подхода подтвердил Форд запуском
первого конвейера около ста лет тому назад. То есть XP применять можно, но — вот беда! — экономически
невыгодно.

C.Терминологический вопрос. Несущественно.

D. В рамках авторской теории это правда, за рамками — не имеет смысла. Так что обсуждать нечего.
Резюме: несерьезно. Все это очередной завуалированный разговор на тему «не хочу ничего делать, кроме
кодирования и — так уж и быть — тестирования». Почему? Да потому, что не умеет. Так пусть учится!

Mais conteúdo relacionado

Mais procurados

Sqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interactionSqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interactionAlexei Lupan
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QAFest
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыryba4
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9OdessaFrontend
 
Андрей Сильчук для QA Expert Day
Андрей Сильчук для QA Expert DayАндрей Сильчук для QA Expert Day
Андрей Сильчук для QA Expert DayProvectus
 
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...GTestClub
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java DeveloperOlexandra Dmytrenko
 
Evelina Tananaeva
 Evelina Tananaeva Evelina Tananaeva
Evelina TananaevaAlexei Lupan
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?etyumentcev
 
Платформа SmartActors
Платформа SmartActorsПлатформа SmartActors
Платформа SmartActorsetyumentcev
 
Мелочь пузатая или Объем тест кейса против его содержательности
Мелочь пузатая или Объем тест кейса против его содержательностиМелочь пузатая или Объем тест кейса против его содержательности
Мелочь пузатая или Объем тест кейса против его содержательностиAlexei Lupan
 
Things To Unlearn In Software Development
Things To Unlearn In Software DevelopmentThings To Unlearn In Software Development
Things To Unlearn In Software DevelopmentAlexey Krivitsky
 
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?HappyDev
 
Sq adays 2010_balashenko
Sq adays 2010_balashenkoSq adays 2010_balashenko
Sq adays 2010_balashenkoAlexei Lupan
 
Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Andrey Karpov
 
Как заводить баги понятно всем
Как заводить баги понятно всемКак заводить баги понятно всем
Как заводить баги понятно всемSQALab
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QAFest
 
Управление проектами с использованием метода критической цепи
Управление проектами с использованием метода критической цепиУправление проектами с использованием метода критической цепи
Управление проектами с использованием метода критической цепиЕвгений Пикулев
 
Михаил Павлов - is a tester responsible for quality
Михаил Павлов - is a tester responsible for qualityМихаил Павлов - is a tester responsible for quality
Михаил Павлов - is a tester responsible for qualityAlexei Lupan
 

Mais procurados (20)

Sqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interactionSqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работы
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
ThemeForest: Как пробиться и стоит ли игра свеч? | Odessa Frontend Meetup #9
 
Андрей Сильчук для QA Expert Day
Андрей Сильчук для QA Expert DayАндрей Сильчук для QA Expert Day
Андрей Сильчук для QA Expert Day
 
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...
Grammarly Test Club#2. Выступление Алексея Лупана (SysIQ, Inc.): "Без тест-ке...
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java Developer
 
Evelina Tananaeva
 Evelina Tananaeva Evelina Tananaeva
Evelina Tananaeva
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
Платформа SmartActors
Платформа SmartActorsПлатформа SmartActors
Платформа SmartActors
 
Мелочь пузатая или Объем тест кейса против его содержательности
Мелочь пузатая или Объем тест кейса против его содержательностиМелочь пузатая или Объем тест кейса против его содержательности
Мелочь пузатая или Объем тест кейса против его содержательности
 
Things To Unlearn In Software Development
Things To Unlearn In Software DevelopmentThings To Unlearn In Software Development
Things To Unlearn In Software Development
 
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?
 
Sq adays 2010_balashenko
Sq adays 2010_balashenkoSq adays 2010_balashenko
Sq adays 2010_balashenko
 
Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?
 
Как заводить баги понятно всем
Как заводить баги понятно всемКак заводить баги понятно всем
Как заводить баги понятно всем
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
 
Управление проектами с использованием метода критической цепи
Управление проектами с использованием метода критической цепиУправление проектами с использованием метода критической цепи
Управление проектами с использованием метода критической цепи
 
Михаил Павлов - is a tester responsible for quality
Михаил Павлов - is a tester responsible for qualityМихаил Павлов - is a tester responsible for quality
Михаил Павлов - is a tester responsible for quality
 

Destaque

Invito Evento Open House Residenza Querce 4 | Milano 3 | 21 giugno 2012 - v.3
Invito Evento Open House Residenza Querce 4 | Milano 3 | 21 giugno 2012 - v.3Invito Evento Open House Residenza Querce 4 | Milano 3 | 21 giugno 2012 - v.3
Invito Evento Open House Residenza Querce 4 | Milano 3 | 21 giugno 2012 - v.3LIVIO LANTERI
 
IDCC 1261 avenant n° 02-16 salaires
IDCC 1261 avenant n° 02-16 salairesIDCC 1261 avenant n° 02-16 salaires
IDCC 1261 avenant n° 02-16 salairesSociété Tripalio
 
Tiles and shadows wksheet
Tiles and shadows wksheetTiles and shadows wksheet
Tiles and shadows wksheetAshley Thompson
 
Jessica Going To Earth
Jessica Going To EarthJessica Going To Earth
Jessica Going To Earthtakahe2
 
บ้านจ๋า
บ้านจ๋าบ้านจ๋า
บ้านจ๋าja17
 
Carthon M_Team Lead position resume
Carthon M_Team Lead position resumeCarthon M_Team Lead position resume
Carthon M_Team Lead position resumeMaria Carthon
 
Liquidación y cierre (practica) los vaqueros.
Liquidación y cierre (practica) los vaqueros.Liquidación y cierre (practica) los vaqueros.
Liquidación y cierre (practica) los vaqueros.Josué Zapeta
 
Life and Culture at MICA
Life and Culture at MICALife and Culture at MICA
Life and Culture at MICASahil Kapoor
 
มาตรการทางกฎหมายในการกำกับดูแลการท่องเที่ยวเชิงนิเวศ
มาตรการทางกฎหมายในการกำกับดูแลการท่องเที่ยวเชิงนิเวศมาตรการทางกฎหมายในการกำกับดูแลการท่องเที่ยวเชิงนิเวศ
มาตรการทางกฎหมายในการกำกับดูแลการท่องเที่ยวเชิงนิเวศChacrit Sitdhiwej
 
Product Launch | Mahindra e20 Reva
Product Launch | Mahindra e20 RevaProduct Launch | Mahindra e20 Reva
Product Launch | Mahindra e20 RevaSahil Kapoor
 

Destaque (16)

Invito Evento Open House Residenza Querce 4 | Milano 3 | 21 giugno 2012 - v.3
Invito Evento Open House Residenza Querce 4 | Milano 3 | 21 giugno 2012 - v.3Invito Evento Open House Residenza Querce 4 | Milano 3 | 21 giugno 2012 - v.3
Invito Evento Open House Residenza Querce 4 | Milano 3 | 21 giugno 2012 - v.3
 
Preguntas
PreguntasPreguntas
Preguntas
 
IDCC 1261 avenant n° 02-16 salaires
IDCC 1261 avenant n° 02-16 salairesIDCC 1261 avenant n° 02-16 salaires
IDCC 1261 avenant n° 02-16 salaires
 
Tiles and shadows wksheet
Tiles and shadows wksheetTiles and shadows wksheet
Tiles and shadows wksheet
 
Jessica Going To Earth
Jessica Going To EarthJessica Going To Earth
Jessica Going To Earth
 
Dragones
DragonesDragones
Dragones
 
Сунчев систем
Сунчев системСунчев систем
Сунчев систем
 
บ้านจ๋า
บ้านจ๋าบ้านจ๋า
บ้านจ๋า
 
Ejercicio 1 (factura)
Ejercicio 1 (factura)Ejercicio 1 (factura)
Ejercicio 1 (factura)
 
Carthon M_Team Lead position resume
Carthon M_Team Lead position resumeCarthon M_Team Lead position resume
Carthon M_Team Lead position resume
 
Past, Present, Future
Past, Present, FuturePast, Present, Future
Past, Present, Future
 
Liquidación y cierre (practica) los vaqueros.
Liquidación y cierre (practica) los vaqueros.Liquidación y cierre (practica) los vaqueros.
Liquidación y cierre (practica) los vaqueros.
 
11
1111
11
 
Life and Culture at MICA
Life and Culture at MICALife and Culture at MICA
Life and Culture at MICA
 
มาตรการทางกฎหมายในการกำกับดูแลการท่องเที่ยวเชิงนิเวศ
มาตรการทางกฎหมายในการกำกับดูแลการท่องเที่ยวเชิงนิเวศมาตรการทางกฎหมายในการกำกับดูแลการท่องเที่ยวเชิงนิเวศ
มาตรการทางกฎหมายในการกำกับดูแลการท่องเที่ยวเชิงนิเวศ
 
Product Launch | Mahindra e20 Reva
Product Launch | Mahindra e20 RevaProduct Launch | Mahindra e20 Reva
Product Launch | Mahindra e20 Reva
 

Semelhante a Extrproj

2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидахОмские ИТ-субботники
 
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовAndrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовrit2010
 
User Experience 2010: Как показывать интерфейс клиенту (так, чтобы не было му...
User Experience 2010: Как показывать интерфейс клиенту (так, чтобы не было му...User Experience 2010: Как показывать интерфейс клиенту (так, чтобы не было му...
User Experience 2010: Как показывать интерфейс клиенту (так, чтобы не было му...Yury Vetrov
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Andrey Petrov P D P
Andrey Petrov P D PAndrey Petrov P D P
Andrey Petrov P D Prit2010
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосноватьMaksym Bezuglyi
 
60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста60 антипаттернов для С++ программиста
60 антипаттернов для С++ программистаAndrey Karpov
 
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for DummiesCOTOHA
 
Прототип сайта: виды, плюсы и минусы
Прототип сайта: виды, плюсы и минусыПрототип сайта: виды, плюсы и минусы
Прототип сайта: виды, плюсы и минусыСергей Кондауров
 
CEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра КалугинаCEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра КалугинаAlexander Kalouguine
 
Аналитик в Agile (статья)
Аналитик в Agile (статья)Аналитик в Agile (статья)
Аналитик в Agile (статья)Andrey Bibichev
 
Трудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использованияТрудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использованияTatyanazaxarova
 
Как сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с AgileКак сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с AgileAlexey Krivitsky
 
Опыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRОпыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRАлександр Алаев
 
Методики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сМетодики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сHelen Kopteva
 

Semelhante a Extrproj (20)

2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
 
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовAndrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
 
User Experience 2010: Как показывать интерфейс клиенту (так, чтобы не было му...
User Experience 2010: Как показывать интерфейс клиенту (так, чтобы не было му...User Experience 2010: Как показывать интерфейс клиенту (так, чтобы не было му...
User Experience 2010: Как показывать интерфейс клиенту (так, чтобы не было му...
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Andrey Petrov P D P
Andrey Petrov P D PAndrey Petrov P D P
Andrey Petrov P D P
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Это сложно
Это сложноЭто сложно
Это сложно
 
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
 
60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста
 
14 project-mistakes
14 project-mistakes14 project-mistakes
14 project-mistakes
 
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for Dummies
 
Прототип сайта: виды, плюсы и минусы
Прототип сайта: виды, плюсы и минусыПрототип сайта: виды, плюсы и минусы
Прототип сайта: виды, плюсы и минусы
 
CEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра КалугинаCEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра Калугина
 
Основы разработки сайтов by Uplab
Основы разработки сайтов by UplabОсновы разработки сайтов by Uplab
Основы разработки сайтов by Uplab
 
PM Magazine 2009
PM Magazine 2009PM Magazine 2009
PM Magazine 2009
 
Аналитик в Agile (статья)
Аналитик в Agile (статья)Аналитик в Agile (статья)
Аналитик в Agile (статья)
 
Трудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использованияТрудности сравнения анализаторов кода или не забывайте об удобстве использования
Трудности сравнения анализаторов кода или не забывайте об удобстве использования
 
Как сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с AgileКак сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с Agile
 
Опыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRОпыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseR
 
Методики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сМетодики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1с
 

Extrproj

  • 1. Дмитрий Завалишин Экстремальное проектирование? Рассуждения автора (http://offline.computerra.ru/2005/589/38836/) сводятся к простой мысли: кодирование — это не черная и тупая работа. Кодирование — это принятие решений, и кодер — такой же участник процесса проектирования, как и архитектор проекта. Следствие первое. То, что мы привыкли называть проектированием (то, что до кодирования), — штука, возможно, нелишняя, но и не принципиальная. Следствие второе. Тестировать, тестировать и еще раз тестировать. Ибо исходный текст — это просто проект, и только тест позволит убедиться в его корректности. То есть, по сути, нам предлагается еще одна апология экстремального программирования. Я убежденный противник экстремального программирования и дочерних практик, таких как Agile Development. Кратко: XP не предоставляет возможность гарантировать сколь-нибудь разумное качество результата. Этот способ применим, только если программисты очень высокого класса. Он не работает на больших проектах, а эффективность многих методик (в частности, парного программирования) вообще никем никогда не была подтверждена на практике или хоть сколь-нибудь логично обоснована. Простая мысль: если другая методика разработки софта дает на 10% большую предсказуемость результата ценой на 100% (!) больших затрат программистских ресурсов, но без парного программирования, то она уже выигрывает у XP с его парным программированием (которое суть то же самое увеличение затрат на 100%). На мой взгляд, XP — это своеобразная попытка революционным путем свергнуть «власть» аналитиков и менеджеров над программистами. Действительно — если аналитик ставит задачи невнятно, а менеджер только спрашивает «когда?», а больше не делает ничего, то XP может оказаться наилучшей альтернативой. Но это решение из серии «если летать так и не вышло, давайте хоть быстро бегать». Правильный подход — не заменять нормальные методики разработки софта на дикорастущее XP, а выгнать нерадивых менеджеров и аналитиков, набрать профессионалов и заниматься разработкой программного обеспечения с умом. В то же время многие практики XP вполне разумны. (Впрочем, увы, большинство реально применимых практик экстремального программирования заимствованы из других методик. То есть само по себе XP принесло мало полезного.) Утверждение «Исходный код является последней стадией проектирования» имеет такое же право на жизнь, как и утверждение «Дом является последней стадией проектирования». Нравится? Правда, нравится? Давайте я проиллюстрирую построение дома по технологии экстремального программирования. • Вы (будущий житель) приходите на стройку к рытью котлована и сидите за спиной у тракториста. Воняет? Купите одеколону. Сидеть придется до готовности дома. • Тракторист спрашивает вас: «Ну, как, котлован достаточно глубокий?» Откуда вам знать? Ну, вы же заказчик. Должны знать. Заодно определитесь с тем, какое сечение должны иметь силовые кабели, можно ли соединять газовые трубы сваркой, и какого типа нужен цемент. • Когда дом вчерне построен, приезжает эдакая дура с чугунной чушкой на веревке и долбасит по стене. Если дом разваливается, его стоят заново, укрепив получше в тех местах, где треснуло. Пожалуйста — придумайте сами, почему вы должны оплатить строительство трех домов, а получить только один. Я не знаю. • Когда вы включите в розетку чайник и провода загорятся, ваша претензия не будет принята — в вашем присутствии розетку проверяли втыканием лампочки, и вы согласились, что она работает нормально. Я предвижу возражение по пункту 3: мол, если дом не выдерживает теста, то второй вам строят бесплатно. Оно столь же наивно, сколь и вера в бесплатную медицину. Если программист писал код трижды, заказчик все равно оплатит его работу, и не важно, будет ему эта сумма выставлена в счете явно или скрыта в завышенной стоимости работы. Чудес не бывает — или всю работу оплачивает заказчик, или исполнитель разоряется. Не достроив, кстати, дома.
  • 2. Экстремальное программирование — вообще ужасно наивная идея. Например, посадить заказчика рядом с программером, чтобы он рассказывал, как делать, можно, только если: • Заказчик ужасно мало зарабатывает и тратить его время не жалко. Правда, неясно, откуда у него деньги на заказ разработки софта. Впрочем, так бывает, если и заказчик, и исполнитель — студенты, а работа сводится к стряпне сайта за полсотни баксов. • Заказчик на самом деле понимает, что он хочет получить. Но это заказчик из сказки, в жизни они не встречаются. Поэтому существуют аналитики. • Заказчик помнит, что он хотел вчера и почему он этого хотел. Так тоже не бывает, поэтому если требования к продукту не фиксируются, разработка начинает осциллировать: вчера заказчик просил красненькое, а сегодня он хочет толстенькое, а что красненькое с толстеньким несовместимо — он уже забыл. Посему программер пять раз переделывает с красненького тоненького на синенькое толстенькое и назад. Можно долго говорить о том, насколько XP отличается от детского лепета, но есть и другая сторона медали. Коль скоро XP появилось, тому были какие-то предпосылки. Как бы само решение ни было несерьезно, нужно посмотреть на причины, которые к нему привели, и, может быть, предложить иное решение. A. Автор утверждает, что проектирование не закончено, пока последняя строка кода не написана и не оттестирована. По сути это означает следующее: никакой проект не транслируется в код 1:1. В настоящее время это утверждение вполне справедливо. Проблема рассинхронизации кода и проекта общеизвестна, и способов борьбы с ней немало. Однако вряд ли стоит решать ее, низводя проектирование до уровня кода. Правильнее было бы поднимать код до уровня проекта. В обоих случаях происходит некое слияние проекта и его реализации, но задача автоматизированного получения кода по проекту проще, чем задача превращения языка программирования в хороший проектный инструмент. Давайте идти вверх, а не вниз. Не нужно проектировать на С++, нужно сделать так, чтобы код на С++ генерировался из проекта нажатием одной кнопки. B. Автор фактически подтверждает, что XP ориентирована на высококлассных программистов и не работает, если программист — среднего уровня. «Пусть все программеры будут классными», — говорит автор. Иллюстрирую: не будем проектировать автомобили, не будем давать рабочим технологические карты. Вместо этого наймем таких рабочих, чтобы сами по месту разбирались, что к чему. Наивность этого подхода подтвердил Форд запуском первого конвейера около ста лет тому назад. То есть XP применять можно, но — вот беда! — экономически невыгодно. C.Терминологический вопрос. Несущественно. D. В рамках авторской теории это правда, за рамками — не имеет смысла. Так что обсуждать нечего. Резюме: несерьезно. Все это очередной завуалированный разговор на тему «не хочу ничего делать, кроме кодирования и — так уж и быть — тестирования». Почему? Да потому, что не умеет. Так пусть учится!