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?
- Pracovná ponuka hovorila: "Java developer"
- Niekto to prečítal ako: "JavaScript developer"
- Recruiter si myslel: "To isté, nie?"
- Klient očakával: "JavaScript experta"
- Ja som prišiel ako: "Java expert"
- 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:
| Čas | Aktivita |
|---|---|
| Ráno | Čítaj React dokumentáciu |
| Obed | Pozeraj React tutoriály |
| Popoludnie | Programuj React komponenty |
| Večer | Ďalšie tutoriály |
| Noc | Snívaj v JSX |
| Spánok | 4 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
public class User {
private String name;
public String getName() {
return name;
}
}// JavaScript (ČO?!)
const user = {
name: "John"
}
// To je všetko?!// Java
List<String> items = new ArrayList<>();
items.add("item");// JavaScript
const items = []
items.push("item")
// Tak... jednoduché?Veci, čo mi rozbili mozog:
// 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:
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
| Fakt | Realita |
|---|---|
| JavaScript nie je Java | Úplne odlišné jazyky |
| Podobnosť | Syntax vyzerá podobne |
| Zmätok | Pochopiteľ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
- Adaptabilita je dôležitá - Technológie sa menia. Prispôsob sa alebo zomri.
- Krivka učenia je OK - 1 týždeň intenzívne = základná kompetencia
- Impostor syndróm je reálny - Každý niekedy predstiera
- Cross-training je hodnotný - Ovládať backend + frontend = silné
- Chyby sa stávajú - Java ≠ JavaScript zmätok je bežný
Kapitola 8: Následky
1 rok neskôr
| Skill | Stav |
|---|---|
| Java | Stále silná |
| JavaScript | Ovládam |
| React | Sebavedomý |
| 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é.
| Aspekt | Jazyk |
|---|---|
| Backend | Java (Spring Boot) |
| Frontend | JavaScript (React) |
| Kombinácia | Full-stack developer |
| Trhová hodnota | Vyššia |
| Flexibilita | Viac projektov |
| Pochopenie | Kompletný 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:
| Jazyk | Typ | Použitie | Beží na |
|---|---|---|---|
| Java | Programovací jazyk | Backend development | JVM |
| JavaScript | Programovací jazyk | Frontend (+ 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!