Vladimír Říha: O budoucnosti webového vývoje a proč miluje TypeScript
„TypeScript dělá kód čistší a práci v týmu mnohem jednodušší,“ říká Vladimír Říha, vývojář s více než 10 lety praxe.
Vývoj webových aplikací není jen o tom, co uživatel vidí – za každou stránkou se skrývá obrovské množství technologií i rozhodnutí, které mají vliv na její funkčnost i budoucí rozvoj. Vladimír Říha, který vede vývoj uživatelského rozhraní pro cloudovou službu v Oracle, se s námi podělil o svůj pohled na moderní vývoj webových stránek a aplikací.
V tomhle rozhovoru se dozvíš, jaké dovednosti jsou pro dnešní webové vývojáře klíčové, proč Vladimír nedá dopustit na TypeScript a jak podle něj AI mění práci vývojářů. Pokud tě zajímá, jak se držet v obraze a uspět v neustále se měnícím světě webového vývoje, tohle je rozhovor, který bys neměl*a minout!
Jaký byl tvůj nejzajímavější projekt, na kterém jsi v rámci vývoje webu pracoval?
Každý měl něco do sebe. Možná nostalgicky bych zmínil NetBeans IDE, kde jsem několik let byl v pozici quality engineera. Ve své době to byl projekt s milionem uživatelů a člověk se naučil organizovat práci, tickety a zároveň myslet na uživatele a použitelnost nových funkcí.
Jaké dovednosti považuješ za klíčové, aby mohl být full stack developer v obou oblastech úspěšný?
Obecně jako pro developera zvídavost a schopnost analyzovat problém. Nezastavit se například na prvním problému z nějaké komponenty či frameworku, co není pod jeho odpovědností a říct „nejde to“, ale snažit se ho vyřešit, pochopit a často pak najde alternativní řešení (nebo pomůže alespoň lépe popsat problém těm, co to budou opravovat).
U full stack developera je pak důležité myslet na koncové uživatele a mít cit pro intuitivní řešení. Bohužel často se stává, že např. čistí back-end developeři často nechápou, proč jejích API je špatně použitelné, protože buď neznají, jak ho front-end bude používat, nebo v horším případě je to nezajímá.
Existují nějaké konkrétní technologie nebo nástroje, které tě v současnosti nejvíce oslovují? A co tě na nich zajímá?
V současnosti každý mluví o AI a to v životě developera vidím jako důležité umět. Věřím, že to velmi zvyšuje efektivitu práce.
Jak si udržuješ přehled o nejnovějších trendech a technologiích ve webovém vývoji?
Téměř pouze z několika mailing listů o web developmentu a různých frameworků. Výjimečně se zúčastním konference, ale většinou je pro mne efektivnější si pustit záznam přednášky z YouTube. Mohu si tak lépe organizovat čas a sledovat jen to, co mne zajímá.
Máš nějaký oblíbený framework nebo knihovnu, kterou bys doporučil začátečníkům, a co je na nich podle tebe nejlepší?
Jakkoliv podporuju TypeScript a používání knihoven, je dobré vědět, jak funguje čistý JavaScript, jak fungují události apod. Takže než se začnete učit nějaký framework, ujistěte se, že víte, jak funguje JavaScript a HTML.
Jak bys vysvětlil rozdíl mezi REST a GraphQL někomu, kdo tyto technologie zatím nezná?
Představte si lego. Pokud se bavíme o REST, pak u lega dostaneme např. sadu pro policejní stanici, včetně auta a vrtulníku. Ale co když potřebuju jenom to policejní auto? S REST API si musím koupit celou sadu a mám kostičky, které nepotřebuji.
U GraphQL ale můžu říct, dej mi podvozek, tuhle bílou kostičku, tuhle modrou a nakonec blikající a houkající koustičku na střechu auta. Dostanu tak přesně ty dílky, které potřebuji, a nic zbytečného navíc.
Pro mne je to úspora, mám jen to, co potřebuju – v případě REST bych třeba musel i kupovat několik sad a kombinovat je. Pro lego společnost je to ale dražší a pomalejší, místo prodávání unifikovaných sad musí umět kombinovat kostičky.
Jak velký význam podle tebe má používání TypeScriptu v moderním vývoji webových aplikací?
Obecně jsem fanoušek TypeScriptu, protože pomahá předejít chybám, ve větším týmu developerů zvlášť. Ruku v ruce s tím jde pak i dobrá podpora pro refactoring v IDE.
Věřím, že hodně developerů z „klasičtějších“ typových jazyků pak pomohl přesvědčit, že vývoj webu není jen „šílený JavaScript“, kde se kód může lehce zvrhnout v něco nehezkého. Určitě jde vyvíjet i bez něj, ale klade to mnohem větší nároky na developery.
Jak si představuješ budoucnost webového vývoje v nadcházejících letech?
Každých pár let se vynoří nějaký nový framework, který tvrdí, že jde o nejlepší řešení. Ale málokdy získá větší trakci. Je zajímavé, že React se drží už 11 let, možná je to známka nějakého uklidnění nebo dospělosti web developmentu.
Možná to zajímavé období plné změn je už za námi a teď bude klidnější doba, kdy místo spousty nových frameworků se budou ty existující více vylepšovat díky novým API či funkcím v prohlížečích.
Myslíš, že generativní AI ovlivní způsob, jakým se tvoří webové stránky a aplikace? Pokud ano, jakým způsobem?
Jednoduché statické stránky to asi bude generovat „snadno“ (a možná už to dělá), ale psát větší souvislý kód asi ne (zatím). Na druhou stranu je to už teď pomocník, který pomůže rychle vysvětlit cizí kód, do určité míry generovat kostru algoritmu, pomůže zrychlit psaní pull requestu apod. S trochou nadsázky StackOverflow na steroidech.
Jaké jsou podle tebe hlavní výhody a nevýhody použití frameworků oproti psaní čistého JavaScriptu?
Člověk si nemůže vždy dovolit investovat čas psát vše od začátku a znovu a znovu řešit problémy, které už někdo vyřešil. Většinou to není ani moc zajímavé. Takže výhoda je úspora času a (pokud člověk dobře vybere) kvalitní a ověřené řešení.
Nevýhoda je typicky v okamžiku, kdy člověk narazí na chybu nebo něco, co ten framework neumí, ale vy to potřebujete – pokud nelze pomoci např. pull requestem, je člověk odkázán na autora frameworku nebo jeho komunitu. A pak doufat, že nová verze nepřinese mimo opravy i nekompatibilní změny.
Jak důležitá je pro tebe při vývoji webových aplikací přístupnost (accessibility) a jak ji zajišťuješ?
Důležitá je vždy, míra asi závisí na jaké uživatele míříme. Lepší UI knihovny to často alespoň nějak pomájí řešit, takže hodně usnadňuje práci. Zárověň musím říct, že pro mne osobně testovat UI se čtečkou displeje (který používají nevidomí) je hodně težké a opravdu obdivuju nevidomé či lidi se zhoršeným zrakem, že to zvládají.
O to vetší máme my developeři odpovědnost, aby naše aplikace byla přístupná. Pro testování je to kombinace rozšíření do prohlížeče (např. pro ověření kontrastu, atributů…) a manuální testování.
Když pracuješ se začátečníky, jaké chyby při vývoji webu podle tebe dělají nejčastěji?
Dvě slova – dekompozice a KISS. Tedy schopnost efektivně strukturovat kód pro lepší čitelnost a testovatelnost (a tím pádem pro kvalitnější kód). Zkratka KISS znamená „keep it stupid simple“ – česky asi něco jako „nekomplikuj to“. Juniornější developeři často sklouznou k hledání „dokonalého“ řešení, které myslí na každý teoretický use case nebo na budoucí funkce.
Bohužel ten kód je pak zbytečně složitý, drahý na údržbu, a pokud člověk předem neví ony budoucí funkce, stejně to není schopný 100% předvídat.
Co by podle tebe měl umět každý web developer, aby mohl úspěšně rozvíjet svou kariéru?
Sledovat alespoň pasivně trendy, mít povědomí o user experience, proč jedno řešení je uživatelsky lepší než jiné řešení. A měl by vždy rozumět uživatelům a doméně jeho produktu – težko navrhovat webovou aplikaci, když nerozumím tomu, kdo a jak s ní bude pracovat.
Jaký je tvůj názor na používání page builderů jako Elementor nebo Divi při tvorbě webů na WordPressu?
Nejasný. Myšlenka je to hezká, ale podle mne jakmile člověk bude chtít nějak vybočit ze základní funkcionality, vždy to sklouzne ke kódu. Zároveň pokud chci dělat aplikace, myslím, že nějaké technické dovednosti jsou nezbytné. Jinak se člověk zasekne na prvním problému. Ale možná jsem jen pesimista.
Jak kombinuješ front-end a back-end vývoj jako full stack developer a jaké hlavní rozdíly mezi nimi vnímáš?
Osobně myslím, že většina full stack developerů jsou primárně front-end developeři a back-end znamená napsání REST API, práce s databází apod. A je to proto, že kdo dělá UI a baví ho, je zaměřený vizuálně a má rád nějaký viditelný výstup své práce.
Pokud máte ale na back-endu několik microservices, které komunikují binárním protokolem nebo volají externí služby, a řešíte výkon a škálování, tak toho vizuálně moc hezkého neuvidíte.
Zároveň si ale myslím, že i ten řekněme odlehčený back-end je kritický pro front-end developera, protože se může podílet na návrhu API, popř. ho napsat sám, a znalosti práce na back-endu mu umožní i pochopit např. technická omezení – svět není jen prohlížeč.