Кевлин Хенни как-то привел хорошую аналогию. Он спросил у группы программистов на его докладе: "Зачем автомобилю тормоза?" И, выслушав идентичные ответы "Чтобы можно было резко остановиться", отрицательно покачал головой
( Read more... )
У TDD заморочка другая - помимо тестов есть масса других способов увеличения надежжности кода - основные - инварианта (assert-assert) и более или менее грамотное использование статического типового контроля - инкапсуляции etc.
Так вот по моим наблюдениям адепты TDD очень часто полагают, что тормоза придумали трусы - что ничего кроме unit-tests не надо.
Так а это именно то, за что я не перевариваю крикливый джобс-стайл - продажа "средства от всех болезней" - "Структурное програмирование!!!!"/"Структрное программирование - шит. Обектное программирование!!!!"/"Агильное программирование!!!!"/"Unit Tests решатт все ваши проблемы!!!!"/"Паттерны!!!!!"/"Вы все делали не правильно - думать не надо - Test Driven Development!!!!"
А потом с жертвами всей этой маркетологии "патентованных серебрянных пуль" жить.
С некоторым ужасом жду того же про "Функциональное программирование".
Смотря что - например все вышеперечисленное на мой взгляд именно что никуда не едете. Для меня маркером туфты является "парадигма" и "методология". При том что идеи могут быть сами по себе весьма полезными.
Все известные мне адепты TDD гоняют тесты в тестовом окружении, когда изолировать все от всего не имеет смысла. А так-то русский народ короче сформулировал: "сдуру можно и хуй сломать".
PPS: Еще у меня есть опыт(и даже отработанный спич) по объяснению с-шным-юниксовым чем собственно хороша идея/эклипс - потому как они видят там рекламный hype c buzzwords про рефакторинги, quickfixes - воспринимают как подсказки для идиотов, которые сами не могу понять на что тут ругается компилятор etc - и дропают ее с диагнозом - "это для чайников".
То что реально эта функциональность состоит в автоматизации довольно большого количества программерской рутины внешний наблюдатель понять совершенно не может.
Собственно с TDD и прочим - вычучивание здравого зерна тоже задача не вполне тривиальная, а западение на это менеджера просто чревато (потому что средний манагер вычучивать ничего не будет а будет ждать волшебного эффекта). Вот и отношение.
Если вы в этом не видите смысла и прекрасно управляетесь без этого, то вы, конечно, правы. Мне представляется странным то упорство, с которым вы объясняете тем, кто считает, что стал работать более продуктивно, что они не правы. В конце концов не существует единственно верной методологии.
Если вы считаете важным поделиться полезным опытом, то какие-то истории про знакомых неинтересны, ей богу. Дайте ссылки на конкретные проекты и отзывы о том, как и почему. Возможно, станет ясно, чем отлична их среда и почему не работало у них то, что позволило другим стать более эффективными и улучшить дизайн своих программ.
Да я и так прекрасно понимаю почему не работало (кстати экстремальные программисты свой главный рекламный проект провалили с треском - что адепты XP предпочитают не замечать). Именно потому что нашли не полезные дополнительные меры по повышению надежности, а единственно верную технлогию,о отменяющую все остальное.
С теми же агилльщиками обычная пробслема - решают более или менее типовую задачу в знакомой мне предметной области. Я им сразу говорю - так как вы делаете - огребете проблемы. Такие-то и такие-то, тогда-то и тогда-то.
На что ответ в идеологии TDD - "у нас нет user case на эту тему - будет - тогда и будем смотреть". Потом естественно есть user case (бо как я уже говорю - тема вполне заезженная). К этому моменту у них уже код представляет собой несопровождаемую кучу дерьма и хаков под предыдущие user cases (или - еще более тяжелый случай - очень изящное, но не поддающееся переделке именно в силу изящества) и...
Так не только у них не получается - экстремальщиков я же не зря привел - фэйл же был прилюдный. Что до вас -пока вы занимаетесь просто там внедрение ant/make или чего еще там, continuous builds,каких-то тестов и вообще - внедрением инструментов - я всецело за. А вот как только прозвучит что-то про @@est driven development"/"User stories" и проч. - буду ждать проблем.
Я как раз на этой неделе делал доклад на семинаре "BDD and Eexcutable Specifications". Вместе с Гойко Аджичем, который книгу на эту тему написал. И уже год как общаюсь в большом проекте с экспертами через user stories и язык Геркин (Given/When/Then). Ни я, ни эксперты не можем себе представить, как бы нам удалось так эффективно работать без этого.
Проект подходит к концу (по крайней мере главная фаза), так что проблем уже не дождаться.
Но да, я знаю, что кому-нибудь приспичит рассказать мне, что мы все делали не так. Это обычное дело.
Так вот по моим наблюдениям адепты TDD очень часто полагают, что тормоза придумали трусы - что ничего кроме unit-tests не надо.
Reply
Цитаты из адептов, которым ничего другого не надо?
Reply
Reply
Reply
А потом с жертвами всей этой маркетологии "патентованных серебрянных пуль" жить.
С некоторым ужасом жду того же про "Функциональное программирование".
Reply
Reply
Reply
Reply
Reply
То что реально эта функциональность состоит в автоматизации довольно большого количества программерской рутины внешний наблюдатель понять совершенно не может.
Собственно с TDD и прочим - вычучивание здравого зерна тоже задача не вполне тривиальная, а западение на это менеджера просто чревато (потому что средний манагер вычучивать ничего не будет а будет ждать волшебного эффекта). Вот и отношение.
Reply
Если вы считаете важным поделиться полезным опытом, то какие-то истории про знакомых неинтересны, ей богу. Дайте ссылки на конкретные проекты и отзывы о том, как и почему. Возможно, станет ясно, чем отлична их среда и почему не работало у них то, что позволило другим стать более эффективными и улучшить дизайн своих программ.
Reply
С теми же агилльщиками обычная пробслема - решают более или менее типовую задачу в знакомой мне предметной области. Я им сразу говорю - так как вы делаете - огребете проблемы. Такие-то и такие-то, тогда-то и тогда-то.
На что ответ в идеологии TDD - "у нас нет user case на эту тему - будет - тогда и будем смотреть". Потом естественно есть user case (бо как я уже говорю - тема вполне заезженная). К этому моменту у них уже код представляет собой несопровождаемую кучу дерьма и хаков под предыдущие user cases (или - еще более тяжелый случай - очень изящное, но не поддающееся переделке именно в силу изящества) и...
Reply
Reply
Reply
Проект подходит к концу (по крайней мере главная фаза), так что проблем уже не дождаться.
Но да, я знаю, что кому-нибудь приспичит рассказать мне, что мы все делали не так. Это обычное дело.
Reply
Reply
Leave a comment