Как часто выпускать с Lean/Kanban? [закрытый]

Думайте о нем этот путь:

итератор является просто звучащим сроком воображения для объекта, который имеет next() метод. Таким образом, функция, к которой приводят, заканчивает тем, что была чем-то вроде этого:

Исходная версия:

def some_function():
    for i in xrange(4):
        yield i

for i in some_function():
    print i

Это в основном, что интерпретатор Python делает с вышеупомянутым кодом:

class it:
    def __init__(self):
        # Start at -1 so that we get 0 when we add 1 below.
        self.count = -1

    # The __iter__ method will be called once by the 'for' loop.
    # The rest of the magic happens on the object returned by this method.
    # In this case it is the object itself.
    def __iter__(self):
        return self

    # The next method will be called repeatedly by the 'for' loop
    # until it raises StopIteration.
    def next(self):
        self.count += 1
        if self.count < 4:
            return self.count
        else:
            # A StopIteration exception is raised
            # to signal that the iterator is done.
            # This is caught implicitly by the 'for' loop.
            raise StopIteration

def some_func():
    return it()

for i in some_func():
    print i

Для большего понимания относительно того, что происходит негласно, for, цикл может быть переписан к этому:

iterator = some_func()
try:
    while 1:
        print iterator.next()
except StopIteration:
    pass

, который имеет больше смысла или просто смущает Вас больше?:)

я должен отметить, что это упрощение в иллюстративных целях.:)

10
задан skaffman 25 July 2011 в 22:19
поделиться

5 ответов

Проблема, которую вы описываете, больше похожа на программу управления версиями - как отделить готовые функции от незавершенных, чем на Канбан. Кажется, вы накладываете тяжелый штраф на запуск множества веток - что имеет место в системах управления версиями, не основанных на идее нескольких ветвей. В распределенных системах управления исходным кодом, таких как GIT и Mercury, все является ветвью, и иметь их и работать с ними несложно.

Я полагаю, вы читали этот блог о Канбан vs SCRUM и связанное с ним практическое руководство?

И, отвечая на ваш вопрос, да, вы можете часто выпускать релизы с помощью Kanban.

5
ответ дан 4 December 2019 в 00:26
поделиться

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

1
ответ дан 4 December 2019 в 00:26
поделиться

Для управления версиями я настоятельно рекомендую Perforce . Это делает ветвление и интеграцию изменений из других ветвей относительно простым и предоставляет лучший интерфейс для управления версиями, который я видел до сих пор.

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

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

0
ответ дан 4 December 2019 в 00:26
поделиться

The way we handled weekly releases on a sustained engineering project that used Kanban was to implement a branching strategy. The devs worked in a sandbox branch, and made one checkin per work item. Our testers would test the work item in the sandbox; if it passed the regression tests the checkin would be migrated to our release branch. We locked the release branch from noon Monday until the release went out (usually by Wednesday, occasionally by Thursday, the drop dead date was Friday), and re-ran the regression tests for all migrated checkins as well as integration tests for the product, dropping a release once all of the tests passed.

This strategy let devs continually be working on issues without being frozen out of their branch during the release process. It also let them work on issues that took more than a week to resolve; if it wasn't checked in and tested/approved it didn't get migrated.

If I were running Kanban for a new version of a project, I'd use a similar strategy but group all related checkins as a 'feature', migrating a feature en masse to the release branch once the feature was done and then performing additional unit/integration/acceptance/regression testing in the release branch before dropping a release with that feature. Note that a key concept of Kanban is limiting work in progress, so I might restrict my team to work on one feature at a time (this would probably be several work items/user stories).

1
ответ дан 4 December 2019 в 00:26
поделиться

Здесь есть нечто большее, чем просто контроль версий, но ваш выбор TFS ограничит вас. Когда в 2004 году зародился проект Burton, Microsoft не обращала внимания на Agile, не говоря уже о Lean. Некоторое время это будет вашим самым слабым механическим звеном. Ваши взломы должны были быть вызваны тем, что CodePlex принял Mercurial после того, как был предложен сообществу Microsoft в качестве примерного потомка реализации TFS.

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

Скрам обычно интерпретируется как утверждение, что нетехнические «Владельцы продуктов» могут определять график работы исключительно на основе своих собственных интересов. Если вы пойдете по этому пути, вы понесете много потерь, не воспользуясь возможностью выполнять совместную работу, которая должна быть вместе. Совместная работа не может определяться только пожеланиями Владельца продукта. Также необходимо учитывать технические возможности и возможности персонала (навыков).

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

Эта роль резко контрастирует с утверждением Скрама.Главный инженер в Lean-команде сам (или она) является голосом клиента, и роль владельца продукта не нужна.

«Владелец продукта» Scrum - это признание недостаточно развитой роли в организациях, занимающихся разработкой программного обеспечения, но это далеко не устойчивое решение, которое позволяет постоянно избегать потерь. Роль «архитектора программного обеспечения» также часто оказывается недостаточной, так как в некоторых субкультурах разработчиков архитектор стал слишком удален от работы.

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

1
ответ дан 4 December 2019 в 00:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: