Je programovanie ťažké?

Ľudia sa ma pýtajú, či je programovanie ťažké. Stále.
Dobehnú za mnou na ulici kričia mi do ksichtu “JE PROGRAMOVANIE ŤAŽKÉ??”

Čo je trochu divné, ale vždy sa snažím pomôcť.

🔥 Hej, spravil som pokračovanie: AKO SA NAUČIŤ PROGRAMOVAŤ:

Programovanie nie je ťažké.

Pozri, keď programuješ robota, ktorý musí vystreliť a spraviť 3 kolečká okolo galaxie a pristáť na Marse dokonale jak mačka keď padne zo stola, tak áno, to je ťažké. Skoro tak ťažké ako naprogramovať Uncharted 4.

Ale to je jak povedať, že jazdiť na bicykli je ťažké, keď sa porovnávaš výlučne so Saganom.

Väčšina z nás programuje stránky.
Možno aplikácie do telefónu.
Programovanie nie je ťažké.

Ale je náročné.
Časovo.
A vyžaduje si jemné prestavenie štýlu rozmýšľania.

Jedna vec je naučiť sa všetky tie zátvorky a bodkočiarky a tak. Kam má ktorá ísť a prečo. To ale nie je programovanie. Ty musíš najprv poznať slová, až potom môžeš napísať román.

Programovanie od teba vyžaduje, aby si analyzoval každý moment. Premyslel všetky situácie, ktoré môžu nastať.

Jak Robert Downey v tom Sherlock filme, keď hádže pasťáka, s tým rozdielom, že on má na to sekundu a je krajší. Ty máš čas. Čo je dôvod, prečo vyrobiť jedno menu nám vždy trvá týždeň.

programovanie, 1:1 presne takto to vyzerá #celýdeňkaždýdeň

V mojich kurzoch mám záľubu popisovať programovanie na debilných príkladoch. Hore je video, kde vysvetľujem nad čím všetkým musíš rozmýšľať, keby chceš naprogramovať podanie ruky.

Keby som chcel, aby si mi vysvetlil, ako si zaviažeš šnúrky.
Povedal by si “Um… šak… chytím, spravím mašľu a zaviažem.”

Počítač ale nevie, čo je chytím, mašľa, zaviažem alebo šnúrka. A ten popis nie je ani zďaleka dosť detailný. Nájdi topánky. Mám topánky? Majú šnúrky? Obe? Vezmi ľavú ruku, vezmi pravú ruku, začni pohyb smerom k topánkam, už sa ich dotýkam? Ľavú do ľavej, pravú do pravej, zdvihni aby si mal zvislo. Rovnaká dĺžka? Prekríž. <Detailný popis procesu spravenia slučky, na ktorý neni čas.> Na záver zatiahnem, ale nie tak silno, aby som ich pretrhol.

Toto je zjednodušený popis.
A teraz čo ak majú uzol?
Džízs.

Ok, sprav mi špagety.
Tvoj popis: Hodím do vody na 5 minút, hotovo.

Programátorov popis:

V prvom rade, mám špagety? IF mám THEN idem ďalej. IF nemám, musím obchod. Ako obchod? Lokalizovať najbližší. Obliecť sa. Vykonať zaviazanie šnúrok z minulého príkladu. Rovnako pre každý gombík na košeli. Nájsť auto. Lokalizovať kľúče. Nájsť správny, zasunúť, otočiť, ale nie príliš, aby som neurval zámok, každý milimeter posunu kontrolovať, či už nenarážam na odpor, vtedy vrátiť do štartovnej polohy, audiovizuálne overiť vyskočenie čudlíka. IF vyskočil, ideme ďalej. IF nevyskočil, zopakujeme celý proces ale do opačnej strany. IF nevyskočil, zopakujeme celý proces, ale s iným kľúčom. Otvoriť dvere. Každý milimeter pohybu kontrolovať, či sa už zmestím a prestať než ich odtrhnem. Začať sa skláňať. Každý milimeter pohybu kontrolovať, či si neudriem moju hlavu krásnu nevinnú…

A to som chcel robiť špagety.

Každú činnosť, nad ktorou ako normálny zdravý človek nerozmýšľaš, musíš rozbiť na kúsky. Analyzovať všetko, čo si sa naučil robiť automaticky.
Keď si hovoríš, že táto úroveň detailov je šľahnutá, máš pravdu.
Je šľahnutá a je to taktiež práca programátora.

V skutočnosti máš appku a chceš od používateľa, aby zadal meno.
Čokoľvek tam napíše nemôžeš v tvojom programe použiť.
Najskôr musíš skontrolovať:

  • zadal vôbec niečo?
  • ak niečo zadal, sú to písmená alebo len 15 medzier?
  • ak zadal meno ale pred ním a za ním 3 medzery, pretože sa oprel o klávesnicu, mali by sme ich vymazať
  • zadal to meno veľkým písmenom? ak nie, zmeníme prvé písmeno na veľké
  • je to meno kratšie ako limit na dĺžku mena v našej databáze?
  • zadal jedno slovo alebo viac? ak viac, vieme to uložiť do databázy?
  • zadal naozaj meno alebo sú to programátorské znaky, ktorými sa nám snaží nabúrať do databázy? ak hej, musíme tie znaky odstrániť

Pre každú jednu z kontrôl musíš napísať 2 vetvy kódu — ak sa to podarí, ak sa to nepodarí. Tvoj program sa nesmie rozsypať a tvoj používateľ musí dostať inteligentnú odpoveď a radu, čo musí opraviť.

Nie sú to ťažké otázky a nie sú to ťažké odpovede.
Ako programátor na nimi ale musíš rozmýšľať a napísať kód pokrývajúci všetky možnosti. Nie je to tažké, len je to trochu piplačka.

Ak všetky kontroly prejdú, môžeš ísť na ďalšie políčko vo formulári.
Možno email. A zopakovať ten istý proces.

Keď opakuješ ten istý proces, môžeš si spraviť tzv. funkciu.
Keď máš viac políčok, môžeš všetky prebehnúť v tzv. cykle.
A na každé z nich spustiť funkciu, ktorá ho skontroluje.

BAAAM.
Už programuješ.

Toto znie hrozne komplikovane a abstraktne. Lebo rozmýšľaš nad tým, ako všetky tie veci máš vedieť dopredu. Že čo všetko treba kontrolovať. Neboj, nemusíš to vedieť dopredu, nazbieraš to postupne. Žiaden programátor si nesadne k mašine s kompletným plánom celého kódu v hlave.

Ty len začneš pracovať a problémy sa začnú objavovať postupne. A vždy keď sa jeden objaví, ty ho vyriešiš. Cítiš sa jak frajer najväčší, ideš ďalej, vyskočí ďalšia hádanka, vyriešiš rébus, endorfíny, ideš ďalej. Tie problémy zväčša nie sú tak veľké a prekonanie každého = pocit víťazstva a múdro-sa-cítenia.

Najprv sa naučíš naprogramovať tú aplikáciu. Akokoľvek to len pôjde. Potom si ju začneš skúšať, ťukať, stĺačať chujoviny, zadávať hlúposti. Vždy keď sa rozbije, pridáš novú kontrolu. Keď ju vypustíš do sveta, ľudia ju začnú rozbíjať, nájdeš čo tam popísali, postláčali, pridáš kontroly.

Keď to spravíš párkrát, naučíš sa rozmýšľať štýlom — čo všetko by tam ten somár teoreticky mohol napísať? A napíšeš tú kontrolu dopredu. A v tom momente sa z teba stane programátor.

A vtedy pochopíš, prečo programátorom všetko tak dlho trvá.
Nie preto, že by to bolo “ťažké”.
Ale preto, že sa hrajú na psychológa.
A snažia sa zistiť, čo všetko tí ľudia blbí môžu rozbiť.

Keď vidíš programátora zamyslene hľadieť niekam do medzi-priestoru, nechaj ho.

Práve rozmýšľa nad tým, ako si Štefan po obede vytrie zadok s jeho naprogramovaným formulárom, keď si bude objednávať lístky na autobus.

Programovanie je zdĺhavé.
A plné malých prekážok na preskočenie.
Ale je to taktiež sranda.
Pretože je to neustále riešenie drobných problémov.
Vždy keď vyriešiš problém, cítiš sa dobre.
Každý z nás je k tomu… naprogramovaný. (Ugh)

A programovanie ti dáva okamžitú odozvu. Niečo nefunguje, vstúpiš do toho, začne to fungovať, hneď to vidíš a ruky letia k nebesiam a za tebou hrá:

Každú chvíľu.
Je to super.
A postupom času sa naučíš rozmýšľať nad každou drobnosťou.

Programovanie v tvojej hlave zapne analyzátor, ktorý spôsobí, že budeš kráčať svetom a na všetko ukazovať prstom a hovoriť “prečo?”, “prečo toto?”, “prečo takto?” a každý proces, každý produkt, každú rutinu budeš v hlave prekrúcať a hľadať lepšie riešenie a už nikdy, nikdy, až kým nezomrieš, nebudeš naveky s ničím spokojný.

Vlastne beriem späť.
Máš pravdu.
Je to peklo.
Ser na to.
Nauč sa štrikovať.

Ale keby chceš programovať, kukni môj nový kurz.
Základy programovania a OOP.


Okrem sprostých článkov učím ľudí programovať. Mám kopu online kurzov (HTML/CSS/JS/Responsive design/PHP/MySQL/Laravel/OOP/WordPress, …)
a môžeš ich mať všetky
všetky mať za 249 eur.


The Witness, check it out

)

yablko (Roman Hraška)

Written by

skús moje kurzy vo Vianočnej cene www.brm.sk/vianoce

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade