Mi az a full stack fejlesztés?
A full stack fejlesztők olyan fejlesztők akik atlátják a webes rendszerek minden részletét. Milyen részei vannak a webes rendszereknek? Milyen tudás kell ezeknek a fejlesztéséhez? Hogyan lehet megtanulni? Ebben a cikk sorozatban azt mutatom be:
- (1. resz) Full stack fejlesztő önállóan, kezdőknek
- (2. resz) Programozás alapjai Go nyelven
- (3. resz) Hálózat programozás alapjai Go nyelven
- (4. resz) Backend fejlesztés Go nyelven
- (5. resz) Adatbázisok: hogy működnek, hogy válasszunk?
- (6. resz) Frontend fejlesztés alapjai
Webes rendszerek felépítése

Frontend: program ami a böngészőben fut (általában JavaScript). Az a feladata hogy megjelenítse a felhasználói felületet (HTML, CSS), kezelje felhasználó interakcióit (kattintás, szövegbevitel, kép / hangbevitel, stb), hálózaton továbbítsa az adatokat a backendnek és a backend által visszaküldött informáciokat megjelenítse.
Backend: program ami a szervereken fut, figyeli a hálózaton bejövő kéréseket a frontendtől, feldolgozza és visszaküldi az eredményt.
Ahhoz hogy akár böngészőben, akár szerveren futó programot tudjunk írni, először a programozás alapjait kell megtanulnunk!
Hogyan tanuljunk meg programozni?
Egyesek és nullák
A programozás tanulása általában azzal kezdődik hogy a megtudjuk: “A számítógép csak egyeseket és nullákat ismer”, ami elsőre elég hihetetlen, mert ennél már Frédi és Béni kő-tabletjei is többet tudtak.
Valójában a számítógép nagyrészt félvezető eszközökből áll, aminek 3 csatlakozási pontja van, és az a legfontosabb tuljadonsága hogy ha 2 pontja között megfelelő a feszültség, akkor a masik 2 pontja között enged áramot folyni, különben nem enged. Erre a trükkre épülnek a digitalis számítógepek.
Hogy hogyan lesz számítógép az egyszerű félvezető eszközökből azt a digitalis elektronika és számítógép architektúra anyagok tárgyalják részletesen:
Webfejlesztőkent, a digitális elektronika tudásra kezdetben nem lesz szükségünk és nem érdemes túl részletesen foglalkozni vele. Akkor lesz igazán érdekes ha már jobban tudunk programozni és szeretnénk gyors, hatékony programokat írni, mélyebben megérteni mi törtenik a gépben.
A modern programnyelvekben ez a szint jól el van rejtve, viszont érdemes hosszú távon minél jobban megérteni, mert ez magyarázza meg miért úgy kell programozni a gépeket ahogy, mik a képességei és a korlátai ezeknek a rendszereknek.
Miből áll a programozói tudás?

Egy programozási feladat megoldásához 3 dolog kell (ezeket kell megtanulni):
- Környezet: Megismerni milyen műveleteket tud a rendszerünk végrehajtani
- Algoritmusok: Kitalálni egy olyan művelet sorozatot amivel ami megoldja a feladatot
- Megírni a programkódot (és kipróbálni)
Szinte mindig felbontjuk a feladatot, sok kisebb részfeladatra, megoldjuk a részfeladatokat, összeillesztjük a részeket és ezt napi sok százszor ismételjük.
Hogy kezdjük el?
A fenti 3 téma, mindegyike egyenként is hatalmas, és mindegyikkel több különböző tudomanyag is foglalkozik. Példaul ha csak az algoritmusokat nézzuk, egy átlagos bevezető könyv 1000+ oldalas, kb 30 fejezetből áll és mindegyik fejezet témájához gyorsan találnank újabb 1000+ oldalas könyveket. Az elejétől a végeig, ezt mind megtanulni, kihívást jelentő vállalkozás lenne. Szerencsére nincs ra szükség.
Manapság minden tananyag ingyen vagy olcsón elérhető, minden témaban, mindenféle szempontból. Viszont általában nincs egy olyan tananyag, ami a nekünk megfelelő szintről indul, eljut oda ahova szeretnénk és olyan részletességgel halad hogy követni tudjuk de nincs tele, számunkra felesleges informaciokkal.
Ezért ha önalloan tanulunk, akkor a saját felelősségünk, a sajat tanulasi folyamatunk kézben tartása. Ez önmagaban is egy fontos képesseg, ebben a szakmában, minden nap szükség van rá. Az önalló tanulásról az Ultralearning blogon és könyvben találunk részletes leírást.
A programozás megtanulásához egy jó strategia, ha gyakorló feladatokon keresztül tanulunk. Minden egyes feladatnál utána tudunk nézni, a fenti 3 téma azon részeinek, amik relevánsak a feladathoz. A feladatokat a sikeres megoldás után, mindig nehezítjük és ezt ismételjük sokszor. Így, mire végzünk, meg lesz minden szükséges tudásunk a munkához.
Akinek van ra lehetősége, érdemes egy mentort is keresni, aki tud segíteni és visszajelzést adni.
Válasszunk egy programnyelvet és kezdjük el a feladatokat megoldani! Első programnyelvnek a Python az egyik legjobb lehetőség, mert egyszerű és nagyon sok jó minősegű tananyag elerhető hozzá, de bármelyik megteszi.
Gyakorló feladatok a programozás alapjaihoz (Python nyelven)
- Learn to Code by Solving Problems
- Learn Python Visually
- Invent Your Own Computer Games with Python, 4th Edition
- Python Playground
- Exercises for Programmers
Hol tudunk utána nézni a fenti 3 dolognak, a feladatok megoldása közben?
A Roadmaps egy sokmindent átfogó térkép, itt át lehet nézni nagyjából mivel fogunk találkozni.
Algoritmusok
Az algoritmusos tananyagok többsége 3 féle nézőpont közül, főleg az egyik szerint szokta bemutatni az algoritmusokat.
Matematikai nézőpont: Ezeknek a fő témája az hogy, az egyes algoritmusoknak a futási ideje, miként valtozik a bemeneti adatok méretének valtozásával arányosan. És az elemzesi módszerek, amikkel magunk is kitalálhatjuk ezeket az információkat a sajat algoritmusainkról. pl.: Introduction to the Analysis of Algorithms
Gyakorlati nézőpont: Ezek valós(szerű) feladatokon keresztül mutatják be az algoritmusokat és a hangsúly az algoritmusok megvalósításán (kódolásán) van. pl.: Algorithmic Thinking
Intuitív nézőpont: Ezek az egyes algoritmusok legfontosabb működési elveire koncentrálnak, leegyszerűsitett példákon keresztül pl.: Learning Algorithms
Az Algorithms az egyik legjobb és legrészletesebb.
Vannak persze átfedesek és minden könyv egyedi. Ennek a csoportosításának az a célja hogy könnyebben megtaláljuk amit keresünk. Peldaul: ha a bináris keresőfákat akarjuk megtanulni, akkor valamelyik intuitív típusú könyvben megnézzuk az alap ötletet. Utána egy gyakorlati könyvben meg tudjuk nézni, hogy lehet lekódolni, a matematikai könyv alapjan pedig részletesen latni fogjuk a teljesitményet és a bizonyitást arról hogy nem vertek át a másik két könyvben.
Környezet
A környezethez kapcsolódó információk nagyrészt a kiválasztott programnyelvek, könyvtárak, operációs rendszer, eszközök dokumentációjában lesz.
Programkód
A programkód íráshoz 2 féle tananyagra lesz szükségünk.
Programozást oktató anyagok: Ezek magát a programozást tanítják az adott programnyelv segitségevel.
Referencia típusú leirasok: Ezek feltételezik hogy ért az olvasó a programozáshoz, egyszerűen felsorolják nyelv szabályait, a használhato függvényeket és modulokat, különosebb magyarázat nélkül. A programnyelvek hivatalos dokumentációja a legfontosabb ilyen. Ha egy beépitett függvényről, vagy szintaxisról nem tudjuk hogy pontosan mire jó, itt találjuk meg.
Folytatás
A következő rész a backend fejlesztésrol, a hozzá tartozó algoritmusokról és a Go programnyelvről fog szólni.