Ľuboš Bosák: Nikto nás neučil ako rozmýšľať o programovaní

S Ľubošom Bosákom pripravujeme sériu večerných workshopov pre vývojárov. 9 rokov pracoval ako softvérový inžinier a neskôr ako manažér vývoja v amazon.com v americkom Seattle. Aby ste ho mali možnosť lepšie spoznať, spýtali sme sa ho niekoľko otázok o živote a workshopoch.
V článku sa môžete registrovať na workshopy
Ľuboš Bosák: Nikto nás neučil ako rozmýšľať o programovaní

Povedz nám niečo o sebe!

Vyrastal som v Nitre. Väčšinu mimoškolského času som strávil hraním hokeja alebo počítačových hier. Prvýkrát som bol v USA ako výmenný študent zo strednej. To mi dalo víziu a cieľ tam ísť aj na výšku. Dva roky tvrdej práce, spolu s know-how starších “ajbíkov” z Gymnázia Jura Hronca v BA, mi pomohli dostať štipko na malú školu v Minnesote. Tam som dostal bakalára z Computer Science.
 

Ako si sa dostal do Amazonu v USA?

Amazon si ma “našiel” kým som bol ešte na škole. Nie že by som bol taký super, bola to skôr zhoda náhod. Bolo to prvý a pokiaľ viem jediný krát, čo niekto z Amazonu prišiel robiť nábor na túto malú školu. Normálne sa sústredia na veľké univerzity so silným inžinierskym programom.
Pamätám si ako dnes, keď spolužiak, čo bol na tom neformálnom pohovore predomnou, vyšiel z miestnosti biely ako stena. Nevedel som, čo si mám o tom myslieť. Pohovor som ale zvládol dobre, tak si ma zavolali na formálne kolečko do Seattlu. Tam som za jeden deň absolvoval 4 asi hodinové pohovory, a o týždeň mi ešte poslali “domácu úlohu”. Nakoniec mi predsa len dali ponuku, a tak som mal posledný semester na škole pohodičku.
 

V čom je práca v USA iná ako na Slovensku?

Povráva sa, že kým v Európe ľudia pracujú preto, aby žili, v Amerike žijú preto, aby pracovali. Niečo na tom pravdy je. Najväčší rozdiel ale vidím v štýle vedenia ľudí a firiem. Na Slovensku do veľkej miery vládne nedôvera voči zamestnancom, ktorá vyúsťuje do zbytočných byrokratických požiadaviek – ako napríklad vykazovanie činnosti. Alebo sa to prejavuje nedôverou s home officom. Na druhej strane je výnimkou, ak má firma náročné výberové sito alebo relevantný systém vyhodnocovania výsledkov zamestnancov a spätnej väzby. To sa mi zdá byť postavené na hlavu. Do slovenských firiem by som priniesol hlavne zmenu myslenia ohľadom ľudí – ako, kam, a prečo do nich investovať.
 

Čo by si odporučil začínajúcim programátorom?

V prvom rade by som odporučil úprimne sa zamyslieť nad tým, či mi programovanie naozaj ide a baví ma, alebo to robím len preto, že sú v tom dobré peniaze, alebo to odo mňa chcú rodičia. Na programovanie treba “mať bunky” a keď ich nemáš, každý deň v práci bude trápenie (a tie dobré peniaze sa stanú pascou). Neznižuje to tvoju hodnotu ako človeka – len to znamená, že tvoje dary sú v niečom inom. Aj ty aj ľudia okolo teba budú oveľa šťastnejší, ak sa zameriaš na činnosť, na ktorú máš talent.
 
Ak si z tých, čo na to bunky majú a programovanie ťa baví, tak by som odporúčal hodnotiť projekt alebo zamestnanie (či už potenciálne alebo súčasné) podľa toho, koľko sa naučíš, a podľa ľudí naokolo. Najcennejšie je mať kouča, od ktorého sa môžeš veľa naučiť. Ak máš k takému prístup, snaž sa byť čo najlepší študent aby ťa aj chcel učiť. Najhoršie je mať projekt, na ktorom sa neučíš, alebo manažéra, ktorý chce uspieť inak ako cez úspech svojho tímu.
 

Prečo si sa rozhodol postaviť pred ľudí a zdieľať svoje skúsenosti z Amazonu?

Keď som začal pracovať na Slovensku, bol som zhrozený, ako sa tu kóduje lážom-plážom. V prvej firme som vedeniu navrhol, že by sme mohli urobiť pár stretnutí na tému best practices – síce prikývli ale nikdy sa s tým nič neurobilo. Na ďalšom projekte to bolo trochu lepšie, ale pri práci s juniormi som si začal uvedomovať, ako veľmi sú závislí na kopírovaní kódu (aj ja som toho hojne nakopíroval, keď som začínal). Dôvodom je to, že síce sme sa naučili programovať, ale nikto nás neučil ako rozmýšľať o programovaní samotnom. Keď mi vtedy môj projekťák povedal, že “susedia” majú záujem o neformálne softvérové školenia a či by som zvládol o niečom porozprávať, rozhodol som sa ísť do toho. Nakoniec som pre nich pripravil 13 rôznych školení, a pozitívna odozva potvrdila, že mám čo povedať.
 

Workshop – Krásopis kodu

Ľuboš Bosák: Nikto nás neučil ako rozmýšľať o programovaní

V čom je krása kódovania?

Kým obyčajný kóder sa snaží napísať program tak, aby fungoval, majster píše kód, ktorý sám vypovedá o svojom zámere, je jednoduché mu porozumieť a ľahko sa dá pozmeniť.

Podľa čoho poznáš kvalitný kód?

Toto je základná otázka, od ktorej sa celé workshop odvíja. Teórii je viac – ja sa najviac prikláňam k tejto formulke: 1/Qc ~ WTF/min

Čo donúti programátora riešiť v kóde niečo viac ako len funkčnosť?

Je veľmi frustrujúce keď mám urobiť zmeny v kóde, ale snaha pochopiť čo ten kód vlastne robí mi zaberie 5x dlhšie, ako samotná zmena.  Ešte horšie je keď sa pozriem na “blame” a zistím, že ten kód som písal ja pred pol rokom…

Ktorý moment to bol u teba, keď si sa začal týmto zaoberať?

V amazone som mal v tíme kolegu, ktorý aktívne presadzoval best practices pre kvalitný kód. Nie len dogmaticky, ale vždy vedel dobre vysvetliť, prečo je tá-ktorá zásada dôležitá. Ale taktiež keď sme ako manažéri v amazone vyhodnocovali návrhy na povýšenia vývojárov, kvalita kódu bola jedna z rozhodujúcich kritérií.
 
Workshop už 29.10.2019 v Campus Cowork Mlyny o 18:00. Registrácia na workshop.
 

Workshop – Dizajn komponentov

Ľuboš Bosák: Nikto nás neučil ako rozmýšľať o programovaní

O čom bude tento workshop?

Komponenty sú ako kúsky stavebnice, ktoré tvoria aplikáciu, ale aj celý systém. Ich rozhrania diktujú, ako jednotlivé komponenty spolupracujú. Pomocou príkladov z bežného života si prejdeme princípy a zásady ako správne komponent vytvoriť a ako navrhnúť celé rozhranie. 

Prezraď jednoduchý tip pri architektúre komponentov?

Podstata každého komponentu by sa mala dať vyjadriť jednoduchou vetou.

Ako si objavil princípy, o ktorých budeš hovoriť.

V amazone som zažil čas rozbíjania monolitických aplikácií a dizajnovanie distribuovaných servisov na ich nahradenie. Rýchlosť, akou zároveň biznis napredoval ma naučila, že aj keď teraz si nemyslíme, že “toto” sa môže použiť ešte na niečo iné, o rok bude na stole požiadavka to prepoužiť. Odlepiť dobre nadizajnované komponenty je oveľa ľahšie ako rozbíjať monolitickú aplikáciu.

V čom je lepšie byť pri návrhu komponentov opatrný?

Treba si byť vedomý, do akej vrstvy ktorý komponent patrí, a mať jasno v jeho úlohe/podstate.
 
Workshop sa uskutočni už 19.11.2019 v Campus Cowork Mlyny o 18:00.  Registrácia na workshop.
 

Workshop – Dizajn komunikácie

Ľuboš Bosák: Nikto nás neučil ako rozmýšľať o programovaní

Priblíž nám tému tohto workshopu

Väčšina dnešných systémov komunikuje cez sieť s inými systémami. Kým sa touto komunikáciou nemusíme zaoberať, vystačíme si so všeobecnými pomenovaniami ako “remote call” alebo “message processing”. Keď sa však začneme podrobnejšie zaoberať tým, ako systémy spolupracujú – buď pri odstraňovaní problémov alebo pri tvorení niečoho nového – zrazu potrebujeme oveľa hlbšie pochopenie základných konceptov a ich potenciálneho využitia. 

Kedy zvyčajne zlyháva komunikácia v distribuovaných systémoch?

Niekde medzi 1% a 0.1% pokusov. Ak systém spracováva len 100 požiadaviek za deň, potenciálne raz za deň niečo zlyhá. Distribuované systémy si vyžadujú veľmi presný a cielený dizajn, aby sme vedeli správne reagovať v prípade zlyhania komunikácie. Aj keď tento seminár nie je o fault tolerance, hovorí o základoch bez ktorých dobré distribuované systémy nevybudujeme.

Ako predísť problémom v takomto type komunikácie?

Tu sa problémom predísť nedá. Práve naopak, dizajn musí s problémami počítať, aby mohol na ne správne zareagovať, aby ten problém nijakým spôsobom neprebublal k užívateľovi.

Pri riešení akého problému si to musel začať riešiť?

Mal som systém, ktorý spracovával veľké množstvo update-ov z rôznych systémov, ktoré mali rozdielne požiadavky na rýchlosť, frekvenciu, a spoľahlivosť. Keď sme to nastavili tak, jedna skupina mala taký problém. Ale keď sme to nastavili inak, druhá skupina mala iný problém. Museli sme vyskladať kombináciu tak, aby sa aj vlk najedol aj koza ostala celá.
 
Workshop už 26.11.2019 v Campus Cowork Mlyny o 18:00. Registrácia na workshop.
 

Workshop – Ako skrotiť GIT

Ľuboš Bosák: Nikto nás neučil ako rozmýšľať o programovaní

Prečo máš workshop o Git-e?

Git je ten najužitočnejší “version control” systém, aký bol kedy vytvorený. Ale vedel si, že v skutočnosti nie je postavený ako verziovací systém? To by mohlo vysvetliť, prečo sa niekedy zachová tak nepredvídane. Počas workshopu sa Git-u pozrieme pod kapotu a vysvetlíme si nie len ako funguje, ale aj ako s ním dobre pracovať.

3 dôvody prečo si vybrať Git?

Ak niekto nepracuje na osobnom projekte alebo nezačína startup, asi si VCS vybrať nemôže. Ale hlavné 3 výhody Git-u sú, že nepotrebuje centrálny server, je distribuovaný, a hlavne že umožňuje veľmi flexibilný workflow. V konečnom dôsledku zjednodušuje tvorenie kvalitného kódu.

V čom nás môže Git zaskočiť?

Git nerešpektuje základné princípy fungovania počítačového file systému, na ktoré je našinec zvyknutý. Klik, a zrazu mi zmiznú veci, na ktorých som práve pracoval. Ale aj keď ich neviem nikde nájsť, vôbec nie sú stratené. Dokonca tvrdím, že pri dodržiavaní pár malých zásad je prakticky nemožné s gitom stratiť kus práce.
 
Workshop už 3.12.2019 v Campus Cowork Mlyny o 18:00. Registrácia na workshop.
 

Workshop – UNIT Testing

Ľuboš Bosák: Nikto nás neučil ako rozmýšľať o programovaní

Princípy efektívneho unit testovania

Unit testy nesú prísľub zvýšenej kvality kódu, a jeho ľahšej údržby. Výsledky honby za vysokým pokrytím kódu však často zaostávajú za týmto prísľubom. Na tomto workshope sa bližšie pozrieme na prístupy a stratégie, ktoré zvyšujú alebo znižujú efektivitu unit testov. Ako v iných workshopoch, neostaneme len pri praktických radách, ale preskúmame aj motivácie a myšlienkové procesy, ktoré za nimi stoja.

Aká je najčastejšia chyba pri písaní unit testov?

Najčastejšia chyba je písanie testov automaticky – teda bez zamyslenia sa nad tým, či a aké unit testy ten-ktorý kód potrebuje. Opačná strana tej istej mince je automatické nepísanie testov. Na hlbšej rovine pripisujem oba javy nesprávnej motivácii pri písaní kódu.

Čo je podľa teba základom dobrých unit testov?

V prvom rade si treba uvedomiť že unit testy sú tiež kód. Síce nie produkčný kód, ale aj tak kód. A kód treba udržiavať. Dobré unit testy musia byť jednoduché a ľahko udržiavateľné.

Na čo by sa mal vývojár pri písaní unit testov zamerať?

Najdôležitejšie je napísať testy pre komplikovanejšiu logiku, ale napísať ich na úrovni vstupov a výstupov. Ak testy píše ten istý človek čo píše aj kód, treba tieto dve aktivity od seba oddeliť, lebo sú pri nich potrebné úplne iné myšlienkové postupy.

Workshop už 12.11.2019 v Campus Cowork Mlyny o 18:00. Registrácia na workshop.
 

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.

DBA Admin

Základné informáciePozícia: DBA Admin Pracovný pomer:  TPP, Živnosť Miesto práce: Pezinok, Home-Office Plat: od 2400 - 4000+ EUR/Brutto/mesačnePopis práce praca s databázovými...

Junior Technical Writer

Basic informationPosition: Junior Technical Writer Contract type: Full-Time employee Location: Bratislava, on-site Salary: from 1000 - 1400 EUR/ BruttoResponsibilities:Interviewing technical personnel...

QA/Testing Specialist – Automated Testing

Základné informáciePozícia: QA/Testing Specialist - Automated Testing Pracovný pomer:  TPP Miesto práce: Bratislava, on-site Plat: 1500 - 1900 EUR/Brutto/mesačnePopis prácenaplánovať a...

DevOps/SysAdmin Tech Lead

JOB Position: DevOps/SysAdmin Tech Lead Contract type: Full-time Location: Bratislava, on-site Salary: 3000 - 4000+ EUR/BruttoResponsibilities:team/tech leadership, prioritisation, 2 team members independent...

Junior/Senior Full Stack Developer / WEB Development for 150 countries

Basic informationPosition: Full Stack Developer Contract type: Full-Time employee or Contractor Location: Vienna (2-3 Days/Week On-Site) / 1 hour drive from...

Agile Project Manager / Scrum Master

JOB Position: Agile Project Manager / Scrum Master Contract type: TPP, Contract Location: Bratislava, Prague, Vienna Salary Junior: 1500 EUR/Brutto Salary Senior: 2200 EUR/Brutto Rate:...

.NET Developer for projects in localization

JOB Position: .NET Developer  Contract type: Contract / 2-3 days/week/Homeoffice Location: BrnoPrimary Job Functions:You will be working on various back-end projects...

Vieme kto je IT BLOGGER 2019

Súťaž IT Blogger 2019 sme v piatok 6.12.2019 oficiálne ukončili a prinášame vám vyhodnotenie a rozdáme ceny....

Milada Kováčová: Práca v IT nie je len o programovaní

Tentokrát sme sa rozhodli vyspovedať ďalšiu ženu v IT. Milada Kováčová pracuje v slovenskej softvérovej spoločnosti SOFTEC,...

Projekty prvej výzvy fondu SK-NIC sú schválené!

Po uzavretí výzvy Fondu SK-NIC na podporu malých projektov nás hodnotiaca komisia...

Čítaj viac:

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.