Z minulej prednášky

Practies: Refactoring, technical debt
Pokiaľ SCRUM uponáhľa a nehľadí sa, ďalšie práca na projekte sa stáva ťažká a nemožná. 
Preto je potrebné spolu s pridaním funkčnosti adekvtne refaktorovať. Technický dlh je totiž ako to meno naznačje tiež dlh a nokoniec ho bude treba zaplatiť.

Lean

Pozrite si lean principy:
https://en.wikipedia.org/wiki/Lean_software_development
*Koreňe: TOYOTA (koho zaujíma môže si pozrieť detajly o histórii lean) https://en.wikipedia.org/wiki/Lean_manufacturing

O vztahu lean a agile (preleťte)
http://martinfowler.com/bliki/AgileVersusLean.html

Zvýrazňujem:
“Waste-removal should take place iteratively until even seemingly essential processes and procedures are liquidated.” (wiki)
Dookumentacia nie je odpad: Just barely good enough documentation. Toto mozete preskrolovať:
http://agilemodeling.com/essays/barelyGoodEnough.html 

Co je odpad závisí od času – nejaky feature (aj dolezity)môže byť odpadom  na začiatku projektu.
Pozrite si toto od 2:18.
https://www.youtube.com/watch?v=HE_xHVYwHw8

Lean startup 

Metodiky vývoja softvéru nám hovoria ako vyvíjať softver, ale často nám neuspokojivo odpovedajú na otázku čo a prečo vyvíjať. Riziko, že celý projekt je v podstate zbytočný znáša vo väčšej časti zadávateľ projektu. Lean startup sa snaží riešiť práve toto.

Toto nie je nutne o startupoch … podľa http://theleanstartup.com/book
“Startup: A human institution designed to create new products and services under conditions of extreme uncerntainty.”
Lean princípy sú dôležité – startupy sa nevyuhnutne môžu skončiť failom.  Fail fast je lepšie ako fail slow. 

Princípy lean startup: https://en.wikipedia.org/wiki/Lean_startup#Definitions

LEAN vs agile (odporucam pozrite 6:00-cca 12:00)
https://www.youtube.com/watch?v=V5p8m1IjJoA

EricRies (odporucam 16:20-22:30, ale cele je to dost dobre)
https://www.youtube.com/watch?v=fEvKo90qBns

Testovanie
Testovanie toto pokryl +- Tomáš:
Testable code: Little side effects, dependency injection, Mock, Stub, Spies
K depoendency injection nejaké materiály už dal + myslím si, že to na prednáške bolo vidieť pomerne výrazne, k ostatnym veciam (ak ste ich na prednáške nezachytili) si pozrite prvú polku:
https://semaphoreci.com/community/tutorials/best-practices-for-spies-stubs-and-mocks-in-sinon-js

Validation: "Are we trying to make the right thing?", i.e., is the product specified to the user's actual needs? 
Verification: "Have we made what we were trying to make?", i.e., does the product conform to the specifications? 
Ako najst bugy: tu su metódy a pozorované percentá  úspešnosti (pozrite si len graf)
https://kev.inburke.com/kevin/the-best-ways-to-find-bugs-in-your-code
Pre všeobecnejší prehľad si preskrolujte (+ počas skrolovania si vyjasnite pojmy ktorym ste na grafe z predchádzajúceho linku nerozumeli):
https://en.wikipedia.org/wiki/Software_testing

V pripade extrémnych požiadaviek na bezchybnosť: Formálna verifikácia – dokázať správnosť programu + automated proof checking

Code review (zlahka prejsť):
https://en.wikipedia.org/wiki/Code_review
https://en.wikipedia.org/wiki/Automated_code_review

Type system

Tomáš vám na prednáške ukazoval aký je Python krásne dinamický – defaultne má duck typing – doležité, je či objekt má vhodné atribúty/metódy .. a aj to sa kontroluje až v runtime. Výhoda je jasná – ľahšie sa píše kód.

Opak silné tipovanie – 
umožňuje kompileru oprimalizovať (nie veľmi dôležíté)
umožňuje odhaliť niektoré typy chýb už počas kompilácie – môže sa hodiť (e.g. rôzne typi stringov HtmlString DatabaseString .. kompiler nedovoli urobit chybu)

S typovaním sa dá dojsť ďalej ako sa zdá... (prvy odstavec)
https://en.wikipedia.org/wiki/Dependent_type#Dependent_pair_type