Co to jest Lean Software Development?
Lean Software Development to paradygmat, który opisuje teoretyczny idealny zestaw warunków do tworzenia oprogramowania. Ważne jest, aby myśleć o Lean Software Development jako o jednej z wielu teorii tworzenia oprogramowania, z których każda ma swoje zalety i wady. Korzystając z modelu Lean Software Development, należy zrozumieć siedem zasadniczych kwestii: wyeliminować marnotrawstwo, wzmocnić naukę, spóźnione podejmowanie decyzji, szybką dostawę, wzmocnienie zespołu, budowanie integralności i wizualizację całości.
Eliminacja odpadów jest zarówno celem oszczędności czasu, jak i pieniędzy. Redukując ilość nadwyżki kodu i zbędnych funkcji w Lean Software Development, zespół programistów oszczędza pieniądze i dostarcza dokładniejszy kod użytkownikowi końcowemu. Dlatego programy tworzone przy użyciu modelu Lean Software są mniej zasobochłonne i bardziej skoncentrowane.
Wzmocnienie uczenia się w Lean Software Development odnosi się do koncepcji stosowania krótkich cykli między fazami testowania. Teoretycznie zapewnia to z kolei bardziej stałe informacje zwrotne dla inżynierów, umożliwiając identyfikację problemów na wcześniejszym etapie łańcucha rozwoju. Użytkownicy końcowi uczestniczą w tych fazach, zapewniając, że wersje beta programu odpowiadają ich potrzebom.
Późne podejmowanie decyzji pozwala na dodatkową elastyczność w harmonogramie projektowania, umożliwiając podejmowanie decyzji dopiero po zebraniu maksymalnej liczby faktów. Na przykład podjęcie decyzji o rozpoczęciu programowania, aby Program X miał Funkcje A, B i C, może wydawać się dobrym pomysłem, dopóki testy na miejscu nie wykażą, że tych funkcji nie można ukończyć na czas. W Lean Software Development decyzja o włączeniu A, B i C byłaby opóźniona, dopóki nie będzie pewne, czy to rzeczywiście możliwe.
Szybka dostawa odnosi się do preferencji polegającej na dostarczeniu użytkownikowi końcowemu działającego modelu beta tak szybko, jak to możliwe - być może, gdy program jest ukończony w 85 do 90 procentach - i kontynuowaniu łatania i uaktualniania tego modelu przez cały okres istnienia programu. Kontrastuje to z oczekiwaniem na ukończenie programu w 100% i dostarczeniem go wtedy. Teoretycznie pozwala to użytkownikowi końcowemu wycisnąć więcej życia z programu, a także pozwala zespołowi programistycznemu uzyskać dodatkowe informacje zwrotne od działających modeli beta.
Wzmocnienie zespołu oznacza zwiększenie autonomii zespołu podczas procesu programowania. W rezultacie teoretycznie będą bardziej inwestować w projekt. Dodatkowo oznacza to zapewnienie im dostępu do klientów, bardziej zbliżając oczekiwania do rzeczywistej dostawy.
Wreszcie, budowanie integralności i postrzeganie całości skupia się na postrzeganiu programu jako pojedynczej jednostki. Porównaj to z innymi systemami, które postrzegają program jako mozaikę różnych systemów. Ten „ogólny obraz” myślenia teoretycznie zapewnia bardziej kompletny produkt, ponieważ cały zespół znajduje się na tej samej stronie, jeśli chodzi o gotowy produkt.