3. Po co?
● Żeby móc WSPÓLNIE rozwijać swój projekt:
efektywnie
● Żeby być gotowym na sukces
● Żeby nie kosztowało to za wiele
czasu
nerwów
pieniędzy
4. O czym (luźno)
● Filozofia tworzenia oprogramowania
● Jak przyciągać dobrych ludzi
● Jak się skalować
● Jak wybierać technologie
● Jakie narzędzia używać
7. 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
9. 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.
10. Manifest mistrzów sztuki programowania
Poprzeczka 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.
11. 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)
17. 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
18. 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
19. 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)
20. 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ść