avva: (Default)
[personal profile] avva
Эта запись будет интересна только программистам.

Свою точку зрения на Agile programming и TDD (Test-Driven Development), которую несколько раз в прошлом высказывал в комментариях, выношу в отдельную запись.

Agile, на мой взгляд - почти целиком вредная гиль. Даже в тех случаях, когда в рамках агиля говорят что-то разумное (а это случается, потому что агиль невероятно расплывчат и слабо-определен, будучи в основном феноменом маркетинга, и его можно повернуть в разные стороны), это все равно часто компрометируется съедающим мозг баззвордизмом и приводит к ердуне.

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

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

Я бы сказал, что активное и тщательное тестирование на порядок важнее выбора "TDD или не TDD".

Из-за того, что TDD часто представляют как часть agile (или extreme programming, предыдущей инкарнации той болезни, которая сейчас называет себя agile), литература по нему и энтузиасты его часто оказываются заражены агилевским баззвордизмом и радикализмом (т.е. считают, что нужно TDD всегда и везде, и тот, кто решил в каком-то конкретном случае написать сначала код, а потом тест к нему - всегда предатель и ренегат). Я же вижу интерес к тестированию как что-то, что здоровым образом выросло независимо от моды на всякие агили. У очень динамических с точки зрения типизации языков (perl, python, Smalltalk, Lisp итд.) еще с середины 90-х были развитые и полезные инфраструктуры для тестов, потому что в этих языках тесты ловят ошибки, которые в других языках ловит компилятор (а также и кучу других ошибок, конечно). Постепенно увлечение тестами перекинулось с этих языков на Джаву итд., без всяких агилей, которые нередко стремятся сейчас представить это как свое достижение.
Page 1 of 3 << [1] [2] [3] >>

Date: 2008-12-29 10:32 am (UTC)
From: [identity profile] lazyreader.livejournal.com
Agile, на мой взгляд - почти целиком вредная гиль.

Вредная - что? Гниль?

Date: 2008-12-29 10:34 am (UTC)

Date: 2008-12-29 10:36 am (UTC)
From: [identity profile] jerom.livejournal.com
Зато парное программирование иногда очень полезно.

Date: 2008-12-29 10:37 am (UTC)
From: [identity profile] avva.livejournal.com
Ключевое слово - "иногда".

Date: 2008-12-29 10:41 am (UTC)
From: [identity profile] old-radist.livejournal.com
По нынешним временам - всегда. В паре стремно первому предложить в интернет сходить.

Date: 2008-12-29 10:44 am (UTC)
From: [identity profile] lazyreader.livejournal.com
Надо же, вот слово, которого я не знал.

Date: 2008-12-29 10:45 am (UTC)
From: [identity profile] lazyreader.livejournal.com
Именно. Оба работают мотиваторами друг для друга, причём ненавязчиво.

Date: 2008-12-29 11:07 am (UTC)
From: [identity profile] dimrub.livejournal.com
Но и очень утомительно.

Date: 2008-12-29 11:24 am (UTC)
From: [identity profile] pigmeich.livejournal.com
Подписался и приготовил попкорн.

Date: 2008-12-29 11:37 am (UTC)
From: [identity profile] gruimed.livejournal.com
Agile конечно не идеален, но его альтернатива - программирование по дизайну не работает значительно чаще чем agile.

Date: 2008-12-29 11:52 am (UTC)
From: [identity profile] jerom.livejournal.com
Дело привычки, быть может?

Date: 2008-12-29 11:58 am (UTC)
From: [identity profile] sema.livejournal.com
Сложно это.
С одной стороны - есть набор методологий и разнообразная жизнь. Подразумевается, что под конкретный проект всегда можно подобрать наиболее подходящую методологию, универсальных решений не бывает.
С другой стороны, практически не бывает универсальных людей, которые одинаково хорошо владеют всеми практиками, чтобы непредвзято выбирать в каждом конкретном случае - всегда человек тяготеет к какому-то определённому подходу и знает его лучше. Не говоря уже про маркетинговые и прочие денежные факторы, не дающие менеджеру развернуться.
Вот я например использовал всегда только что-то waterfall-образное, прибегая только к отдельным XP/agile практикам по обстановке и очень редко. Но это по большей части было обусловлено обстоятельствами и я понимаю, что по-настоящему я agile не знаю и подозреваю, что от этого сам выбираю не ту методологию, когда выбор возможен.

Date: 2008-12-29 12:56 pm (UTC)
From: [identity profile] olkab.livejournal.com
Иногда и мышьяк полезен.

Date: 2008-12-29 01:21 pm (UTC)
From: [identity profile] msh.livejournal.com
Я отношусь к agile очень скептично. У меня, например, был опыт работы с группой адептов agile, когда я просто не выдержал их постоянное переливание из пустого в порожнее и итерационное блуждание в тумане, вместо нормального research, я написал свой дизайн и недемократично продавил его через менеджмент. Все обидились, но проект пошел гораздо быстрее

Но вот тут мы как-то разговаривали с кандидатом, который пришел из большой конторы, и в том числе очень подробно обсуждали с ним наш development process. В конце он сказал - "мне так нравится что у вас такой зрелый agile process!". Но позвольте, ответили мы, какой нафиг agile? Ну как же, вы же говорите, что у вас любой программист увидевший проблему в дизайне может все остановить, созвать митинг и попытаться с коллегами найти решение. Но ведь это же просто здравый смысл, сказали мы, никакой agile. А он и отвечает - да вы что, у нас бы надо было сообщить менеджеру чтобы он на следующем заседании steering committee обсудил бы проблему с архитектором и тот бы тогда подготовил презентацию для старшего архитектора и .. и бла-бла

Вот тогда я понял почему многие настолько хватаются за agile. Ну действительно, по сравнению с таким это действительно революция и лучшая вещь после sliced bread

Date: 2008-12-29 01:55 pm (UTC)
From: [identity profile] sema.livejournal.com
да, это тоже правда, порой просто процесс настолько закостеневший, что agile кажется долгожданным глотком воздуха, а протолкнуть его позволяет "мода"
но тут уж всё зависит от общей вменяемости высшего менеджмента

Agile

Date: 2008-12-29 01:55 pm (UTC)
From: [identity profile] uddod.livejournal.com
http://dilbert.com/2007-11-26/

Date: 2008-12-29 02:21 pm (UTC)
From: [identity profile] dwarwood.livejournal.com
>заражены агилевским баззвордизмом и радикализмом

а можно "баззвордизм" перевести? 1 ссылка в гугле попалась, но мало помогла.

Date: 2008-12-29 02:23 pm (UTC)
From: [identity profile] avva.livejournal.com
Склонность к излишнему использованию buzzwords, модных слов.

Date: 2008-12-29 03:13 pm (UTC)
From: [identity profile] gaus.livejournal.com
Насколько я понимаю, agile определяется довольно просто (хотя и несколько общо):

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

Не могли бы Вы пояснить, какой из этих пунктов вы считаете вредным и почему?

Date: 2008-12-29 03:30 pm (UTC)
From: [identity profile] tetushka.livejournal.com
Очень здравые заметки. Agile может получиться у спецефической команды, но он и для нее будет только инструментом, помогающим привлечь domain experts и держать их стопроцентно занятыми в проекте. Что, вообще-то, немало. В этом случае Agile как набор buss words может быть очень полезен для переговоров с начальством.

Date: 2008-12-29 03:41 pm (UTC)
From: [identity profile] avva.livejournal.com
Да, согласен, agile в качестве модной штуки может расшевелить совершенно пещерно устроенное место, и тогда в конечном итоге его влияние будет положительным.

Date: 2008-12-29 06:10 pm (UTC)
From: [identity profile] erez.livejournal.com
А Agile как "агиль" произносят только (1) израильтяне, (2) русскоязычные, (3) русскоязычные израильтяне, или ещё кто-нибудь?

Date: 2008-12-29 06:24 pm (UTC)
From: [identity profile] avva.livejournal.com
Никто по-моему не произносит.

Date: 2008-12-29 06:47 pm (UTC)
From: [identity profile] nice-beaver.livejournal.com
Анатолий, а какую модель разработки софта вы считаете хорошей? Есть ли книжка, где она описана?

Date: 2008-12-29 07:09 pm (UTC)
From: [identity profile] migmit.vox.com (from livejournal.com)
Я тоже.
Page 1 of 3 << [1] [2] [3] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 02:31 pm
Powered by Dreamwidth Studios