WebExpo 2013 – poznámky

Publikoval admin v

Velice mě v pátek zklamal organizátor v Development Hall, který uváděl ve své lámané „angličtině“ všechny přednášející. To mi od organizátorů nepřijde jako zvládnutý projekt.

V Design Hall měli technické problémy, které posunuli celý program o 15min, což nám trošku nabouralo naše plány.

Skvělý moderátor byl ovšem v Node5 Stage. Founder Stories od Fredrika Debonga a Jakuba Nešetřila jsem díky tomu náramně užil. Děkuji.

Část A: Pro vývojáře

Část B: Pro projektové a produktové manažery a designery

Pro vývojáře

Jakub Mrozek: Single-page applications (SPA)

  • Apiary – nástroj pro vytváření a testování API
  • machapito – nástroj pro Frontend First vývoj
  • SPA mohou fungovat i offline
  • PouchDB (offline JS DB inspirovaná CouchDB)
  • existuje způsob generování URL pro Google i pro Seznam (ten je striktnější)
  • Mocha – JS Test framework
  • SuperTest – testovací nástroj pro Node.js HTTP server
  • scenario test runner (jako selenium)
  • travis (continuous integration)
  • Bootstrap
  • Yeoman (generátor …)
  • Grunt – The JavaScript Task Runner
  • summary

Ivan Potančok: Prototyping with bootstrap & less

  • Bootstrap, Less
  • předvedl svůj postup vytváření webů
  • Specifikace
  • Náčrt webu (ne wireframe)
  • Místo wireframe vytváří prototyp pomocí Bootstrapu, což má uživateli přiblížit blíž k realitě (klikatelné formuláře) a zároveň ušetří práci při psaní HTML šablon
  • Grafický návrh
  • Šablony (pouze přizpůsobení grafickému návrhu, základ už je z prototypu)
  • Vytvoření prorotypu musí dělat kódér (nedá se to naklikat)

Darcy Clarke (Canada): Documenting Interfaces

  • dokumentace musí být snadno udržovatelná a standardizovaná, aby byla dobře čitelná
  • stále existují bariéry v komunikaci mezi jednotlivými teamy/lidmi, kvalitní dokumentace může komunikaci zlepšit (ne nahradit)
  • komunikace musí „žít“ spolu s projektem, ideálně aby se automaticky aktualizovala
  • Parsování komentářů
  • komentáře pro CSS
  • KSS – nástroj pro generování dokumentace z CSS (used by github)
  • DSS – nástroj pro generování dokumentace od D. Clarke

Seigerwald: Huge Web Apps

  • vychvaloval staticky typované JS jazyky/frameworky
  • zmiňoval Dart
  • TypeScript je dobrý tah od Microsoftu, je velmi podobný jazykům PHP/C#/Java
  • Polymer (evoluce Angularu)
  • Facebook React – framework na podobné úrovni jako Angular. React vkládá HTML do JS kódu
  • Angular/Embar vs React je jako HTML vs code … HTML nelze debugovat
  • často se kombinuje Angular/React a Backbone, protože Angular/React nemá modely
  • architektura nemá být typu rozdělena podle typu, ale podle vlastností/funkcí (design it by features)
  • Closure Linter – nástroj na kontrolu stylu kódování
  • wiring = factoring methods, logic = classes … separate logic and wiring
  • Steida says it’s good to have kind of logic and markup (HTML) together … I guess he means logic of the view
  • Moc mi z té jeho přednášky nevyplynulo, že by mluvil o rozsáhlých webových aplikacích

S.Battana: Dependency injection and dependency manager

  • odstraňte cyklické závislosti
  • RequireJS
    • asynchronní načítání
    • i pro txt, json, css
    • client-side
  • r.js is builder pro sloučení vložených souborů přes RequireJS do jednoho souboru
  • browserify
    • používá common.js
    • funguje i na serveru
    • synchronní
  • npm
    • package management (dependency between packages)
    • server-side only
  • bower
    • front-end package management
    • může používat i GIT repozitáře
  • Neukládejte zdrojáky knihoven třetích stran, které máte nalinkované pomocí výše uvdených nástrojů

Nick Fisher (Germany, SoundCloud): Making the SPA work

  • managing models … jedna instance každého modelu
  • memory leaks … uvolňujte paměť
  • css management … problémy: fragility, zvyšte rychlost, velikost, udržovatelnost
  • SoundCloud řešení
    • one view = one css
    • konvence pojmenování css tříd s namespace__csstřída ale spoužitím gzip, takže nevadí při přenosu dlouhé názvy
    • css to jss … pomocí JS modulu a importu CSS v JS
  • waveform …. canvas using png as source, problems with drawing playlist (e.g. 800 tracks) … casching scaled images, typed arrays … at the end there is no reason to draw this exactly, so they just draw it somehow. Improved with server side calculation
  • think about whats imprtontant and and think as user not like engineer

Honza Král, Karel Minařík – Elasticsearch

  • nejen pro vyhlávaní ale poskytuje i analytické nástroje a úložiště pro logy
  • pluginy (nic moc jsem nenašel)
  • filtery (pro zúžení výběru vyhledávaných dokumentů) .. něco jako JSON
  • dotazy např. přes URL q= … a podporuje to už i operátory
  • vyhledávání i přes JSON request pro přesnější parametry vyhledávání
  • ve výchozím stavu je „všechno“ nastavené k okamžitému použití
  • používá to např. stackoverflow.com
  • ověření vyhledávání např. přes CURL, výsledek pak lze zformátovat nějakou jejich CLI utilitou
  • je tam logika např, že vyhledaný text v kratším políčku zvyšuje relevantnost výsledku
  • cache snad i nějak na části filtrů
  • zvýraznění vyhledaných slov (výchozí jsou HTML značky)
  • umí to najít kořen hledaného slova a podle toho vyhledává různé tvary
  • lze nastavit i vztahy mezi jednotlivými daty (např. rodič a potomek jako otázka a odpovědi)
  • kibana … vizualizace log souborů

David Majda: Code Review

  • SUSE Way: změna kódu … pull request … review …. zpátky nebo merge hlavní větve
  • Řešení ala D. Majda:
  • Rozumím tomu? Ne a proč?
    • změny jsou příliš velké
    • neznám kontext, stačil by kolikrát jenom komentář v kódu nebo v commitu
  • Checklist
    • High level
      • Je to ten nejlepší způsov/návrh?
      • Je to ve správné abstraktní vrstvě? Používá to zrdoje pouze z aktuální a nižší vrstvy?
      • Je změna izovolovaná?
    • Mid level
      • Neviděl jsem to už někdy?
      • Je to jednoduše udržovatelné? Nejsou tam závislosti?
      • Je to jednoduše rozšiřitelné
      • Není to moc “overengineered”?
      • Pravidlo skautského tábořiště
    • Low level
      • Jsou obslouženy/zachyceny všechny chyby/výjimky?
      • Jsou změny pokryté testy?
      • Splňuje to styl kódování?
      • Nezpůsobí to nějaký další bug?
  • Socialální aspekty
    • ten kdo dělá revizi někdy vůbec nezná ten kód ani autor nebo autora ani nemá rád
    • žádné negativní komentáře proti autorovi nebo tomu kdo dělá revizi
    • pokud kritizuješ, navrhni řešení
    • než kritizuješ, zkus najít důvod/hodnotu, proč to autor napsal zrovna takhle (např. nějaký rychlý hack kvůli tomu, aby se stihlo vydání nové verze, a aby to nezpůsobilo zbytečné škody jinde)

Jakub Vrána: Code Review with Phabricator

  • používá ho Dropbox
  • podporuje GIT, SVN …
  • komponenty
    • dirrefential … code review
    • diffusion … repository browser
    • maniphest … tasks and bugs manager (for smaller company)
    • herald … notifications (e.g. after changing your code)
    • Owners, Calendar, Wiki, Blog, …
    • Conduit … API
    • Arcanist … command line interface
  • inline komentáře (stačí vybrat kód a vložit komentář)
  • má to vlastní jednoduchý značkovací jazyk např. na odkazy na jednotlivé části/revize v kódu
  • detekce zkopírovaného a přesunutého kódu
  • umožňuje poslat odkaz na konkrétní řádek na konkrétní revizi
  • rozšířený blame na předchozí verzi (na původního autora myšlenky)
  • lze nastavit, kdo může publikovat kód
  • arcanist lint … pro kontrolu stylu kódování
  • arcanist unit tests
  • pište komentář, jak lze daný kód otestovat/spustit
  • kód review dělejte během jednoho dne
  • neptejte se na změny, které s problémem nesouvisí
  • who reviews
  • who lands it
  • how to test it
  • pre-commit

Pro projektové a produktové manažery a designery

Michal Hudeček: WebDirecting

  • snažil se najít metaforu k vývoji webu a přirovnání vytváření webu k vytváření filmu
  • Na příkladu Dropboxu a jiné služby uváděl, že nepotřebujete na webu uvádět technické parametry, ale je třeba najít správné posluchače. (Dropbox se nezabýval sdělením tech. parametrů)
  • kvalitní design bez použití správných technologií už v dnešní době nestačí
  • Pro vytvoření dobré služby/webu je spojit TECHNOLOGY + USERS + BUSINESS
  • je potřeba rychlá zpětná vazba
  • Pouhé kopírování Best Studies vám nepomůže, musíte se zaměřit na váš projek a ne pouze kopírovat existující produkt/služby/web
  • Dnešní vzdělání nespojuje marketring, web-technologie a psychologii, což jsou obory potřebné pro vytváření kvalitních webů
  • comparing web with a movie (visual, conversation, interaction)
  • pracují na knize a video tutoriálech
  • webdirecting.com

L. Plíhal: Web Design Pattern

  • you have to start with a story to talk to clients
  • you need to understand does (products, services)

R. Pavlíček: How to improve UX by implementing accessibility

  • zaměřte se na hlavní obsah
  • vylepšete formuláře … musí být intuitvní a jednoduché (propojené label a input, dostatečně velké v mobilní verzi)
  • klávesové zkratky pro weby, které uživatelé používají častěji
  • objednávky a platby musí být přístupné pro všechny, jinak se může člověk zaseknout např. na tom, že nedokáže zadat datum expirace platební karty klávesnicí, protože to je přes nějaký „speciální“ selectbox
  • na přístupném webu dosáhne zákazník svého cíle rychleji
  • přístupnost webu není vlastnost, je to obraz toho, jak nám záleží na lidech

P. Bonhard: Design Beyong the Screen (10 let UX designer)

  • mnoho firem nabízí stejný produkt/službu … je nutné se odlišit poskytováním dalších služeb
  • touchpoint je mezi zákazníkem a poskytovatel služby (pokladní, web, papírová faktura, …)
    • digitální (SW, web)
    • reálné (papírové dokumenty, lidi na telefonu, …) – tyto jsou často důležitejší než digitální

Nik Page – Emergent (vznikající/kamžitý) Service Design: Collaborating Towards

  • UX Designer from Česká spořitelna
  • navrhuje nový web pro csas.cz
  • začal s průzkumem,
    • otázky na lidi,
    • zjišťování, jak je lidi přimět, aby přišli do jejich banky
    • nemůže navrhnout zavedení všeho přes banking, protože ČS má prvenství v počtu poboček a z toho musí těžit
  • Jako UX designer nenabízejte Service Design, nabízejte konkrétní řešení nebo vylepšení
  • objevujte jak udělat věci lepší, spolupracujte s ostatními, abyste dosáhli lepších výsledků => lepší potěšení z práce
  • spolupráce neznamená pouhé sdílení výsledků, ale je to týmová práce, kdy všichni společně pracují na daném projektu
  • obvyklý den UX designera: komunikace s lidmi, vysvětlování, vzdělávání např. projektových manažerů, aby věděli v jakém případě by měli kontaktovat UX designera, UX designer dodává nové sesbírané informace produktovému manažerovi (např. půjčky přes web. aplikaci), aby vytvořil nový produkt nebo nějakou novou vlastnost/funkci
  • pro měření existuje NPS (Net Promoter Score) metrika pro měření úspěšnosti služby na základě doporučení lidí, Nick tuto metriku nemá rád, protože někdy je mnohem lepší jeden konkrétní názor publikovaný v médiích než měření NPS

A. Hazdra: Service Design

  • Service is journey (služba = „cesta“) … jako zúčastnit se webexpo od prvního rozhodnutí, přes nákup lístků, návštěvu přednášek, rautů a večírků až po feedback z konference
  • ale není to jenom „cesta“, je to vlastně vystoupení/show (Performance)
  • je to o lidech uvnitř i vně firmy (ne pouze o zákaznících) … musíte dělat průzkumy, mluvit s lidmi (zákazníci, ve firmě, zákazníci zákazníka)
  • kniha Delivery Heapening / Štěstí doručeno
  • při návrhu/realizaci služby máme zodpovědnost i za to, jak se postavíme ke změnám, které nastanou (ne jenom za dodržení termíny a samotný proces řízení projektu)
  • kniha This is service design thinking
  • kniha Skvělé služby

Wolf Becvar (Austria) – What you can’t wireframe

  • Najdi při návrhu svého projektu tzv. touchpoints

    • = cokoliv, přes co je zákazník spojen s námi

    • = jakákoliv interakce mezi námi a zákazníkem (telefonní hovory, marketing, web, jakákoliv další komunikace, sociální sítě, mobilní aplikace)

  • Jak najít touchpoints?

    • průzkumem (komunikujte se zákazníkem, dotazníky, ankety, přímé otázky, vžijte se do situace zákazníka)

    • udělejte průzkum o survey about traveling satisfaction (little smile for each little thing … delivering tickets, buying tickets, traveling)
  • howto transform touchpoints to project?

Carlo Frinolli – Visual Design Thinking

  • vzdělávejte, vysvětlujte a sdílejte maximum inforamcí se svými zákazníky, aby rozumněli tomu, jak se projekt vyvíjí a aby si dokázali představit za co platí
    • zákazník musí akceptovat to, že ho někdo bude vzdělávat
    • nelze použít „vodopád“
    • poměrně těžké u veřejných zakázek (pozn. RŽ.)

Thomas Sundberg – How to fail a project (Sweden)

  • Jak udělat neúspěšný projekt
    • hodně manažerů s různými cíli a prioritami a všem musíte vyhovět
    • neutrácejte peníze za vzdělání
    • všechno kritizujte a ideálně veřejně
    • neinvestujte do nástrojů
    • počítejte s lidmi jako se zdroji, tzn. dají se kdykoliv jednoduše nahradit
    • mějme jednoho hrdinu, který všechno vyřeší
    • veškerá komunikace v textové podobě
    • dělejte dlouhé schůzky, které často rušte; a když je nezrušíte, tak tam nechoďte; a když už tam přijdete, tak buďte nepřipravení
    • nedělejte krátké denní porady
    • specifikaci vždy pouze psaná a bez příkladů
    • nesnažte se najít společnou „řeč“ (jazyk, UML, způsob komunikace)
    • nesnažte se mít zákazníka na naší straně
    • všichni vědí, kdy je projekt hotový, takže to není potřeba nikomu říkat
    • navrhujte všechno na dlouhou dobu dopředu a do posledních detailů a striktně
    • jeden člověk zvládne všechno
    • používejte neobvyklé frameworky (homemade, komerční)
    • používejte globální proměnné a singletony
    • zabývejte se bezpoečností až jako poslední
    • když výstup tak ve všech možných formátech (XML, JSON, XLS, TXT, …)
    • navrhujme věci velké a komplexní
    • prvně nadefinujte styl kódování a použitý verzovací systém
    • mějme právě jednu osobu, která bude vlastníkem všech kódů
    • optimalizujte ihned … nejlíp ještě před tím než je aplikace hotová
    • nepoužívejte continues integration (no continues integration)
    • akceptujte rozbité buildy (accept broken builds)
    • všechny buildy dělejte ručně a bude to dělat pouze jeden člověk ve firmě
    • velké projekty jsou důležitější, takže ty malé vždycky počkají
    • žádné párové programování
    • žádný vývoj řízený testy
    • vždycky 100% pokrytí testy
    • vždycky 100% dokumentace ke všemu
    • kontrola kvality a testy až jako poslední
    • funkční testování ručně a pouze přes GUI (klik, klik)
    • žádná automatizace
    • snažte se vyhnout/oddálit nasazení nové verze … je to riskantní, nasazujte až v nejnutnějším případě a pouze obrovské změny
    • žádné průběžné nasazování
  • Úspěšný projekt
    • kniha Agile manifesto
      • Jednotlivci a interakce před procesy a nástroji
      • Fungující software před vyčerpávající dokumentací
      • Spolupráce se zákazníkem před vyjednáváním o smlouvě
      • Reagování na změny před dodržováním plánu
    • jeden projekt = jeden manažer
    • správné nástroje
    • pokrytí testy s ověřením výsledků v testech
    • zkoumejte/kontrolujte a přizpůsobte se (inspect and adapt)
    • lidé nejsou zdroje, jejich znalosti nelze jednoduše nahradit
    • komunikace tváří v tvář je nenahraditelná
    • dělejte krátké denní porady o stavu včera, plánu na dnešek + porkoky a problémy
    • jednodušší komunikace vede k jednoduššímu návrhu
    • specifikace vždycky s příklady (může k tomu pomoci Cucumber)
    • komunikujte se zákazníky, setkejte se s nimi osobně a snažte se porozumět jejich potřebám
    • architekt systému musí rozumět kódování (asi programování)
    • žádné singletony a globální proměnné
    • výstupy pouze ty nutné, ne všechny
    • párové programování
    • optimalizace až na konci, pokud je vůbec potřeba
    • automatizovat (integrace, nasazení, …)
  • simple design

    • all test passes (there should be test)

    • good naming

    • no duplication

    • small everything

  • … something about git

  • work on development

  • books …. Agile programming, Extreme Programming

  • he doesn’t agree that anybody from the team shouldn’t be able to talk to the customer

The apiary.io  founder