Thursday 26 April 2018

Hledači ztracených chyb

Kdysi dávno, když internet tekl rychlostí kolem 1 kbps a vytáčené připojení se platilo po minutě, jsem poznal Nix Gerit. A protože tehdy ještě na internetu nebyl jen tak někdo (nebo byl, ale rodiče o tom nevěděli), měli jsme párkrát možnost se setkat i osobně. Před pár dny jsme si opět povídali - už moderně, přes Facebook - a protože Nix teď pracuje jako testerka software, poprosil jsem ji o rozhovor o této profesi, která by mohla zaujmout naše ajťáky.

Velká část otázek byla poskytnuta studenty 4. ročníku SOŠ IT. Díky!

Jak se člověk stane sw testerem?

Testeřina je docela dobrá vstupní pozice do IT světa, pokud máte ty správné povahové vlastnosti, protože nejsou potřeba tak obrovské technické znalosti hned od začátku. Programovat bez znalosti principů, velké praxe a logických vloh nejde - hned v prvním úkolu se po vás chce využít všechno, co umíte a prostě to napsat v rozumném čase musíte. Nejběžnější a nejjednodušší způsob, jak se člověk stane testerem, je tak, že se buď při nebo po škole přihlásí na brigádu jako opice na klikání podle testovacích scénářů - to jsou návody sepsané test analytiky, říkající přesně, kam se má kliknout, co se tam má napsat a co se má stát. Banky potřebují, aby jejich produkty fungovaly skutečně neomylně (jakmile jde o peníze, tak to musí být 99,99% správně, jakýkoliv omyl je sakra drahý a to přece nechtějí), takže si platí tým test analytiků, kteří sepíší, jak se daná věc má otestovat, a pak nechají ty testovací scénáře proklikat stem lidí. Od toho se pak spousta lidí “odpíchává” a jde dál.

Já osobně jsem začala jako “nejjuniornější” programátorka v jedné malé firmě, kde po třech měsících usoudili, že mám příliš velký talent na rozbíjení, a nabídli mi post testera. To je mimochodem taky extrémně důležitá vlastnost pro dobré testery. Určitá poťouchlost, nadšení, zvídavost a nutkání snažit se "rozbít" kód, které vás žene k nalezení co nejvíce chyb a "převezení" pánů programátorů.

OK, to je obsáhlejší, než jsem čekal.

Mám to scuknout? Ono je docela hodně, co k tomu říct...
...
Rozsah je na tobě, ale neměj pocit, že musíš odpovídat vyčerpávajícím způsobem.

Nemám, já to naopak umazávala. Práce je moje hobby.

To máš dobrý. Takže rovnou na první otázku od studentů: kolik to vynáší?

Mazaní studenti. Kvalitní otázka. V současné době hodně dobře. Čím delší praxi a znalosti různých metodik a nástrojů máte, tím lépe. Pro jasnější představu - v Praze je pro testera s dvouletou praxí průměr 30 tisíc hrubého měsíčně, není zas tak obtížné na krátkodobých projektech na živnostenský list dosáhnout i na 80 a více tisíc měsíčně, pokud máte delší praxi a jste dobří.

Nevím, jak dlouho tento stav ještě vydrží, je daný hodně tím, že všichni mají svůj systém nebo aplikaci a někdo to naprogramovat a proklepnout, jestli to funguje, musí.

...jestli si ale chcete vydělat, mákněte a běžte programovat, ti jsou na tom ještě líp.

Kolik hodin tak denně pracuješ?

To se strašně moc liší a odvíjí se od toho, kdo vás zaměstnává. Krátkodobé projekty chtějí klidně i 12 hodin denně, jeden kolega to dělal půl roku. Normální zaměstnání v běžných společnostech regulérních 8. V IT se často dělají přesčasy, které bývají potřebné. Já bývám obvykle tak v průměru dvakrát týdně 9 hodin, když něco hoří a je prostě potřeba to otestovat.

Je k tomu zapotřebí ale taky připočítat i čas, který trávím samostudiem. Technologie se neustále vyvíjí a v IT je fakt nutné se vzdělávat, studuji v průměru tak hoďku denně.

Wow. Další student se ptá, jestli je ta práce spíš sezónní nebo vychází nějaký software k testování nepřetržitě?

Opět. Záleží. Jsou softwarové firmy, které se vyloženě soustředí na kontinuální vývoj a neustále vylepšují nebo předělávají svůj existující produkt (vezměte si třeba Windows - měli jsme Win 95, 98, 2000, XP, Visty a tak dále. Ti lidi vyvinou jeden systém, pak nějakou dobu ještě testují, vydávají patche, které taky musí testovat, pak někdo přijde s novou technologií a začnou makat hned na dalších Windows, tyto firmy poskytují normální, regulérní celoroční zaměstnání.

Dalším případem je pár lidí, kteří se sejdou a řeknou si "Na trhu ještě není appka, která by generovala meme s vydrama v závislosti na tom, jaký je počasí. Vyvinem ji a děsně si nahrabem!", ti zaměstnají tým programátorů, testerů a dalších lidí, vyrábí usilovně tu appku půl roku, pošlou ji do světa a šlus, je hotovo a hledáte další projekt.

Pak jsou taky společnosti specializující se na poskytování lidí k vývoji oněm lidem z předchozího příkladu. Ti zaměstnávají lidi a propůjčují je jako externisty všude možně.

Brigádníků bývá taky fůra, vzhledem k nedostatku lidí to i společnosti často vítají, zvlášť když někdo u toho studuje VŠ.

Jako další je napadlo se zeptat, jestli je ta práce náročná. To když u nich, myslím, opadla fáze "jo, to bych taky chtěl, sedět a klikat celej den".

Přemýšlí ale správně, "hodně peněz, málo času, to musí být super!"

Řadila bych ji mezi mentálně náročnější. Je zapotřebí být neustále ve střehu a všímat si abnornálního chování celého programu. Před započnutím jednotlivých testů je nutné si důkladně zanalyzovat danou implementaci a rozplánovat rizikové body, abyste ověřili co největší část a propustili co možná nejméně chyb. Často se analýza dělá ještě předtím, než vidíte program jako takový v praxi, takže je potřeba mít i představivost. Někdy narazíte na chybu, která je prostě divná, a ani netušíte, jak byste ji měli popsat, ale nějak ji popsat a nasimulovat musíte, takže to pak půl hodiny přepisujete a oťukáváte. Vedení samozřejmě taky tlačí na čas, protože jste ta poslední linie, která zdržuje, takže je nutné pracovat spíše svižněji. Každodenní součástí testeřiny je taky dohadování se, jestli něco chyba je nebo ne a čí. Občas programátor odmítá uznat, že udělal chybu a musí ji opravit, či projektový manažer je názoru, že "na tohle přece nikdo klikat nebude, to nebudeme opravovat".  Takže to taky přidává na každodenním stresu a vyžaduje notnou dávku diplomacie, i když třeba ten den fakt nemáte náladu se s kýmkoliv dohadovat o naprosto jasných věcech.

Ale zase na druhou stranu, minimálně z mého pohledu, náročnosti této práce hodně ubírá to, že je to jistá "hra", ve které se snažíte najít co nejvíce chyb a zajistit kvalitu. Když něco člověk vnímá jako hru, tak náročnost pak jedině vítá.

Poslední žákovský dotaz, co padl: jaký sw, co jsi testovala, je nejlepší?

Zatím to dělám teprve dva roky a většinu z toho v jedné společnosti, takže moje zkušenosti jsou zatím mrzké. Testovala jsem několik aplikací, dvě z nich byly webové (jedna je hlavní produkt mé firmy - gigantický systém pro cestovky, co se vyvíjí kontinuálně už přes deset let, druhá byla spíše jednodušší aplikace napomáhající setkání lidí), jedna okenní a mobilní (rezervační systém pro restaurace + její osekaná verze pro mobil) a zhruba dvacítka webů různého rozsahu.

Nejlepší byla okenní verze toho rezervačního systému pro restaurace - není nad to posadit pana 🐆ke stolu s panem 🦃.  Ale ve vší vážnosti - byla nejlepší, protože tam byl příjemný poměr chyb (jenom dvě zásadní a hrstka malých, dost k uspokojení testerské potřeby něco najít a zároveň ne moc ke škubání si vlasů), tvůrci byli lidi, se kterými se dalo příjemně a diplomaticky domluvit, rozhraní bylo user-friendly, nebylo to přespříliš zbytečně komplikované a myslím, že to bude užitečná a kvalitní věc pro zákazníky.

Okay, poslední otázka ode mě: co nejzajímavějšího ses v téhle práci naučila?

A to je velmi pěkná otázka. Ale zajímalo by mě, co nejzajímavějšího ses naučil ty potom, co jsi začal učit?

Hmm. Naučil jsem se spoustu věcí. Vlastně se učím pořád, a prakticky vůbec to nemá co do činění s tím, co učím, ale jak.

Technologie se možná vyvíjejí rychle, ale je možné do jedné místnosti dát 20 stejných počítačů se stejnými systémy. Nějakou mouchu si každý najde vlastní, ale pořád je v zásadě jeden jako druhý. Ale mít 20 aspoň trochu stejných studentů? Čirá utopie. Nejhorší je, že existují způsoby, jak to individualizovat. Ale setrvačnost systému je tak obrovská, že se je nadále vesele snažíme napěchovat do sto let starých formiček.


Takže hlavně o lidech. To je hustý.

Já se zajímavé a fascinující věci primárně ze světa IT učím prakticky denně. Ale nejzajímavější, a zároveň do života nejdůležitější věc, kterou jsem se v téhle práci naučila, je zcela jistě neklesat na duchu, nepoddávat se demotivaci a nevzdávat se. Nepodléhat syndromu podvodnice (Poznámka - anglicky je to impostor syndrome. Pocit, že ve skutečnosti člověk nic neumí a je kompletně out of depth). Ačkoliv se každý den setkávám s velmi obtížně pochopitelnými, špatně popsanými a komplikovanými implementacemi, které absolutně nechápu, a úplně nevím, co a jak s nimi udělat při prvním setkání, tak ve výsledku je to naprosto normální a děje se to všem. Neočekává se, že člověk bude okamžitě vědět, jak proběhne otestování celé implementace. Jde o to, se do toho ponořit a prostě se snažit, ono to pochopení a orientace přijde a člověk nakonec ve výsledku přijde i na mnoho dalších testů a nedostatků v průběhu toho testování.

No comments:

Post a Comment