Соц сети

Глушитель Lanos
Адреса установочных центров. Фото и видео работ.
daewooclub.ru

Прослушал четырхедневный тренинг кент бека на тему: Agile, Extreme Programming, TDD, Responsible Design, и т.п. Ниже краткий коспект лекций, мое отношение к ним и выводы, которые сделал из всего услышанного.

1. Experience != Success

Первое с чего начал Бек. Успешные проекты чаще всего делают опытные разработчики (менеджеры, дизайнеры…). Обратное не верно - не факт, что опытные разработчики сделают успешный проект.

Вывод: уделять внимание не только обучению программистов в группе, но и процессу разработки.

2. Общение в группах

Командам была предоставлена возможность пообщаться на тему «Что я хотел бы изучить на этом трененге». Сначала самостоятельно, потом в парах, четвёрках, восмёрках и полной группой (20 человек). Цели:

  • Показать что общение в маленьких группах гораздо эффективнее, чем в больших.
  • Показать, что начиная с некоторого момента, чем больше группа, тем меньшая ее относительная и абсолютная часть принимает участие в обсуждении. В нашем случае получилось примерно так: в группе из 2х человек общается двое (причем один из них ведущий), из четырёх – трое, из восьми – шестеро, во всей группе – 4-5 человек.
  • Определить интересы группы разработчиков. На протяжении всех дней оценивать и показывать прогресс группы в каждом направлении
  • Показать что решение большой группы более размыто чем маленькой.

Итоги. Общими усилиями выбрали следующие темы

  • Colloboration / Comminication (Взаимодействие / коммуникация)
  • Planning / Time management (Планирование / управление временем)
  • Better code design (Дизайн кода)

Вывод: оптимальное количество группы для обсуждения – 3-5 человек.

3. Принцип «Уже сделано» (AlreadyDone)

На примере UDD приложений (URL Drive Development) было на примере показано, как общаться с заказчиком по поводу новых фич. (В группе мысль не все сразу уловили, поэтому моя интерпретация может быть тоже ошибочной)

Пример. Приходит заказчик с новой идей. Описывает ее. При нём же делается простейший вариант, который его удовлетворяет, на чистом HTML. И получает окончательный ответ - «Уже сделано» . После чего спокойно уходит. А разработчики делают необходимую и достаточную реализацию , либо отправляют прототип в продакшн, до тех пор, пока не потребовалось чего-то большего.

Цели:

  • Заказчик получает наглядую реализацию
  • Быстрая обратная связь
  • До конечных пользователей идея заказчика доходит очень быстро

Выводы:

  • для бизнеса очень важна обратная связь
  • делать прототипы
  • делать минимальную и достаточную реализацию на каждом этапе

4. Mind Maps
На примере простой задачи: "в парах попеременно описать ситуацию в которой чувствовал себя успешно" - был опробован инструмент Mind-Map (интеллект-карта), позволяющий описывать / осмысливать и т.п.. любые задачи и предметные области.
Основные преимуществва по сравнению с обычным нумерованными / ненумерованнысми иерархическими списками:

  • Использует бОльшее количество участков мозга, так как предполагается использование иллюстраций и разных цветов
  • проще рисовать связи
  • Использует 2х мерное пространство, а не одномерное
  • Более иллюстративный
  • Проще вносить изменения на каждый уровень
  • ...

Выводы:

  • надо взять на вооружение.
  • хорошо подходит для мозговых штурмов

5. Queueing Theory: B -> F -> P -> T -> O -> U->Feedback -> B
Стандартный процесс разработки ПО:

  • Бизнес придумывает идеи как заработать деньги
  • Идеи превращаются в фичи (требования)
  • Программисты реализуют требования
  • Тестировщики тестируют
  • Operations выкладывают изменения
  • Пользователи пользуются и дают обратную связь
  • Бизнес получает обратную связь на основании которой делают выводы и запускают процесс заново.

На примере крутящихся дверей в супермаркете, проводя аналогии с разработкой ПО, Кент попытался описать эту проблему. Решения– поставить больше дверей, две сделать больше, убрать стенку и т.п. В конечном счете, пришел к выводу, что иногда нужно определить зачем посетители ходят через эту дверь и устранить эту необходимость. В его примере – перенести кофемат из соседнего помещения в основное.

Выводы:

  • Short Feedback. Уменьшить время получения фидбэка на всех этапах
  • Уменьшить время получения первых денег, на которые потом можно развивать продукт, если бизнес этого пожелает
  • Direct Contact. Должна существовать возможность прямого получение фидбэка от конечных пользователей для всех участников процесса
  • Focused Work. В некоторых случаях необходимо подняться на уровень выше (посмотреть на проблему с другой стороны), чтобы решить ее более эффективно

6. План внедрения Agile в группе разработчиков

Трём группм из 6-7 человек было предложено разработать план внедрения Agile в группе разработчиков. Каждый член в группе играл определённую заданную роль (Менеджер за внедрение Agile, старпёр-скептик, архитектро б.д. и т.п.). В одной из групп скептик на 100% справился со своей задачей и в результате плана вообще не получилось. Вот план одной из комманд:

  • Short Cycles (Короткие циклы)
  • Planning Iterations (Подробное планиерование итераций
  • TDD (Тестирование новой функциональности)
  • Regration Tests (Написание тестов перед исправлением багов)
  • Continius Integration (Постоянная сборка)
  • Review (Просмотр кода несколькими разработчиками)
  • Meetings (Опредленённый формат встреч и обсуждений)
  • Modularity (Использование модульной технологии, для облегчения внесения изменений, Incremental Design)

Замечания по ходу обсуждения – что не получилось:

  • Плана больше похож на список методик / практик. Поскольку не включает
    • Упорядоченного списка задач
    • Ответственных / исполнителей
    • Сроков
  • Во время доклада необходимо обращать внимание на реакцию «большого босса».
  • Не нужно сбиваться на технические подробности
  • В подобных задачах необходимо показать «большому боссу» - почему выполнение задач из плана, поможет работать эффективней, качественней и т.п., а значит заработать больше денег (или потратить меньше) . Это основная задача «большого боса» (а не внедрить Agile)

Выводы:

  • Один человек в команде может свести на нет все усилия по внедрению чего-то нового в случае не сплоченного коллектива или не достаточно хорошем менеджменте

7. eXtreme Programming – больше Принципы, а не практики

Бек начал с того, что сделал акцент на том, что выполнение практик экстремального программирования это не сама цель. Самое важное - это ценности.

Итого Экстремальное программирование включает в себя:

  • Ценности (Values)
  • Принципы (Principles)
  • Социальная активность (Social Activity)
    • Парное программирование
    • Сидеть вместе
    • Открытое пространство (без перегородок)
    • Вся команда в одном месте (свободное общение всех членов команды)
  • Планирование (Planning)
    • Недельный цикл (Week cycle) – подробное планирование на неделю вперед
    • Квартальный цикл (Quarter cycle) – стратегическое планирование архитектурных изменений на 4 месяца вперёд
    • Истории (Stories)
    • Slack (Слабина) – не обещать того, что невозможно выполнить. Быть честным к заказчику.
  • Техническая реализация (Technical)
    • 10minuties (10 минут) - Сборка проектов и прогон тестов должно составлять не более 10 минут, чтобы это делать несколько раз в день
    • Continuies Integration – Постоянная сборка проекта и прого всех тестов на тестовом сервере
    • Incremental Design – Дизайн, позволяющий легко вносить изменений
    • Test First – Написание тестов, до реализации.
  • Energize Work - Если чувствуешь что не интересно работать (работаешь не эффективно) – самостоятельно исправь ситуацию:
    • Почитай книги 
    • Сходи на семинар 
    • Пообщайся над проблемой с кем-нибудь – тебе помогут 
    • Вспомни когда тебе было комфортно, определи что тогда помогало тебе, реализуй это сейчас (интерпретировав под конкретную задачу)

8. Планирование

В группах было предложено описать / нарисовать процесс разработки ПО в их коммандах в терминах Value Stream Method Mapping. После чего попытаться сократить на 20% время всего процесса разработки

Идеи:

  • Распараллелить задачи
  • Разбить задачи на более мелкие
  • Перенести конец второй задачи в первую (например, начать тестировать до окончания разработки)
  • Уменьшить время ожидания освобождения внешних ресурсов (путём создания рабочих групп, определения порядка взаимодействия и т.п.)

Вывод для нашей команды: вёрстку встраивать в код, сразу в процессе разработки. Правда мы об этом и так знали.

9. Mr TDD
Процесс разработки в стиле TDD: SPECIFY -> Test -> Design ->Programming->Design -> Specify

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

  • Assign (Написание условия проверки требования)
  • Test (Написание теста)
  • Test error (Проверка того что тест выдаёт ошибку)
  • Реализация (Реализация)
  • Test passed (Проверка того, что тест проходит успешно)

Тестирование Ядра (Core) – в моём понимании (В терминах MVC) это – модель и контроллер. По другому – модульное тестирование

  • Stable + (Функционал редко изменяется)
  • Easy API + (Лёгкое, удобное API для написания тестов)
  • Coverage – (Покрытие кода и функциональности не полностью)

Тестирование UI (Интерфейса пользователя) – в моём понимании (В терминах MVC) это – представление, По другому - функциональное тестирование

  • Unstable – (Часто изменяется)
  • Clumsy API -. Сложное / странное API,поскольку приходится работать с
    • HTTP
    • HTML
    • UI State
  • Coverage + (Покрытие кода - максимальное)
Вывод: больше логики (критичных вещей) сосредотачивать в ядре

 

10. Responsible Design.

Практически весь высший менеджмент не любит думать в рамках XP: «Почему, если продавцам можно поставить жеский план и они могут за него отвечать , то программисты, прикрываясь XP, не могут утверждать, что они сделают к определённому сроку или за определённый период». Эта идеалогия построена на трёх принципах:

  • Accountability (Ответственность, Подотчетность, Отслеживаемость)
  • Transparansy (Прозрачность) - Намерение предоставлять информацию
  • Responsobility (Ответственность) – Doing what needs to be done. Делать всё, что должно быть сделано

Эти принципы, на самом деле, не не противоречат идеалогии AGILE и XP. На практике достаточно просто все методики / практики указанные выше свести к этим трём показателям. Моё мнение основываяс как раз на этих трёх принципах нужно было рассказывать план внедрения AGILE в группе.

Продолжением этой темы был мозговой штурм на тему

  • Кому я предоставляю информацию
  • За что я отвечаю
  • Если бы компания была моей, чтобы я в ней изменил, или что я бы сделал.

Итоги:

Выводы:

  • Приципц Responsible Design не противоречат AGILE (XP)
  • При внедрении каждой методики / практики нужно прогнать ее по принципам Responsible Design, чтобы на примере конкретной задачи и комады осознать как улучшадрся показатели (Accountability, Transparansy, Responsobility)

11. Метрики
Последняя тема, которую мы затронули – это определение приложения с лучшим дизайном кода. Для начала были выписаны метрики, по которым хотелось бы определить лучший дизайн.

Идея:

  • выбрать метрику
  • разбить все показатели этой метрики на группы (кластеры), с экспоненциальным ростом количества попаданий к важдую группу
  • пролагарифмировать показатели,
  • Получить приближение результатов прямой, методом наименьших квадратов
  • Определить угол наклона
  • Сравнить угол наклона прямой для разных проектов

Процесс определения приложения с лучшим дизайном был примерно следующим

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

Цели:

  • Определить приложение с лучшим дизайном
  • Определить инструменты / способы для измерения метрик
  • Определить измеримость метрик
  • Практика работах в парах
  • Опробовать новый режим работы, который должнен был продемонстрировать Accountability, Transparansy, Responsobility

Итоги:

  • Четкого ответа на главный вопрос не удалось получить
  • Часть используемых метрик и способов их измерения у меня вызывают большие сомнения
  • После обеда часть пар выключились из процесса работы или вели ее не в предложенном стиле. Чтобы избежать это следовало, например, разбить всю работу на 2-4 итерации.

Выводы:

  • Чаще всего лучшие проекты имеют лучшие показатели метрик
  • Есть бесплатные инструменты для измерения большого числа метрик.
  • Нельзя считать средние показатели для метрик, важно распределение.

Так же смотри:
http://www.usu.ru/usu/opencms/today/events/2009/03/event_0012.html
http://xoposhiy.livejournal.com/62134.html
http://xoposhiy.livejournal.com/61926.html












Вам это будет интересно!

  • Про завершение тренинга по УПП
  • 1-й цикл тренинга «Базовые техники Эриксоновского гипноза»
  • Самые смелые дизайны интерьеров спальных комнат (часть 1)
  • Как вырастить ОСОЗНАННЫХ детей?!
  • Последний экзамен?


  • Последние новости


    Бхастрика

    Техника бхастрики имеет много общего с капалабхати, но существуют и значительные различия между этими упражнениями. Йоги часто расценивают капалабхати как облегченную разновидность бхастрики, что позволяет использовать последнюю для освоения более сложного этапа очистительной дыхательной гимнастики. Для выполнения бхастрики наибо...
    Читать далее »

    Дхарана и дхьяна, или концентрация и медитация

    Дхарана и дхьяна – шестая и седьмая ступени системы Патанджали. Наряду с пратьяхарой и самадхи они составляют раджа-йогу. Чем отличается концентрация от медитации? При концентрации включается только разум; при медитации – сердце и все существо в целом. При концентрации разум фиксируется на каком-то определенном предмете. Меди...
    Читать далее »

    Йога пальцев

    В руках расположены удивительные энергетические каналы, связанные с целой функциональной системой и носящие название органа, на который они замыкаются. Положение рук – мудра, строго определено каноном и имеет тайный символический смысл. Знатоки мудры насчитывают сотни различных значений в комбинациях и фигурах, изображаемых пальцами. Йо...
    Читать далее »

    Массаж глаз

    Его выполняют, когда чувствуют, что глаза устали во время какой-либо работы (чтение, шитье). Это упражнение может входить в комплекс, но может быть и самостоятельным. 1. Через ноздри делают спокойный и полный вдох. Приближают ладони к глазам так, чтобы получился угол, равный 45°. 2. Через нос делают выдох. В этот момент начинают мас...
    Читать далее »

    Заключение

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

    Наули

    Данное упражнение йоги называют устранением прямых мышц живота. Действие наули не имеет ничего общего с уддияной бандхой, хотя отдельные элементы выполнения обоих упражнений совпадают. Исходное положение для наули то же самое, что и для уддияны бандхи. Сначала нужно вдохнуть максимально полно, а затем выполнить уддияну баядху. После этого прямые мышцы живота напрягаются, а живот выпячиваетс...
    Читать далее »

    Процедура полоскания горла

    Необходимо также заботиться о здоровье горла. Миндалины, расположенные в горле, – часть иммунной системы. Они представляют собой барьер, защищающий организм от болезнетворных микробов, проникающих извне. Процедуры вамана-дхаоти и джаля-нети весьма благотворно влияют на состояние горла. Для борьбы с заболеваниями горла есть комплекс упражнений. Гигиеническое полоскание горла солонова...
    Читать далее »