Obsah článku / Contents
Ako som začal pracovať s JavaScriptom (alebo: Java ≠ JavaScript)

Ako som začal pracovať s JavaScriptom (alebo: Java ≠ JavaScript)

"Potrebujeme Java developera!"

Spoiler: Potrebovali JavaScript developera.


Prológ: Zmätok

Všetko začalo klasickou zámenou, ktorá sa stáva častejšie než by ste čakali. Pracovná ponuka hovorila "Java Developer". Ja som Java developer. Perfektný match, nie?

Kontrola reality: java === javascript vracia false.


Kapitola 1: Nastavenie scény

Email od recruitera

Dostal som email s predmetom: "Skvelá príležitosť pre Java developera!"

Dobrý deň,

Máme pre Vás skvelú ponuku. Potrebujeme skúseného Java developera pre mladý dynamický tím.

Projekt: Webová aplikácia Stack: Java, Spring... a ďalšie technológie

Záujem?

Moja odpoveď bola jednoduchá:

  • Java - check!
  • Spring - check!
  • Webová appka - check!

"Áno, mám záujem!"

Pohovor (telefonicky)

Recruiter: "Máte skúsenosti s Java?"

Ja: "Áno, 5 rokov. Spring Boot, Hibernate..."

Recruiter: "Perfektné! A frameworky?"

Ja: "Spring, Spring Boot, Spring Security..."

Recruiter: "Super! Pošleme Vás na meeting!"

Všetko vyzeralo v poriadku.


Kapitola 2: Meeting

Deň D - Príchod na miesto

Prídem do klientskej kancelárie ako Java developer. Sebavedomie na 100%. Java znalosti pripravené.

Vchádzam do meetingovej miestnosti...

Meeting začína

Tech Lead: "Dobrý deň! Takže, potrebujeme pomoc s frontendom."

Ja: "Frontend? OK..."

Hmm, trochu čudné pre Java developera, ale dobre.

Tech Lead: "Áno, máme React aplikáciu..."

Ja: "React... to je... JavaScript, nie?"

Tech Lead: "Áno, samozrejme! Preto sme žiadali JavaScript developera!"

Moment ticha.

Ja: "..."

Recruiter: "..."

Všetci: "..."

Zvrat v deji!

Vnútorná panika

V mojej hlave prebiehal nasledujúci myšlienkový pochod:

  • JavaScript? Nie Java?
  • React? Čo je React?
  • Ako sa to stalo?
  • Môžem odísť?
  • Mal by som sa priznať?
  • Možno si nevšimnú?

Rozhodnutie: Zostaň pokojný. Správaj sa prirodzene.

Realita: Nervózne potenie.


Kapitola 3: Uvedomenie

Spätný pohľad: Čo sa stalo?

  1. Pracovná ponuka hovorila: "Java developer"
  2. Niekto to prečítal ako: "JavaScript developer"
  3. Recruiter si myslel: "To isté, nie?"
  4. Klient očakával: "JavaScript experta"
  5. Ja som prišiel ako: "Java expert"
  6. Výsledok: "Trápne!"

Večná otázka

Netechnický recruiter: "Java... JavaScript... to isté?"

Developeri: "NIE! Úplne odlišné!"

Miera zmätku medzi ne-developermi: ~95% Miera frustrácie medzi developermi: 100%


Kapitola 4: Rozhodnutie

Moment pravdy

Mal som tri možnosti:

Možnosť A: Priznať sa

"Prepáčte, ovládam Javu, nie JavaScript." Výsledok: "Ďakujeme, zbohom."

Možnosť B: Skúsiť to

"Ja... môžem sa naučiť JavaScript?" Výsledok: "Zaujímavé..."

Možnosť C: Predstierať

"Jasné, JavaScript! Poznám ho!" Výsledok: Katastrofa čaká

Čo som si vybral?

Môj pitch

Ja: "Dobre, takže... chápem že vznikla zámena."

Tech Lead: "Zámena?"

Ja: "Áno. Ja som Java developer. Nie JavaScript."

Tech Lead: "Oh..."

Ja: "Ale Java a JavaScript majú podobnú syntax. A som rýchly learner. Dajte mi týždeň, naučím sa React základy."

Tech Lead: "Hmm..."

Moment ticha. Všetci čakajú.

Tech Lead: "OK, skúsime to. Jeden týždeň na skúšku."

Ja: "Dohodnuté!"

Vnútorné myšlienky: "Preboha, čo som to urobil?"


Kapitola 5: Učenie

Týždeň 1: Panické učenie

Pondelok ráno:

  • Google: "Čo je JavaScript?"
  • Google: "JavaScript vs Java rozdiel"
  • Google: "Nauč sa JavaScript za 1 týždeň"

Pondelok popoludní:

  • Google: "Čo je React?"
  • Google: "React tutoriál"
  • Google: "React pre Java developerov"

Dni 2-7:

ČasAktivita
RánoČítaj React dokumentáciu
ObedPozeraj React tutoriály
PopoludnieProgramuj React komponenty
VečerĎalšie tutoriály
NocSnívaj v JSX
Spánok4 hodiny (ak šťastie)

Stav mozgu:

  • Java znalosti: Stále tam
  • JavaScript znalosti: Rýchlo rastú
  • Úroveň zmätku: Maximum
  • Spotreba kávy: ∞

Kľúčové objavy

Java vs JavaScript - Šok:

java
// Java
public class User {
    private String name;

    public String getName() {
        return name;
    }
}
javascript
// JavaScript (ČO?!)
const user = {
    name: "John"
}
// To je všetko?!
java
// Java
List<String> items = new ArrayList<>();
items.add("item");
javascript
// JavaScript
const items = []
items.push("item")
// Tak... jednoduché?

Veci, čo mi rozbili mozog:

javascript
// 1. Typy? Aké typy?
let x = 5
x = "string"  // Toto je OK?!
x = { foo: "bar" }  // ČO?!
x = [1, 2, 3]  // STOP!

// 2. == vs ===
0 == "0"  // true (PREČO?!)
0 === "0"  // false (OK, to dáva zmysel)

// 3. Async/Await (mozog = vyhodený do vzduchu)
async function getData() {
    const response = await fetch(url)
    const data = await response.json()
    return data
}
// Kde sú Futures?! CompletableFuture?!

// 4. Metódy polí
const doubled = numbers.map(n => n * 2)
// To je... vlastne pekné!

// 5. Destructuring
const { name, age } = user
const [first, second] = items
// OK, toto je cool!

Kapitola 6: Výsledok

Týždeň 2: Prvé hodnotenie

Pondelok ráno. Tech Lead chce vidieť čo som spravil.

Môj prvý React komponent:

jsx
function UserCard({ user }) {
    return (
        <div className="card">
            <h2>{user.name}</h2>
            <p>{user.email}</p>
        </div>
    )
}

Tech Lead: "OK... a kde je ten HTML súbor?"

Ja: "Toto JE HTML... v JavaScripte... JSX..."

Tech Lead: "..."

Ja: "Je to React vec..."

Tech Lead: "Hmm... OK. Ukáž mi viac."

Ukázal som routing, state management, API volania...

Tech Lead: "Nie je to zlé. Ty si sa to naozaj naučil?"

Ja: "V podstate som žil v dokumentácii."

Tech Lead: "Dobre. Pokračujeme."

Víťazstvo!

3 mesiace neskôr

TýždeňStav
Týždeň 1"Čo je JavaScript?"
Týždeň 4"OK, viem písať komponenty"
Týždeň 8"React hooky dávajú zmysel!"
Týždeň 12"Ja... vlastne mám rád JavaScript?"

Veci, ktoré som si obľúbil:

  • Rýchle prototypovanie
  • Flexibilné (až moc flexibilné?)
  • Obrovský ekosystém (npm)
  • Rovnaký jazyk frontend + backend
  • Async je vlastne fajn
  • Moderný JS je celkom dobrý

Veci, čo mi chýbajú z Javy:

  • Typová bezpečnosť (riešenie: TypeScript!)
  • Chyby v čase kompilácie
  • Poriadne OOP (tak nejako)
  • IDE autocomplete čo funguje
  • Stack trace čo dáva zmysel

Kapitola 7: Lekcie

Technické lekcie

FaktRealita
JavaScript nie je JavaÚplne odlišné jazyky
PodobnosťSyntax vyzerá podobne
ZmätokPochopiteľný pre ne-developerov

React postrehy:

  • Komponentový model: Vlastne skvelý
  • Hooky: Elegantné riešenie
  • Ekosystém: Obrovský
  • Krivka učenia: Strmá ale stojí za to

Moderný JavaScript:

  • ES6+: Skvelé funkcie
  • Async/await: Omnoho lepšie než callbacky
  • Arrow funkcie: Čistá syntax
  • Destructuring: Veľmi užitočné

Osobné lekcie

  1. Adaptabilita je dôležitá - Technológie sa menia. Prispôsob sa alebo zomri.
  2. Krivka učenia je OK - 1 týždeň intenzívne = základná kompetencia
  3. Impostor syndróm je reálny - Každý niekedy predstiera
  4. Cross-training je hodnotný - Ovládať backend + frontend = silné
  5. Chyby sa stávajú - Java ≠ JavaScript zmätok je bežný

Kapitola 8: Následky

1 rok neskôr

SkillStav
JavaStále silná
JavaScriptOvládam
ReactSebavedomý
Full-stackÁno!
Ľútosť0

Aktuálne projekty:

Backend: Spring Boot (Java) Frontend: React (JavaScript) Ja: Full-stack!

Zvýšená hodnota:

  • Pred: "Java Backend Developer"
  • Po: "Full-Stack Developer"
  • Zvýšenie platu: Áno!

Časté otázky teraz

Otázka: "Takže ovládaš Javu aj JavaScript?"

Odpoveď: "Áno. Dlhý príbeh."

Otázka: "Čo je lepšie?"

Odpoveď: "Záleží. Oba majú svoje miesto."

Otázka: "Mal by som sa naučiť oba?"

Odpoveď: "Rozhodne! Full-stack je silná pozícia."

Otázka: "Bolo ťažké prejsť?"

Odpoveď: "Prvý týždeň? Peklo. Potom? Stálo to za to."

Otázka: "Stále si recruiteri zamieňajú tieto jazyky?"

Odpoveď: "ÁNO! Stále!"


Záver: Múdrosť

Java vs JavaScript

Večná pravda: java !== javascript

Ale tiež: naučiť sa oba je veľmi hodnotné.

AspektJazyk
BackendJava (Spring Boot)
FrontendJavaScript (React)
KombináciaFull-stack developer
Trhová hodnotaVyššia
FlexibilitaViac projektov
PochopenieKompletný obraz

Skutočná lekcia

Niekedy najlepšie príležitosti prichádzajú z chýb.

Moja "chyba":

  • Poslaný ako Java dev na JavaScript projekt

Výsledok:

  • Naučil som sa JavaScript + React
  • Stal som sa full-stack
  • Zvýšil som svoju hodnotu
  • Dostal som lepšie príležitosti

Morálne ponaučenie:

  • Prijmi zmätok
  • Uč sa nové veci
  • Prispôsobuj sa rýchlo
  • Zostaň flexibilný

Pre recruiterov

PROSÍM VŠIMNITE SI:

JazykTypPoužitieBeží na
JavaProgramovací jazykBackend developmentJVM
JavaScriptProgramovací jazykFrontend (+ backend s Node.js)Prehliadač (+ Node.js)

NIE SÚ TO ISTÉ!

Ďakujem že ste prišli na moju TED prednášku.

Pre developerov

Ak ťa zamenia za nesprávny jazyk:

Možnosť 1: Priznaj sa a odíď Možnosť 2: Nauč sa rýchlo (odporúčané!) Možnosť 3: Predstieraj (neodporúčané)

Moja rada: Vyber si Možnosť 2

Prečo?

  • Naučíš sa niečo nové
  • Viac skillov = lepšie
  • Skvelý príbeh na rozprávanie
  • Nečakané príležitosti

Epilóg: 5 rokov neskôr

Vtedy:

  • Len Java: Áno
  • JavaScript: Nie
  • React: Nie
  • Úroveň paniky: Maximum

Teraz:

  • Java: Áno
  • JavaScript: Áno
  • TypeScript: Áno
  • React: Áno
  • Angular: Áno
  • Node: Áno
  • Full-stack: Áno
  • Úroveň paniky: Kontrolovaná

Úroveň ľútosti: 0 Úroveň vďačnosti: 100

Príbeh rozprávam: Na každej párty Vygenerovaný smiech: Veľa

Rada minulému ja: "Len do toho choď. Budeš v pohode."

Záverečná myšlienka: "Niekedy nesprávne dvere vedú do správnej miestnosti."


Tento príbeh sa stal naozaj. Java vs JavaScript zámena je častejšia než si myslíš. Ak sa ti to stane: dýchaj, uč sa, prispôsobuj sa. Môže to byť tvoja šťastná náhoda!

P.S.: Recruiteri, prosím: Java ≠ JavaScript. Prosím.

P.P.S.: Ak hľadáte "Java developera" a chcete React, napíšte "JavaScript/React developer". Ušetrite všetkým čas!

P.P.P.S.: Ten týždeň učenia JavaScriptu? Najintenzívnejší týždeň môjho života. Ale stálo to za to!

Všetky články