Bystroushaak's blog / Czech section / Jak se stát programátorem / Ještě jednou o motivaci

Ještě jednou o motivaci

Většina lidí co se mě na něco ptají na to podle mého názoru nemá. Ne že by to nezvládali po stránce inteligenční, nebo neměli dost času, ale zkrátka mají úplně špatnou představu o tom, co tom obnáší. Mentální obraz, který si vytvořili a který se budou snažit následovat zkrátka nepasuje na realitu a tak to po půl roce snahy vzdají.

Ptají se; Jak se můžu naučit programovat/hackovat?

Přitom však vidí pouze výsledek, tedy programátora/hackera a ne cestu, která k tomu vede.

Připravte se na to, že programování je pomalý proces. Jednak se pomalu něco učíte, a pak pomalu něco vytváříte. Ve chvíli kdy se začnete učit programovat a počítač konečně dělá věci, které po něm chcete jste na úplném začátku.

Je to stejné, jako když jste jako dítě přišli do první třídy a mysleli si, že škola vás naučí psát a počítat a to je všechno. Časem však zjistíte, že se na to navazuje prvouka, dějepis, čeština a spousta dalších. Později vám navíc dojde, že po devíti letech to bude chtít ještě alespoň čtyři střední a ideálně i pět vysoké a pak stejně pořád nic neumíte a musíte získat praxi. Síla, co?

Spousta lidí přichází s nulovou představou o náročnosti projektů. Pro ilustraci jsem se rozhodl uvést několik příkladů z praxe:

Vlastní 3D hra

Zažil jsem lidi, kteří si představovali, že si naprogramují od píky vlastní 3D hru. Neříkám, že to není dobrá představa, ale oni naprosto nemají tušení, kolik dřiny a člověkoroků to obnáší.

Jeden můj kolega, který o svém volném čase vydělává peníze programováním redakčních systémů v PHP trval na tom ať ho naučím vytvářet hry v C++. Samozřejmě jsem ho odmítl, ale on byl velmi neodbytný, takže mě nakonec přesvědčil pro malý pokus.

Dvanáct hodin jsem mu v kuse trpělivě odpovídal na dotazy o C++ a vysvětloval mu vše, co nebylo jasné. Po dvanácti hodinách vysvětlování jsem byl tak ochraptělý, že jsem nemohl mluvit.

Nepovažuji se za nějak extra dobrého učitele, ale opravdu jsem si dal záležet, procházeli jsme spolu tutoriály, které jsou na internetu dostupné a já mu vysvětloval co a jak funguje, kreslil mu to a vymýšlel různé analogie. Přesto na konci dne skoro nic neuměl. Přitom se jednalo o programátora, který již několik let programoval v PHP a základy měl zmáknuté.

Kolega si pak uvědomil, že vlastně hru programovat nechce, protože viděl jen samotnou hru, nikoliv cestu k ní.

Nechci říct, že je to nemožné, ale pokud počítáte s tím, že tu hru napíšete za týden učení se, nebo i za měsíc, tak se pravděpodobně krutě mýlíte a budete zklamaní, že se celou tu dobu učíte nějaké blbosti o pointerech, objektech a dalších blbostech, které vás vůbec nezajímají. K samotnému hernímu vývoji se dostanete až po mnoha měsících.

Program na wifi

Dobrý den, chtěl bych se zeptat, jestli se dá vytvořit program, který by umožnil připojit se na WIFI bez zadání hesla, protože nám se někdo připojil na již zmiňované WIFI a ''postahoval" si celkem takových 160 Gb souborů. Též bych se chtěl zeptat jestli se dá vytvořit program, který by tomuto zamezil.

Pokud se moc nevyznáte, pravděpodobně vám to nepřijde jako složitá otázka. Zlatá naivita.

Malá odbočka

Wifi v dnešní době používá v podstatě tři druhy šifrování - WEP, WPA a WPA2. První zmiňované (WEP) bylo zlomeno již před roky, přesto ho spousta lidí stále používá. Na internetu existuje hned několik volně dostupných programů, které vám umožní se do Wifi sítě zabezpečené WEPem nabourat během pár minut. Nezáleží co přitom majitel nastavil za heslo. Prostě ho zlomíte, i kdyby bylo sebesložitější.

WPA je navržené trochu lépe, přesto je však možné ho s patřičným hardwarem prolomit. Nejedná se však o úplně levnou záležitost, protože musíte nakoupit spoustu hardware, který vám poskytne brutální výkon.

WPA2 je považováno za relativně bezpečné a pokud zvolíte silné heslo, měla by být vaše Wifi síť v bezpečí.

Zpět k dotazu

Vraťme se nyní k původnímu dotazu, který mi kdosi skutečně poslal. Jeho zajímá, zda se dá vytvořit program, který by mu umožnil se na zabezpečené Wifi sítě připojovat. O jejich zabezpečení a o tom jaké existují tří typy nejspíš vůbec nic neví.

Jak už jsem psal, WEP je možné docela jednoduše prolomit pomocí programu, který se dá stáhnout. Nezaměňujme však použití tohoto programu s jeho vytvořením. Vytvoření programu pro lámání WEPu určitě nebylo nic lehkého a podle mě to trvalo celé týdny a měsíce studia jen samotného problému šifrování a matematiky kolem, nehledě na samotné psaní kódu.

Beze stopy hanby se přiznám, že podobný program bych v současnosti pravděpodobně nezvládl naprogramovat, jelikož to přesahuje vše co umím. Trvalo by mi měsíce dostat se na potřebnou úroveň, abych tomu porozuměl a byl schopný celý problém pochopit. Matematika, která se k tomu vztahuje prostě není úplně triviální.

Na druhou stranu bych zvládl napsat script (program), který využívá již existující program pro lámání šifrování a nějak celou záležitost automatizuje. Popravdě, už jsem něco podobného napsal.

Dokázal bych napsat program, který matematicky zlomí WPA, či WPA2 a umožní vám ho lámat bez super-výkonného hardware? Rozhodně ne. Možná po dvaceti letech usilovného studia matematických problémů, které obklopují celou problematiku šifrování. Na podobných věcech spolupracují celé teamy lidí, kteří jsou o moc chytřejší než já. Není možné znát úplně všechno a tak musíte využívat funkce jednotlivých specialistů, z nichž každý se na programu podílí trochu jinak.

Abych se vrátil k tomu co jsem tím vším chtěl říct: pokud si dáte jako nováček za cíl napsat něco podobného, tak prostě neuspějete. Pokud by jste v sobě někde vzali obrovskou vlnu motivace a odhodlání a rozhodli se pochopit celou tu problematiku kolem, tak to možná zvládnete, ale bude to trvat celé roky. Za tu dobu pravděpodobně zmizí původní důvod proč jste se do něčeho takového chtěli pouštět, pořídíte si rodinu, začnete pracovat a vůbec budete někdo úplně jiný, někde úplně jinde.

Pointa

Pokud jste úplní nováčci a hodláte se pustit do programování, nedávejte si za cíl konkrétní projekty, ale samotnou cestu k nim. Cesta je cíl.

Chtějte být programátorem, protože je skvělé umět programovat, protože vás to zajímá a baví a dává vám to moc pracovat se složitými věcmi.

Nezačínejte programovat proto že chcete stvořit projekt X. Pokud jste v takové situaci, radši si někoho najměte, nebo najděte již existující program a ušetříte váš život, čas, frustraci i peníze. V opačném případě velmi pravděpodobně vyhoříte hned ze začátku. Učení se základům trvá celé měsíce a roky a pravděpodobně naprosto neodpovídá tomu, co očekáváte. Budete se učit programovat, ne pracovat na projektu X.

Become a Patron