- PVSM.RU - https://www.pvsm.ru -
В то время как сторонники современных гибких методологий разработки выдумывают все новые и новые практики, их оппоненты также не стоят на месте. На фоне разнообразных XDD (FDD — Feature Driven Development, TDD — Test Driven Development, BDD — Behavior Driven Development, ATDD — Acceptance Test Driven Development) они сформулировали свою методологию — JSDD (Job Safety Driven Development). Кому интересны детали, добро пожаловать под кат.
Любая методология должна строиться на некоторых принципах и ценностях. Дальше из них получаются конкретные практики, а уже потом инструменты для эффективного следования практикам. Вот давайте с принципов и начнем…
Самый главный принцип JSDD — стабильная работа и надежный источник пропитания для разработчика. В наше нестабильное время технологии развиваются очень быстро и разработчик рискует остаться за бортом, упустив момент и отстав от рынка. А ведь у многих разработчиков есть семьи, которые надо кормить. Кто-то уже чует наступление возрастного барьера, после которого компании неохотно берут на работу некогда перспективного специалиста.
А еще и наступление Agile подходов со всех сторон лишь усугубляет положение. Надо быть общительным, социальным и прогрессивным, внедрять новые практики и подходы. А что если не получится? Что если вы не сможете больше быть высокоуровневым профессионалом на фоне остальных? Эти вопросы порождают страх и беспокойство, являясь толчком к конкретным действиям.
Сторонники JSDD стараются приложить максимум усилий, чтобы стабильность их положения ничего не могло поколебать.
Ниже представлены практики, которые помогают адептам JSDD добиваться своих целей.
Непрозрачное планирование — планирование задач должно быть как можно более коротким. Все детали и обсуждения откладываются на потом, в личное общение. Дизайн сессии не проводятся вовсе, считается что профессионал сможет сам придумать максимально подходящую реализацию под задачу, исходя из бизнес-требований. Эта практика помогает собирать доменные знания о продукте, архитектуре и дизайне исключительно в головах разработчиков. При этом ни один из них не будет обладать знаниями по чужим модулям, а это делает их труднозаменимыми на проекте.
Антирефакторинг — самая главная задача заключается в работоспособности кода, а не его понятности и простоте. Поэтому как только решение начинает работать, разработчик должен переходить к следующей задаче. Эта практика должна обеспечить возможность разбираться в коде только самому автору, что сильно уменьшает вероятность его увольнения.
Фреймворконенавистничество — не стоит использовать популярные фреймворки и библиотеки, гораздо лучше написать свое решение под конкретные задачи. Ведь потом надо поддерживать продукт и возможно на эту роль понадобятся новые более дешевые разработчики. Куда проще найти на рынке разработчика со знанием популярных фреймворков, чем способных разобраться с самописными. А это значит, что вы надолго обеспечены работой.
Незыблемость решений — архитектурные решения, которые принимаются на проекте, должны быть как можно менее подвержены изменениям. Они должны решать строго текущие задачи и ни на шаг больше. Любые изменения в будущем должны стоить дорого и сделать их без участия автора должно быть чрезвычайно сложно. Эта практика отлично маскируется под Agile практику «эволюционирущей архитектуры» и отказ от BDUP (Big Design Up Front). А это значит, что ее легко внедрить даже при применении «Agile подходов».
Отказ от тестирования кода — мы же профессионалы и так пишем работающий код. На тесты никто не выделяет времени, заказчик не будет за них платить и для тестирования есть тестировщики. Эти доводы и уверенность в собственном мнении легко позволят убедить всех остальных в вашей правоте. Отказ от тестирования на уровне модулей и их интеграции позволяет разрушить тот и без того хрупкий мостик, который мог бы помочь разобраться в существующем коде и внести в него изменения другим разработчикам. Теперь без вас уж точно не обойтись!
Индивидуальная работа — нет времени на то, чтобы сидеть и работать в паре или организовывать другие групповые активности. Надо быстрее делать рабочий код, нам за это платят деньги. Эта практика позволяет вам не делиться своими знаниями и навыками с другими, что дает вам возможность оставаться на том же уровне относительно коллег по команде. Также практика способствует узкопрофильности знаний в разных областях продукта и тем самым укрепляет вашу уверенность в завтрашнем дне.
Велосипедостроение — как только вы видите возможность реализовать где-то что-то с нуля, не пользуясь общеизвестными инструментами и подходами, вы не должны пропустить эту возможность. Помимо преимуществ от похожей практики фреймворконенавистничества вы существенно растягиваете сроки проекта. А чем дольше длится проект, тем большее влияние оказывают ваши остальные практики, делая ваше увольнение практически катастрофой для проекта.
Скорострельность — чтобы ваши аргументы были более вескими и другие практики внедрялись быстрее, вы должны уметь быстро реализовывать поставленные задачи. Естественно без заморочек на качество кода и прочие активности. Включаете поток сознания и вперед! Тогда у вас появится возможность упрекать остальных в медлительности и противостоять внедрению новых практик и подходов, а значит убережет ваше стабильное положение от посягательств.
Есть много других интересных практик в этой замечательной методологии. Вы наверняка сталкивались с многими из них в жизни и я буду рад увидеть их описание в комментариях. Также я специально пропустил секцию инструментов, чтобы дать поработать вашей фантазии…
Если вы являетесь одним из сторонников Agile, то должны быть готовы к борьбе с альтернативными методологиями, одна из которых представлена в статье. В вашем арсенале обязаны быть статический анализ кода, ревью кода, парное программирование, простой дизайн и архитектура, твердое понимание процессов и принципов гибкой разработки. Только в этом случае вам удастся вычислить адепта JSDD, а потом либо привлечь его на свою сторону либо суметь избавиться от него. Иначе ваше внедрение Agile может остановиться, не успев начаться…
Автор: xpinjection
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/26871
Ссылки в тексте:
[1] Источник: http://habrahabr.ru/post/169017/
Нажмите здесь для печати.