Joelův test. 12 kroků k lepšímu programování. Jaroslav Šnajdr

Podobné dokumenty
Řízení reálných projektů, agilní metodiky

Jak testovat software v praxi. aneb šetříme svůj vlastní čas

Obecné informace o cvičeních

Proces vývoje HRIS Vema (Human Resources Information System) Jaroslav Šmarda

CASE nástroje. Jaroslav Žáček

1 Úvod 1.1 Vlastnosti programového vybavení (SW)

Agenda. Docházka Návrat k minulému praktickému cvičení Zápočtové práce. Dokumentace. Dotazy, přání, stížnosti. Co, jak a proč dokumentovat

Využití chemie v procesu testování webových aplikací vytvořených pomocí technologií PHP a Java

1 Nástroje pro správu verzí. 1.1 Pojmy:

TREND POPIS ODPOVĚDNOSTI PRACOVNÍKA MANAŽER VÝVOJE

Vývojové prostředí, maintenance

Nebojte se přiznat, že potřebujete SQA

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Vývoj řízený testy Test Driven Development

Agenda. Docházka Odhadování Neohlášený test Vedení projektů Historie projektů

Agenda. Smysl teoretických cvičení Klasifikace Obecná pravidla Bugzilla Klasické problémy Poznámky k jednotlivým pojmům Antipatterns Testování testů

Profesionální služby kolem Linuxu

Testování Java EE aplikací Petr Adámek

Obsah. Úvod 9 Poděkování 10 Co je obsahem této knihy 10 Pro koho je tato kniha určena 11 Zpětná vazba od čtenářů 11 Errata 11

Rozvoj a údržba systémů

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

Project management. Příprava projektu Zahájení High level plánování. Vykonávání Detailní plánování Vykonávání Řízení a monitorování

Návrh softwarových systém. Návrh softwarových systémů

PROBLÉMY A SPECIFIKA VÝVOJE SOFTWARE

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

SCM = Source Code Management software, základní typologie rozdělení je podle počtu a umístění základního úložiště kódu(=repository) na:

Návrh softwarových systémů - úvod, motivace

A to vše díky lidem, kteří Red Hat utváří svým nadšením a svými nápady. Přidáte se do našeho brněnského týmu i Vy?

Verzovací systémy. Pořádek především!

PŘEDSTAVENÍ - KAREL HÁJEK Nasazení SD ve skupině ČEZ

ZEMĚMĚŘICKÝ ÚŘAD. Výzkum a vývoj programového aparátu pro generalizaci státního mapového díla. Ing. Přemysl JINDRÁK

Analýza a Návrh. Analýza

Vývoj programů. ÚVOD DO OPERAČNÍCH SYSTÉMŮ

programátor vs. vývojář

CM, Prostředí, Údržba

Ročníkový projekt. Jaroslav Žáček

Extrémně silné zabezpečení mobilního přístupu do sítě.

Jak testovat software v praxi

jako základní princip vývoje svobodného softwaru

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Procesní dokumentace Process Management. Pavel Čejka

Open source a komerční linuxové distribuce Libor Pecháček

Matematika v programovacích

Nástroje pro průběžnou integraci a testování

Vedení projektů, Odhadování, historie

Životní cyklus vývoje SW. Jaroslav Žáček

vjj 1. Windows programming. krátká nahlédnutí za oponu

Aplikační protokoly CAN pro dieselelektrické lokomotivy

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Kam patří Uživatelské testování v uživatelském výzkumu a procesu návrhu a realizace produktu

Myšlenkové mapy v Linuxu

Ročníkový projekt. Jaroslav Žáček

Automatizace ST optimalizace. Lukas Vozda Analytics & Automation

CASE. Jaroslav Žáček

Jak programovat Tinykeyer?

HelpDesk. Co je HelpDesk? Komu je aplikace určena? Co vám přinese?

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Alternativy k SAP HANA appliance? Představení možnosti TDI a cloudové infrastruktury

Testování softwaru. 10. dubna Bořek Zelinka

Zkušenosti nejen z provozu Portálu občana. Jan Vlasák NAKIT Miroslav Vacula Jihomoravský kraj Václav Koudele - Microsoft

VY_32_INOVACE_INF.20. OS Linux

O projektu Nasazení OpenOffice.org v praxi

Informační systémy ve strojírenství

14 Úvod do plánování projektu Řízení projektu

Vývoj informačních systémů. Přehled témat a úkolů

Pragmatická filozofie Můj zdrojový kód snědla kočka 20 Přijímání odpovědnosti Entropie softwaru 21 Být schopen uhasit požár 22

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Informační systémy. Jaroslav Žáček

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: AVTK. Úvod. strana 1

Seminární práce Vývoj informačního systému. Manažerská informatika 2 Ing. Miroslav Lorenc

ÚVOD DO SOFTWAROVÉHO INŽENÝRSTVÍ

Simluátor Trilobota. (projekt do předmětu ROB)

Angličtina program k procvičování slovní zásoby

Testování SW produktů. Jiří Sochor, Jaroslav Ráček 1

Náklady na odstranění chyby stoupají, v čím pozdější fázi životního cyklu aplikace je chyba nalezena.

14. května 2012, Brno

12 Zajištění kvality programového vybavení

TSM for Virtual Environments Data Protection for VMware v6.3. Ondřej Bláha CEE+R Tivoli Storage Team Leader. TSM architektura IBM Corporation

Metodika analýzy. Příloha č. 1

12 Zajištění kvality programového vybavení

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

POČÍTAČE A PROGRAMOVÁNÍ

14 Úvod do plánování projektu Řízení projektu

O projektu OpenOffice.org a IBM OS/2 OS/2 a Open Source

Novinky v projektech Knot DNS a Knot Resolver. Daniel Salzman

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

Metodiky pro automatické testování webové aplikace. Ondřej Melkes, Martin Komenda

Obsah. Zpracoval:

Zajištění kvality programového vybavení - testování

Jakub Čermák Microsoft Student Partner

Úvod do softwarového inženýrství a týmového vývoje

P R E Z E N T A C E Max Communicator 9

PRINCIPY OPERAČNÍCH SYSTÉMŮ

SOFTWAROVÉ INŽENÝRSTVÍ Řízení IT projektů

3 Inženýrství systémů založených na počítačích (Computer-based System Engineering)

Produkty třídy BYZNYS

ČÁST 1. Základy 32bitového programování ve Windows

3 Inženýrství systémů založených na počítačích (Computer-based System Engineering)

Vývoj informačních systémů. Přehled témat a úkolů

Transkript:

Joelův test 12 kroků k lepšímu programování Jaroslav Šnajdr

i Co je Joelův test?

Co je to? 12 otázek o vašem vývojovém týmu Každá odpověď ano = 1 bod Jaký je výsledek? Plných 12 bodů: dobře organizovaný, produktivní tým Méně než 10 bodů: vážné problémy K čemu je to dobré? Zorganizujte si svůj projekt nebo firmu Otestujte si potenciálního zaměstnavatele Co potom? Každý bod je vstupní branou do složitějších metodik

ii Kdo je Joel Spolsky?

Joel on Software: www.joelonsoftware.com Publicista, blogger, programátor, manažer, podnikatel Zakladatel Fog Creek Software v New Yorku Autor 4 knih

1 Používáte systém pro správu verzí?

Kam ukládáte zdrojové kódy? Co umí Version Control System? Check-out Check-in Tag Branch Merge Proč ho potřebujete? Pomáhá při spolupráci mezi vývojáři Udržuje historii změn a jejich autorech Branch & Merge: paralelní vývoj, experimenty Bezbolestné zálohování Nejznámější produkty CVS Subversion Software Configuration Management

2 Dokážete udělat build v jednom kroku?

Zdrojový kód exe, dll,... Instalační balík Vše automaticky, v jednom kroku Všechny verze, jazykové mutace, platformy Proč? Náročný proces náchylný na chyby Nové verze často vydáváme ve stresu Možné problémy Některé komponenty jsou obtížně skriptovatelné - installery Inkrementální build po komponentách

3 Děláte denní buildy?

Denní build je: Automatický Pravidelný Kompletní Proč? Vývojáři commitují chyby, které znemožňují ostatním pracovat Chyby v denním buildu mají nejvyšší prioritu Pravidelné zásobování QA, zákazníků a ostatních zájemců Archiv starších verzí pro dohledávání chyb Continuous integration Agilní a extrémní metodiky

4 Máte databázi chyb?

V paměti udržíme nejvýše 3 poslední chyby Nezbytné i pro one-man team Každý bug musí mít: Kroky k reprodukci Očekávané chování Pozorované chování Komu je chyba přiřazena Opraveno: ano/ne Další užitečná pole: Závažnost Priorita Výsledek řešení Bugzilla

5 Opravujete chyby předtím, než začnete psát nový kód?

Náklady na opravu chyby rostou s časem: Syntaktická chyba sekundy Unit test minuty QA dny Vydaný produkt měsíce Časové odhady na opravu chyb jsou těžké Nové vlastnosti + oprava chyb = nespolehlivý plán Řízení kvality ve výrobě Jidoka (autonomation): zastavení linky při výskytu problému Andon: signální světlo

6 Máte aktualizovaný plán prací?

Nikomu se nechce dělat projektový plán Náročná mravenčí práce, vyžaduje přemýšlení Plány málokdy vycházejí Tři funkce projektového plánu 1. Závazek vůči ostatním Obchodní oddělení Zákazník 2. Konkrétní úkoly, konkrétní lidé Úkoly v rozsahu hodin: přemýšlení, závislosti Omezení rozsahu 3. Sledování postupu Priority, rizika Plán je živý dokument Původní odhad Současný odhad Delta 8 hodin 12 hodin +4

7 Píšete specifikace?

Specifikace pomáhá implementovat správný produkt Nutná pro diskusi, revizi, změny a zpětnou vazbu Změna ve specifikaci je snadná, ve funkčním kódu skoro nemožná Nezbytná pro kvalitní návrh Umožňuje komunikaci 1:N Funkční specifikace Uživatelský pohled Okna, stránky, dialogy, volby, stavové diagramy Technická specifikace Návod pro implementaci Algoritmy, datové struktury, databázové modely, jazyky a nástroje

8 Pracují vývojáři v klidném prostředí?

Programování je znalostní, tvůrčí práce Tom DeMarco, Timothy Lister: Peopleware Režim největší produktivity: tzv. zone neboli flow Dostat se do zóny trvá přibližně 15 minut Častá vyrušení znemožňují dostat se do zóny Při programování je důležitá krátkodobá paměť Doporučeny oddělené kanceláře 1 až 3 lidé Proč je to často problém? Samostatná práce vs. komunikace v týmu Open space je levnější

9 Používáte nejlepší dostupné nástroje?

Co všechno nám pomáhá při práci: Rychlý počítač = rychlý překlad, rychlé testy Více počítačů: Windows, Linux, Mac OS X Velké LCD = více zdrojového kódu, více oken v debuggeru Softwarové nástroje: profilery, statická analýza Testovací nástroje: počítače, sítě, Vmware Velké disky Odborná literatura: firemní knihovna

10 Máte testery?

Kvalitní software vyžaduje dedikované testery Můžou testovat programátoři? Programátor nevidí vlastní chyby Testuje svůj program stále stejným způsobem Testování na zákaznících nekončí dobře Samostatné a nezávislé QA oddělení 1 až 2 testeři na jednoho programátora Problém: dobří testeři jsou vzácní a nechtějí být testery Automatizace testů Komplexní zátěžové testy

11 Píší uchazeči při přijímacím pohovoru kód?

Přijímání nových pracovníků je nejdůležitější rozhodnutí Častá, ale nesprávná kritéria: Zajímavý životopis Testy a, b, c na znalosti API Příjemný rozhovor Důležité je, aby umět to co bude dělat: programovat Krátké příklady na kódování Jednoduchý OO design Joelova kritéria: Smart & Gets Things Done Smart: umí myslet Gets Things Done: dosahuje praktických výsledků

12 Testujete uživatelské rozhraní na lidech?

Test použitelnosti: testování rozhraní na lidech Požádejte kolegu nebo kamaráda, aby zkusil používat vaše GUI Prvních 5 uživatelů najde 95% problémů I když nemáte zkušenosti s návrhem GUI, test použitelnosti vám pomůže Pro UI design je důležitá empatie s uživatelem Nenuťte ho přemýšlet Zjednodušujte Nesnažte se mít všechno konfigurovatelné Nejlepší technologický design je pro uživatele neviditelný

Otázky?