Zpět


Mandays - moje první webová aplikace v Javě a povzbuzení pro ty, co taky po večerech ťukají pro radost




Trvalo mi to opravdu dlouho - více než 2 roky s  přestávkami novopečeného tatíka, ale světlo světa spatřila první aplikace, kterou jsem spustil a nezůstane jen v šuplíku.

Předcházely jí jiné drobné projekty a úkoly, které jsem plnil při samostudiu. Až přišel okamžik, kdy jsem potřeboval trochu víc než jen, že kus kódu sčítá dvě čísla a pak kontroluje, jestli je nebo není prvočíslem.

Chtěl jsem něco uceleného, co bude dávat smysl a bude mít nějaký účel.

Jednoho dne mě fakt vytočilo, jak otravné je hledání toho správného řádku a sloupce v plánovacím kalendáři.

A tehdy jsem si asi za 3 hodiny zbastlil počítačku pracovních dnů a hodin v Excelu. Dodnes hodnoty těchto výpočtů tvoří základ celé appky. Jsou jimi hodnoty pro jednotlivé měsíce na 50 let dopředu. Nakonec jsem si řekl, co okolo toho nevyrobit GUI a k tomu jednoduché API pro strojový přístup. Tak vznikla myšlenka Mandays.

Výsledek můžete posoudit na https://mandayscz.herokuapp.com/

P.S. - appka se po 30 minutách nečinnosti "uspí", pak déle trvá, než nastartuje. Buďte trpěliví.

Technologie

Aplikaci jsem napsal v Java 8. Co stojí za zmínku je, že jsem se vydal složitější cestou. Nepoužil jsem vůbec Spring. Používám spíš věci podle standardu EE Javy. Takže třeba API na Spring Boot bych měl za 2 hodiny, ale s Jersey mi to trvalo déle. Zase na druhou stranu vím trochu více o fungování uvnitř. Spring hodně věcí odstiňuje, což je skvělé když víte, co děláte. Když se učíte, tak je lepší vidět, jak věci makají. A o to mi šlo.

Databáze běží na PostgreSQL. Tam nebylo příliš moc co řešit. Na projektu máme Oracle a ten je tomu dost podobný, takže jsem použil to, co mi bylo známé.

Front-end je kombinace HTML, CSS, Bootstrap a k rozpohybování slouží stařičké JSP. Ano, JSP a jen z důvodů vzdělávacích - viz výše.

Co jsem se naučil
  • Nevím, jestli je to málo kuráže, ale naučil jsem se, že programátor ze mě nebude - smutné, ale svět není fér, někomu to jde a někomu to "sakra" teda jde - já jsem spíš v té první skupině.
  • Naučil jsem se strašně moc o běžné praxi programátorů, jejich potřebách a v neposlední řadě způsobu uvažování, takže v praxi analytika je pro mě snazší si představit, co má být v zadání.
  • Určitě jsem si odnesl hodně o objektovém paradigmatu, to se hodí v obecné rovině, protože je to zatím stále mainstreamové pojetí programování dnešních dnů, ač se sem tlačí další styly.
  • Zjistil jsem, že to je fakt dřina a zároveň zábava - takže komu to jde, jděte do toho po hlavě.
  • Houževnatost - to je k nezaplacení. Když mi něco nešlo, tak jsem to na 14 dnů odložil, nebo jsem otravoval svoje seniorní kamarády a kolegy, nebo jsem sjížděl návody, tutoriály, stackOverflow, dokud jsem prostě to co mi nefungovalo neopravil nebo nezprovoznil.
  • Číst pozorně ano, zní to jako trivialita - doba vybízí ke skenování textu, hledání rychlých řešení, bohužel někdy jsem něco nemohl rozběhat, jenom protože jsem přeskočil pár, na první pohled, zbytečných odstavců návodu nebo dokumentace.
Co bych dělal už jinak
  • Nepsal bych to v Javě, ale v Pythonu - je to ideální volba pro analytiky, kdyby nevyšlo programování (jako mně). Aspoň bych měl super základy pro skripty datového analytika, která dneska frčí dost v Pythonu. Na druhou stranu, Python a Java není jako čeština a čínština. Je to spíš něco jako polština a čeština. Spousty věcí bude podobných, jen se to píše jinak.
  • Programovat každý den - nemusíte napsat každý den spoustu kódu, stačí si udržet v hlavě to, čeho se vlastně snažíte docílit. Občas jsem bohužel vypadnul z rytmu i třeba na měsíce. A to pak bolí si vzpomenout, jak jsem to měl namyšlené. Navíc když si vytvoříte návyk, tak pak si i využívané techniky a řešení osvojíte a pěkně zapamatujete.
  • Víc bych spal - není nic moc spát 5 - 6 hodin a myslet si, že vymyslíte druhý Facebook. Produktivita a výkon potřebují zdroje - pro lidi to je jídlo a spánek. S tím, že od mých 30 let začíná spánek hrát prim v tom, jak mi něco další den půjde.
Vzdělání

Pro povzbuzení musím říct, že jsem čerpal v drtivé většině z volně dostupných zdrojů.

Začal jsem sám jako samouk na ITnetwork.cz a jel jsem jeden tutoriál za druhým. Udělal jsem jich asi 30 nebo 40 a zasekl jsem se.

Tou dobou se v Inventi otevírala Java pro začátečníky, tak jsem se přihlásil. Pokračoval jsem rovnou do Java pro pokročilé. Už v té době jsem psal tuto malou aplikaci. Čerpal jsem i z oficiální dokumentace Oracle, kterou jsem také občas využil.

No a pak už jsem se víceméně hodně ptal a ptal - jak kolegů, tak strýčka Googla.

Poděkování

Pomohla mi spousta lidí, kterým patří velký dík:

  • předně moje manželka - která viděla rozsypaný čaj a přesto mě podporovala,
  • lektorům v Inventi, kteří se starají o běh Java kompetence za jejich lekce,
  • Petrovi Hákovi za podporu sebevzdělávání,
  • Pavlovi Horovi a Kubovi Novotnému - za trpělivé odpovědi na nejapné otázky.