Code and Fix — так ли он плох на самом деле?

Сколько хейта довелось услышать в адрес code and fix модели разработки. Чему только не противопоставляли code and fix: agile-подходам, каскадным подходам, и всегда будто это первородное зло. Не считаю code and fix сам по себе чем-то плохим. Все зависит от контекста и посмотрим, где от него можно получить выгоду.

Что такое Code and Fix?

Формально – это простейший процесс разработки. Он состоит из двух этапов: написание кода и его исправление. Исправление идет до тех пор, пока заказчик не примет код. Здесь нет дорогих планирований, дизайна, этапа тестирования, стратегии. Это очень быстрый метод разработки.

Где применим?

Многие фрилансеры ровно так и работают и я так делал. Все примерно 50 выполненных на рентакодере проектов были выполнены методом, который и принято называть Code and Fix (или Cowboy Coding). И если меня сейчас спросить, какой метод самый эффективный для одноразового фриланса… Скорее всего я и сейчас отвечу, что в 95% случаев это Code and Fix. Заказчику нужно быстро и недорого, а значит отбрасываем все лишнее.

А учитывая, что я решал фрилансом две задачи: заработать и прокачаться в том, чего не знаю, нередко выполнял задачу до того, как заказчик принимал (или не принимал) мой бид. Так что, повторюсь – все лишние процесс в такой ситуации – на свалку 🙂

The Code and Fix Model. When one learns to code, the initial… | by Rafayel  Mkrtchyan | Product Coalition

Откуда хейт вокруг Code and Fix?

Сложно точно сказать. Может быть от Barry W. Boehm, который в своей статье 1986-го года «A Spiral Model of Software Development and Enhancement» написал, буквально, следующее:

This (code and fix) model has three primary difficulties:

  1. After a number of fixes, the code became so poorly structured that subsequent fixes were very expensive. This underscored the need for a design phase prior to coding.
  2. Frequently, even well-designed software was such a poor match to users’ needs that it was either rejected outright or expensively redeveloped. This made the need for a requirements phase prior to design evident.
  3. Code was expensive to fix because of poor preparation for testing and modification. This made it clear that explicit recognition of these phases, as well as test and evolution planning and preparation tasks in the early phases, were needed.

Это было справедливо во времена выхода статьи, ведь дизайн был в большей степени искусством. Не было наработанной теоретико-практической базы в структурировании кода. Еще не было банды четырех, граспа, и современных языков. Не было структурированных знаний о рефакторинге и мощных IDE.

Сейчас подготовленный разработчик, хорошо ориентирующийся в шаблонах и своей IDE может быстро на-код-энд-фиксить отличный код. Да, возможно он будет иметь «poor preparation for testing and modification», даже будучи построенным на паттернах. Что ж, теперь от этого у нас есть таблетка – рефакторинг.

Погуглил про code and fix:

PPT - TCSS 360, Spring 2005 Lecture Notes PowerPoint Presentation, free  download - ID:1290144

Если отталкиваться от подхода, в котором мы наперед задаем требования, то, наверное, да, справедливо. Но если идти через Customer Development, то уже и не так всё ужасно =) Требований нет – есть гипотезы, и если мы их быстро подтвердили, то можем порефакторить код. Или, как современные гиганты – перейти на новый виток эволюционного развития архитектуры.

Где-то достаточно Emergent Design, где-то нужна целевая архитектура. В архитектуре всё строится на компромиссах: нет хорошего или плохого решения, – есть подходящее и не подходящее под определенный контекст. И где-то норм начать с Code and Fix, а где-то (мед оборудование, например, и то не факт) потребуется скрупулёзная предварительная работа.

Когда пора идти дальше?

Как только вас больше 3-х – пора идти дальше и начать заниматься процессом. Больше трех – уже команда, а значит появляется потребность в управлении тремя областями: работой, эксплуатацией и продуктовым развитием. Хотя бы на самом простейшем уровне.

Заключение

Нет уже того Code&Fix, что был когда-то и никогда не будет. Это как рассказывать, что для того, чтобы развести костер нужно потереть палочки друг о друга, но вы так не делайте, у нас же есть спички, а вообще-то и зажигалка =) Но мы можем в нынешнем контексте сказать, Code&Fix – это в большей степени просто написание кода и его исправление до доведения до приемлемого состояния. Ок, будем использовать там, где подходит, а там где не подходит – использовать не будем. Think Architecturally =)

Share

Добавить комментарий