Zwinność w praktyce, Jarek Potiuk

Post on 02-Dec-2014

1.246 views 0 download

description

Zwinność w praktyce, Jarek Potiuk, "Cykl szkoleń dla start-upów, BIC Summer Start" - http://MamStartup.pl

Transcript of Zwinność w praktyce, Jarek Potiuk

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ść