zwinność w praktyce, jarek potiuk
DESCRIPTION
Zwinność w praktyce, Jarek Potiuk, "Cykl szkoleń dla start-upów, BIC Summer Start" - http://MamStartup.plTRANSCRIPT
Zwinność w praktyce
Dla kogo?
● Założyciele startupów
● Programiści
● Pozostali członkowie zespołów
Po co?
● Żeby móc WSPÓLNIE rozwijać swój projekt: efektywnie
● Żeby być gotowym na sukces
● Żeby nie kosztowało to za wieleczasunerwówpieniędzy
O czym (luźno)
● Filozofia tworzenia oprogramowania ● Jak przyciągać dobrych ludzi● Jak się skalować● Jak wybierać technologie● Jakie narzędzia używać
Metodologie tradycyjne
Inżynieria ”normalna”
● Długa tradycja ● Konieczny ”duży projekt” przed konstrukcją● Trudno zmienić decyzję● Materiały konstrukcyjne● Stabilne wymagania● Powtarzalność wyników
Inżynieria ”software'owa”
● Krótka tradycja● Wiele metod osiągnięcia tego samego celu● Każdy system jest ”nowy”● Software można wymienić● Etap ”konstrukcji” wymagający myślenia● Ciągle zmieniające się wymagania
Programiści: Budowniczy czy ogrodnicy
Manifest agile http://agilemanifesto.org
Poprzez wytwarzanie oprogramowania oraz pomaganie innym w tym zakresie odkrywamy lepsze sposoby realizowania tej pracy. W wyniku tych doświadczeń zaczęliśmy przedkładać:
● osoby i interakcje nad procesy i narzędzia.● Działające oprogramowanie nad dokładną dokumentację.● Współpracę z klientem nad negocjację umów.● Reakcja na zmiany nad realizowanie planu.
Oznacza to, że wprawdzie doceniamy to co wymieniono po prawej stronie, to jednak bardziej cenimy to co wymieniono po lewej.
Manifest mistrzów sztuki programowaniaPoprzeczka w górę
Jako ambitni mistrzowie sztuki programowania nieustannie podnosimy poprzeczkę profesjonalizmu poprzez praktykę oraz pomoc innym w jej poznawaniu. Dzięki temu zaczęliśmy doceniać:
● nie tylko oprogramowanie które działa, ale jest dobrze wykonane,● nie tylko reakcja na zmiany, ale ciągłe zwiększanie wartości,● nie tylko osoby i interakcje, ale społeczność profesjonalistów, ● nie tylko współpracę z klientami, ale skuteczne partnerstwo.
Doszliśmy więc do wniosku, że elementy wymienione po prawej są niezbędne przy realizacji tego, co wymieniono po lewej.
Podstawowe praktyki "agile"
● Samo-organizujący się zespół● Zespół mocą podejmowania decyzji● Częste dostarczanie działającego rozwiązania● Przytulanie zmiany● Planowanie czasu na naukę● Otwarta komunikacja● Testowanie wszystkiego● Automatyzacja wszystkiego ● Przecieranie szlaku (innym)● Minimalizacja WIP (Work in Progress)● Minimalizacja strat (ang. waste)
Metodologie
● SCRUM● Kanban●
Ale najważniejszy jest sposób myślenia:- brak ortodoksji- reakcja na zmiany- myślenie
SCRUM
Proces Scrum
Backlog
Ogarnięcie tego wszystkiego
Narzędzia IT (tak tylko poglądowo :) )● Project management● Issue tracking● Time tracking● Project documentation management ● Wiki● Source code version control● Code review● Code update notifications● Programming IDEs● Static code analysis● Code coverage● Automated build● Automated unit testing● Automated functional testing● Automated performance testing● Test case management● Continuous integration● Artifact management
Po co narzędzia?
● nie jest to cel sam w sobie● istotna jest wartość dodana
○ automatyczne testy -> elastyczność○ przejrzysty kod -> łatwość skalowania○ ciągła integracja -> elastyczność○ śledzenie problemów -> jakość○ kontrola wersji -> bezpieczeństwo
Wybór technologii
● Dodawanie wartości● Nowoczesne technologie:
○ efektywne tworzenie ○ więcej rzeczy "z pudełka"○ większe zainteresowanie programistów
● Dostępność programistów (?)● Elastyczność● Przytul zmianę● Proof-of-concept (pociski smugowe)
Jak zachęcić programistów
● Nowoczesne technologie● Duża władza/Duża odpowiedzialność● Traktowanie wszystkich jak partnerów● Dobre środowisko pracy● Elastyczność czasu● Możliwość nauki● Mentoring● Dzielenie się sukcesem● Jasne perspektywy zysku● Wpływ na wyniki● Szcerość, otwartość