{"id":1081,"date":"2021-04-17T18:33:14","date_gmt":"2021-04-17T17:33:14","guid":{"rendered":"https:\/\/hudecekpetr.cz\/?p=1081"},"modified":"2021-04-17T18:33:14","modified_gmt":"2021-04-17T17:33:14","slug":"pracovni-den-programatora","status":"publish","type":"post","link":"https:\/\/hudecekpetr.cz\/cs\/pracovni-den-programatora\/","title":{"rendered":"Pracovn\u00ed den program\u00e1tora"},"content":{"rendered":"<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/hudecekpetr.cz\/wp-content\/uploads\/2021\/04\/scripts.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-thumbnail wp-image-1083\" src=\"https:\/\/hudecekpetr.cz\/wp-content\/uploads\/2021\/04\/scripts-150x150.png\" alt=\"\" width=\"150\" height=\"150\" \/><\/a>Jak vypad\u00e1 pracovn\u00ed den program\u00e1tora? To je ot\u00e1zka, kterou jsme j\u00e1 i dal\u0161\u00ed m\u011bli na st\u0159edn\u00ed \u0161kole, a m\u011bli jsme probl\u00e9my si ji zodpov\u011bd\u011bt. Moje p\u0159edstava byla, \u017ee sed\u00edm v m\u00edstnosti, s\u00e1m a p\u0159ed po\u010d\u00edt\u00e1m, a p\u00ed\u0161u \u0159\u00e1dek za \u0159\u00e1dkem k\u00f3du do Visual Studia, z n\u011bho\u017e nakonec vyjde hotov\u00fd program.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ale to mi nesta\u010dilo. Jist\u011b, program\u00e1tor v pr\u00e1ci p\u00ed\u0161e k\u00f3d, ale jak to p\u0159esn\u011b vypad\u00e1? Co vlastn\u011b d\u011bl\u00e1? Pracuje s\u00e1m nebo s dal\u0161\u00edmi? Jak v\u00ed, co m\u00e1 programovat?\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tyto ot\u00e1zky se pokus\u00edm zodpov\u011bd\u011bt v tomto \u010dl\u00e1nku. Moje informace poch\u00e1z\u00ed z m\u00fdch vlastn\u00edch zku\u0161enost\u00ed p\u0159i programov\u00e1n\u00ed v pozici zam\u011bstnance, a tak\u00e9 ze zku\u0161enost\u00ed m\u00fdch kamar\u00e1d\u016f, koleg\u016f a zn\u00e1m\u00fdch.\u00a0<\/span><\/p>\n<p><!--more--><\/p>\n<p><span style=\"font-weight: 400;\">Samoz\u0159ejm\u011b je pravda, \u017ee ka\u017ed\u00e1 firma je trochu jin\u00e1; dokonce i ka\u017ed\u00fd den je trochu jin\u00fd, a tak\u00e9 ka\u017ed\u00fd program\u00e1tor. V tomto \u010dl\u00e1nku popisuji, co mysl\u00edm, \u017ee je nej\u010dast\u011bj\u0161\u00ed, ale v\u016fbec bych se nedivil, kdyby pro n\u011bkoho jin\u00e9ho pracovn\u00ed den vypadal docela jinak.<\/span><\/p>\n<p><b>Skladba dne. <\/b><span style=\"font-weight: 400;\">Pracuje\u0161 v\u011bt\u0161inou osm hodin denn\u011b, z nich\u017e zhruba:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">hodinu v\u011bnuje\u0161 komunikaci v t\u00fdmu;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">hodinu vyjas\u0148ov\u00e1n\u00ed po\u017eadavk\u016f;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">hodinu n\u00e1hodn\u00fdm v\u011bcem okolo; a<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">zb\u00fdvaj\u00edc\u00edch p\u011bt hodin \u010dten\u00ed a psan\u00ed k\u00f3du.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Psan\u00ed k\u00f3du tak z\u016fst\u00e1v\u00e1 jednou z nejd\u016fle\u017eit\u011bj\u0161\u00ed v\u011bc\u00ed, co d\u011bl\u00e1\u0161 (bez toho, koneckonc\u016f, nebude program), ale oproti pr\u00e1ci na vlastn\u00edm hobby projektu se p\u0159id\u00e1v\u00e1 mnoho dal\u0161\u00edch aktivit.<\/span><\/p>\n<p><b>Komunikace v t\u00fdmu. <\/b><span style=\"font-weight: 400;\">Nejv\u011bt\u0161\u00ed rozd\u00edl oproti m\u00e9 p\u0159edstav\u011b programov\u00e1n\u00ed je, nakolik moc je komunikace sou\u010d\u00e1st\u00ed pr\u00e1ce. Pracuje\u0161 v t\u00fdmu 2 a\u017e 10 program\u00e1tor\u016f tak, \u017ee spole\u010dn\u011b vyv\u00edj\u00edte stejn\u00fd produkt: v\u0161ichni spolupracujete na stejn\u00e9m zdrojov\u00e9m k\u00f3du, \u010dasto pro jedinou aplikaci (nap\u0159. \u201cMalov\u00e1n\u00ed\u201d) nebo, pokud je program p\u0159\u00edli\u0161 velk\u00fd, dokonce na \u010d\u00e1sti aplikace (nap\u0159. \u201ckontrola anglick\u00e9 gramatiky v Google dokumentech\u201d).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">S kolegy mluv\u00ed\u0161 o pl\u00e1nech na dal\u0161\u00ed v\u00fdvoj, \u017e\u00e1d\u00e1\u0161 je o pomoc a pomoc poskytuje\u0161, domlouv\u00e1te se na detailech \u00fakol\u016f a \u0159e\u0161\u00edte spole\u010dn\u00e9 probl\u00e9my. \u010casto se stane, \u017ee pot\u0159ebuje\u0161 pracovat na \u010d\u00e1sti k\u00f3du, kter\u00e9 tv\u016fj kolega rozum\u00ed v\u00edc ne\u017e ty. V takov\u00e9m p\u0159\u00edpad\u011b za n\u00edm p\u0159ijde\u0161, a v\u011bc proberete spolu.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nov\u011b napsan\u00fd k\u00f3d proch\u00e1z\u00ed <\/span><i><span style=\"font-weight: 400;\">code review<\/span><\/i><span style=\"font-weight: 400;\">: a\u017e ho nap\u00ed\u0161e\u0161, tak v\u011bt\u0161inou p\u0159ijde dal\u0161\u00ed program\u00e1tor, pod\u00edv\u00e1 se na n\u011bj, pokus\u00ed se zjistit, jestli je cel\u00fd v po\u0159\u00e1dku, pop\u0159. jestli jsi v n\u011bm na n\u011bco nezapomn\u011bl, a pak se spole\u010dn\u011b domluv\u00edte na tom, jestli je\u0161t\u011b k\u00f3d trochu nepoupravit. K\u00f3d tak nikdy nen\u00ed jen \u201ctv\u016fj\u201d, pracujete na n\u011bm <\/span><i><span style=\"font-weight: 400;\">spolu<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ve v\u0161ech t\u00fdmech se tak\u00e9 konaj\u00ed r\u016fzn\u00e9 sch\u016fzky (\u201cmeetingy\u201d), p\u0159i kter\u00fdch se \u010d\u00e1st t\u00fdmu nebo cel\u00fd t\u00fdm sejde v jedn\u00e9 m\u00edstnosti (do roku 2019; od roku 2020 se kv\u016fli covidu-19 jedn\u00e1 o videohovory nebo audiohovory) a mluv\u00ed o n\u011bjak\u00e9m t\u00e9matu. Vtipkuje se, \u017ee jak postupuje\u0161 v kari\u00e9\u0159e na vy\u0161\u0161\u00ed pozice, tak p\u00ed\u0161e\u0161 st\u00e1le m\u00e9n\u011b k\u00f3du a \u00fa\u010dastn\u00ed\u0161 se st\u00e1le v\u00edce meeting\u016f.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ve v\u011bt\u0161\u00edch spole\u010dnostech tak\u00e9 \u010dasto komunikuje\u0161 s lidmi <\/span><i><span style=\"font-weight: 400;\">mimo <\/span><\/i><span style=\"font-weight: 400;\">sv\u016fj t\u00fdm, proto\u017ee va\u0161e pr\u00e1ce n\u011bjak souvis\u00ed s prac\u00ed n\u011bkoho jin\u00e9ho. Pro takovou komunikaci se pou\u017e\u00edv\u00e1 e-mail nebo n\u011bjak\u00fd instant messenger, nap\u0159. Microsoft Teams.<\/span><\/p>\n<p><b>Vyjas\u0148ov\u00e1n\u00ed po\u017eadavk\u016f. <\/b><span style=\"font-weight: 400;\">V pozici zam\u011bstnance-program\u00e1tora bude v\u011bt\u0161inou zad\u00e1vat c\u00edle n\u011bkdo jin\u00fd ne\u017e ty s\u00e1m. Tyto c\u00edle ale \u010dasto nebudou \u00fapln\u011b p\u0159esn\u00e9. M\u016f\u017ee se k tob\u011b nap\u0159\u00edklad dostat zad\u00e1n\u00ed \u201cud\u011blej, aby se rozd\u011blan\u00fd obr\u00e1zek automaticky ukl\u00e1dal ka\u017ed\u00fdch p\u011bt minut,\u201d ale ty je\u0161t\u011b bude\u0161 muset domyslet nap\u0159. kam se m\u00e1 ukl\u00e1dat, co se m\u00e1 st\u00e1t, pokud u\u017eivatel je\u0161t\u011b obr\u00e1zek ani nepojmenoval, nebo co zobrazit, pokud automatick\u00e9 ulo\u017een\u00ed z n\u011bjak\u00e9ho d\u016fvodu sel\u017ee. Ve v\u011bt\u0161\u00edch t\u00fdmech nebo spole\u010dnostech b\u00fdv\u00e1 \u010dasto v\u00fdsledek vyjas\u0148ov\u00e1n\u00ed ve form\u011b textu v angli\u010dtin\u011b, od kter\u00e9ho se pak m\u016f\u017ee\u0161 odrazit p\u0159i samotn\u00e9m programov\u00e1n\u00ed.\u00a0<\/span><\/p>\n<p><b>\u010cten\u00ed k\u00f3du. <\/b><span style=\"font-weight: 400;\">Projekty, na kter\u00fdch bude\u0161 d\u011blat, jsou v\u011bt\u0161inou sp\u00ed\u0161e v\u011bt\u0161\u00ed ne\u017e men\u0161\u00ed, a nedok\u00e1\u017ee\u0161 je do hlavy pojmout cel\u00e9. Proto v\u011bt\u0161inu \u010dasu str\u00e1v\u00ed\u0161 \u010dten\u00edm zdrojov\u00e9ho k\u00f3du: bu\u010f toho, co napsali jin\u00ed, nebo i sv\u00e9ho vlastn\u00edho, jeho\u017e strukturu u\u017e jsi mezit\u00edm zapomn\u011bl. B\u011bhem \u010dten\u00ed k\u00f3du se sna\u017e\u00ed\u0161 si v hlav\u011b vytvo\u0159it ment\u00e1ln\u00ed obraz situace a ujasnit si, kde mus\u00ed\u0161 ud\u011blat zm\u011bnu.\u00a0<\/span><\/p>\n<p><b>Psan\u00ed k\u00f3du. <\/b><span style=\"font-weight: 400;\">Podstatnou \u010d\u00e1st pr\u00e1ce pak samoz\u0159ejm\u011b v\u011bnuje\u0161 samotn\u00e9mu psan\u00ed nov\u00e9ho zdrojov\u00e9ho k\u00f3du. \u010c\u00e1st k\u00f3du, kter\u00fd bude\u0161 ps\u00e1t, budou opravy chyb (\u201cbug\u016f\u201d). Je mnoho technik, jak hledat a nach\u00e1zet chyby a opravovat je, a bude\u0161 nejsp\u00ed\u0161 pou\u017e\u00edt v\u0161echny. Ob\u010das tak, \u017ee bude\u0161 p\u0159\u00edd\u00e1vat do k\u00f3du lad\u00edc\u00ed p\u0159\u00edkazy, ob\u010das bude\u0161 pro\u010d\u00edtat logy, ob\u010das bude\u0161 program proch\u00e1zet krok po kroku s debuggerem, a ob\u010das bude\u0161 prost\u011b jen spou\u0161t\u011bt program znovu a znovu.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Velk\u00e1 \u010d\u00e1st tv\u00e9 pr\u00e1ce bude nejsp\u00ed\u0161e tak\u00e9 programov\u00e1n\u00ed nov\u00fdch funkc\u00ed, p\u0159i kter\u00e9m bude\u0161 nejen ps\u00e1t samotn\u00fd k\u00f3d, ale i vym\u00fd\u0161let, co vlastn\u011b m\u00e1 funkce p\u0159esn\u011b d\u011blat, navrhovat, kter\u00e9 jej\u00ed kusy d\u00e1t do jak\u00e9 \u010d\u00e1sti k\u00f3du, nebo vym\u00fd\u0161let, jak\u00fdm zp\u016fsobem lze funkci naimplementovat nejefektivn\u011bji.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">U mnoha projekt\u016f jsou tak\u00e9 d\u016fle\u017eit\u00e9 testy, obzvl\u00e1\u0161t\u011b automatick\u00e9 jednotkov\u00e9 testy (\u201cunit testy\u201d). Nen\u00ed nezvykl\u00e9, \u017ee str\u00e1v\u00ed\u0161 psan\u00edm test\u016f v\u00edce \u010dasu ne\u017e psan\u00edm samotn\u00e9ho funk\u010dn\u00edho k\u00f3du, obzvl\u00e1\u0161t\u011b pokud pracuje\u0161 na v\u011bt\u0161\u00ed aplikaci, u kter\u00e9 je jej\u00ed stabilita d\u016fle\u017eit\u011bj\u0161\u00ed.<\/span><\/p>\n<p><b>Bug tracking. <\/b><span style=\"font-weight: 400;\">Kdy\u017e pracuje\u0161 na v\u011bt\u0161\u00edm projektu, \u00fakoly jsou rozd\u011blen\u00e9 na pod\u00fakoly a pak je\u0161t\u011b v\u00edce na pod\u00fakoly. Nikdo by nev\u011bd\u011bl, jak splnit \u00fakol typu \u201cNaprogramuj obr\u00e1zkov\u00fd editor,\u201d tedy se \u00fakol rozd\u011bl\u00ed na pod\u00fakoly typu \u201cp\u0159idej funkci na prom\u011bnu obr\u00e1zku na \u010dernob\u00edl\u00fd obr\u00e1zek\u201d nebo \u201cp\u0159idej export do form\u00e1tu BMP\u201d nebo \u201coprav tu chybu, \u017ee editor spadne, kdy\u017e vybere\u0161 b\u00edlou barvu\u201d. Tyto \u00fakoly si t\u00fdm udr\u017euje v datab\u00e1zi, kter\u00e9 se \u0159\u00edk\u00e1 \u201cbug tracking system\u201d.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Kdy\u017e se pak \u010dlov\u011bk v t\u00fdmu rozhoduje, na jak\u00e9m \u00fakolu by m\u011bl nyn\u00ed pracovat, m\u016f\u017ee to \u010dasto ud\u011blat tak, \u017ee se pod\u00edv\u00e1 do t\u00e9to datab\u00e1ze, vybere si n\u011bjak\u00fd z t\u011bchto \u00fakol\u016f a za\u010dne na n\u011bm pracovat (nap\u0159. vyjasn\u011bn\u00edm po\u017eadavk\u016f). \u00dakoly ze syst\u00e9mu tak\u00e9 m\u016f\u017ee p\u0159i\u0159azovat nad\u0159azen\u00fd kolega nebo je m\u016f\u017ee t\u00fdm vyb\u00edrat spole\u010dn\u011b na pl\u00e1novac\u00ed sch\u016fzce.<\/span><\/p>\n<p><b>Spr\u00e1va verz\u00ed. <\/b><span style=\"font-weight: 400;\">Zdrojov\u00fd k\u00f3d, na kter\u00e9m v\u00e1\u0161 t\u00fdm pracuje, b\u00fdv\u00e1 ulo\u017een v \u201csyst\u00e9mu spr\u00e1vy verz\u00ed\u201d, datab\u00e1zi, kter\u00e1 si pamatuje v\u0161echny verze zdrojov\u00e9ho k\u00f3du tak, \u017ee nem\u016f\u017ee\u0161 omylem smazat d\u016fle\u017eit\u00fd k\u00f3d (resp. pokud ho sma\u017ee\u0161, je snadn\u00e9 ho obnovit). Tento syst\u00e9m je tak\u00e9 zodpov\u011bdn\u00fd za automatick\u00e9 skl\u00e1d\u00e1n\u00ed zm\u011bn od v\u00edce program\u00e1tor\u016f dohromady. Tedy pokud ty p\u0159id\u00e1\u0161 jednu funkci a z\u00e1rove\u0148 tv\u016fj kolega p\u0159id\u00e1 druhou funkci, ve v\u00fdsledku bude m\u00edt zdrojov\u00fd k\u00f3d ob\u011b funkce.<\/span><\/p>\n<p><b>Pl\u00e1nov\u00e1n\u00ed. <\/b><span style=\"font-weight: 400;\">\u010c\u00e1st \u010dasu tak\u00e9 v\u011bnuje\u0161 sestavov\u00e1n\u00ed architektury syst\u00e9mu a dlouhodob\u00e9mu pl\u00e1nov\u00e1n\u00ed. To je t\u0159eba obzvl\u00e1\u0161t\u011b u n\u00e1ro\u010dn\u011bj\u0161\u00edch \u00fakol\u016f, kter\u00e9 m\u016f\u017eou zabrat t\u0159eba n\u011bkolik m\u011bs\u00edc\u016f. Toto se d\u00e1 d\u011blat nad pap\u00edrem a tu\u017ekou, ale \u010dasto pot\u0159ebuje\u0161 si i hledat informace na internetu a v k\u00f3du nebo komunikovat s kolegy.<\/span><\/p>\n<p><b>Ostatn\u00ed. <\/b><span style=\"font-weight: 400;\">Krom\u011b toho se v\u017edy naskytne hromada dal\u0161\u00edch v\u011bc\u00ed, kter\u00e9 ale dohromady nezaberou tolik \u010dasu. Nap\u0159\u00edklad vypl\u0148ov\u00e1n\u00ed formul\u00e1\u0159\u016f, sch\u016fzky ohledn\u011b hodnocen\u00ed v\u00fdkon\u016f, pov\u00edd\u00e1n\u00ed si o po\u010d\u00edta\u010dov\u00fdch hr\u00e1ch, z\u00e1bavn\u00e9 aktivity pro stmelov\u00e1n\u00ed t\u00fdmu, u\u010den\u00ed se nov\u00fdch programovac\u00edch technik nebo jazyk\u016f, a dal\u0161\u00ed.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Z\u00e1v\u011brem. <\/b><span style=\"font-weight: 400;\">Programov\u00e1n\u00ed z pozice zam\u011bstnance mi st\u00e1le p\u0159ijde jako nejlep\u0161\u00ed povol\u00e1n\u00ed, kter\u00e9 jsem si mohl vybrat. Je je\u0161t\u011b z\u00e1bavn\u011bj\u0161\u00ed, rozmanit\u011bj\u0161\u00ed a zaj\u00edmav\u011bj\u0161\u00ed, ne\u017e jsem si to na st\u0159edn\u00ed \u0161kole p\u0159edstavoval. T\u00e9m\u011b\u0159 v\u0161e, co jako program\u00e1tor d\u011bl\u00e1m, m\u011b bav\u00ed a za jinou kari\u00e9ru bych nem\u011bnil.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pokud v\u00e1s programov\u00e1n\u00ed zaujalo, tak mohu doporu\u010dit programov\u00e1n\u00ed i jako povol\u00e1n\u00ed.<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>Jak vypad\u00e1 pracovn\u00ed den program\u00e1tora? To je ot\u00e1zka, kterou jsme j\u00e1 i dal\u0161\u00ed m\u011bli na st\u0159edn\u00ed \u0161kole, a m\u011bli jsme probl\u00e9my si ji zodpov\u011bd\u011bt. Moje p\u0159edstava byla, \u017ee sed\u00edm v m\u00edstnosti, s\u00e1m a p\u0159ed po\u010d\u00edt\u00e1m, a p\u00ed\u0161u \u0159\u00e1dek za \u0159\u00e1dkem k\u00f3du do Visual Studia, z n\u011bho\u017e nakonec vyjde hotov\u00fd program. Ale to mi nesta\u010dilo. Jist\u011b, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-1081","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/hudecekpetr.cz\/cs\/wp-json\/wp\/v2\/posts\/1081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hudecekpetr.cz\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hudecekpetr.cz\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hudecekpetr.cz\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hudecekpetr.cz\/cs\/wp-json\/wp\/v2\/comments?post=1081"}],"version-history":[{"count":2,"href":"https:\/\/hudecekpetr.cz\/cs\/wp-json\/wp\/v2\/posts\/1081\/revisions"}],"predecessor-version":[{"id":1084,"href":"https:\/\/hudecekpetr.cz\/cs\/wp-json\/wp\/v2\/posts\/1081\/revisions\/1084"}],"wp:attachment":[{"href":"https:\/\/hudecekpetr.cz\/cs\/wp-json\/wp\/v2\/media?parent=1081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hudecekpetr.cz\/cs\/wp-json\/wp\/v2\/categories?post=1081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hudecekpetr.cz\/cs\/wp-json\/wp\/v2\/tags?post=1081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}