A webprogramozás módszertana, a munkaszervezés lépései

Ez a videó a PHP rocksztár kurzus ingyenes I. fejezetének második része. A kurzus tematikájában az első magyar nyelvű, haladó PHP programozóknak szóló tananyag, mely a legmodernebb gyakorlati technikákat és mély programtervezési elméletet is tanít. A kurzus tematikáját megtekintheted itt: PHP rocksztár kurzus

A videó szövege

I/2. A webprogramozás módszertana

Neked mi ugrik be a webfejlesztésről? HTML? CSS? JavaScript? PHP? vagy a kedvenc szerkesztőd?

Valószínűleg még sosem tűnt fel, hogy a webfejlesztés és a webprogramozás szavak mást takarnak. A webfejlesztés alapvetően egy gyengébb szintű tevékenység, tákolás, barkácsolás, kódömlesztés. Általában a technikák vegyes használatával, ahogy jön alapon. Tesztelés nélkül lekódolni az egész feladatot olyan mint lyukas gumikkal biciklizni menni. Ha menet közben csak a célt nézed, az úton elferdülnek még a küllők is és az egész gépezet használhatatlanná válik. A programozásra levetítve ha nem tudod, hogy a kezdetekben milyen állapotból indulsz - vagyis nem nézed át a projektet és az eddigi dokumentációt, rossz megoldásokat fogsz használni vagy feleslegesen kódolsz le modulokat újra. A webfejlesztés azt jelenti, hogy mindenbe belevágsz a cél érdekében. Egy kis HTML, CSS, PHP, JavaScipt, SQL, meg ami jön. Úgy, ahogy jön.

A webprogramozás ezzel szemben valóban programozás. Strukturált programkód készítése. Óriási tévhit, hogy a webprogramozó HTML-el és CSS-sel is foglalkozik. Adja magát, hogy a programozó valamilyen programnyelven vagy nyelveken tevékenykedik. Sajnos a HTML és a CSS mégcsak nem is programozási nyelvek.
p
Ez nem jelenti azt, hogy egy webprogramozónak nem kell ismerni őket. Persze vannak webprogramozók, akikre ráerőltetik, hogy webdesign implementálásával és hasonlókkal foglalkozzanak - ők a full stack developerek. Ők több ember munkáját végzik egy személyben. Kisebb cégeknél is előfordul, hogy nincsenek a feladatkörök rendesen tisztázva és bárki belefoghat bármibe, amihez egy kicsit is ért.

Mi pont a másik irányvonalat fogjuk képviselni. Legyen egyetlen terület, amihez nagyon értesz! Legyen egy terület, egy programnyelv vagy keretrendszer, amiben a végletekig jártas vagy, mindent el tudsz készíteni. Legyen egy fejlesztői környezeted, amivel a gépet meg tudod szelidíteni! Legyél produktív úgy, hogy közben élvezed, amit csinálsz és nem találkozol ismeretlen hibákkal.

Végeredményben egy senior PHP programozóként / Laravel fejlesztőként ugyanannyit kereshetsz, mint egy full stack developer azzal a különbséggel, hogy nem kell szívnod olyan munkákkal, ami egy frontendes vagy designer feladata lenne. Nemcsak hogy nem szívsz, de adódik, hogy nem is vállalsz felelősséget ezekért.

Amit tehát meg kell tanulnod: PHP, Laravel, git. SQL sem árt, de 20-ból 19 lekérdezést helyettesíthetsz ORM-mel. A Laravel a legmodernebb PHP-ra épülő keretrendszer, a harmadik fejezettől foglalkozunk vele. A git a mai munkahelyeken elengedhetetlen, legnépszerűbb verziókezelő rendszer.

Amivel nem foglalkozunk, és te is kérd ki magadnak, hogy ne kelljen velük foglalkozni: JavaScript, CSS, HTML, Photoshop, WordPress. Laravel programozóként a tudásod messze túlmutat azon, hogy olyan problémákat oldj meg, amit kódolók tucatja meg tud csinálni helyetted. Ugye te se szeretnél elavult WordPress bővítményeket javítani vagy Joomla templateet készíteni a cég vezető PHP-saként?

A workflow

A webfejlesztő workflow már ismerős lehet:

1. Kapsz egy feladatot
2. Megcsinálod
3. Addig javítod, amíg a megrendelő rá nem bólint

A webprogramozói workflow kicsit más. Itt már csapatban kell dolgoznod:

1. A megrendelő felkeresi a főnököd.
2. A főnök összehív egy meetinget a projekt leendő tagjaival
3. Kijelöl egy projektvezetőt, aki felügyeli a projektet és ütemezést
4. Mindenki elkezd dolgozni a maga feladatán. A designer megtervezi a sablont, a frontendes összerakja, a backendes pedig adatbázist tervez és programot ír.
5. A kódrészeket egy verziókezelő rendszeren keresztül szinkronizáljátok és a projekt teendőit egy projektkezelőben, a felmerülő problémákat egy issue tracker rendszerben vezetitek
6. Beszámoltok a SCRUM masternek / projektfelelősnek / főnöknek a munkátokról
7. A megrendelő részéről felmerülő problémákat az issue trackerben vezetitek, javítjátok.
8. Átadjátok a kész weboldalt

Ebben a munkafolyamban az integritáson van a hangsúly. Ne szakadjon meg a munka, mindig tudjon mindenki foglalkozni valamivel és a csapattagok jól tudják követni, hogy a másik mit csinál.

Nézzük meg közelebbről, hogy te, mint backend fejlesztő, ezen belül hogyan dolgozol!

1. Előkészületek

Megkapod a feladatokat. A projektet fícsörökre bontod. Minden egyes feature egy jól behatárolható, valamilyen funkciót ellátó modul. Fogod a feature listát és boncolgatod aszerint, hogy mi mire épül, hogyan célszerű megvalósítani, mi mennyi időbe telik. Létrehozod a projekthez szükséges repository-t, hozzáadod a munkatársaidat a projekthez, beállítjátok a többi használt eszközt, pl. új projektet vesztek fel a projektkezelőben.

2. Adatbázis megtervezése

Ha mindez megtörtént, még ne ugorjunk a közepébe! Először egy mély, átfogó modellt kell felállítani az adatbázisról. Ehhez elengedhetetlenül szükséges, hogy az egész projektet A-tól Z-ig értsd és átlásd. Ragadj papírt és tollat, kezdd el vázolni az elképzelésedet! Alapszabály, hogy ahol a legkisebb esélye is van, hogy új bővítést kér a megrendelő, ott add meg ennek a lehetőségét. Ne teremts magadnak obstrukciót a későbbiekben. Az adatbázisszerkezet módosítása menet közben kivitelezhető, de problémás dolog. Mi erre az ún. séma-migrációt fogjuk használni, amit natív támogat a Laravel keretrendszer. A séma-migráció úgy néz ki, hogy maga a programunk tárolja az adatbázis felépítéséhez szükséges lépések sorozatát. Ilyen lépés például, ha létrehozol egy táblát vagy módosítod egy mező méretét. Ennek előnye, hogy a kóddal együtt felkerül a repositoryba és így biztosítva van, hogy más résztvevők is ugyanazzal az adatbázissal tudjanak dolgozni, miközben az adatbázis másolatát helyben tárolják. Ugyanakkor nyomon követhető és dokumentált minden szerkezeti változtatás.

3. A környezet beüzemelése

Válasszunk ki a kedvenc programunkat, hozzunk létre egy új projektet, scaffoldoljunk, készítsük el és futtassuk le az említett migrációkat. Miután elkészült az adatbázis, tervezzük meg az adatbázishoz köthető modell osztályokat.

4. Funkcionalitás a modellnek

Tegyük fel a kérdést: milyen funkciókat kell ellátnia a modellosztályoknak? Ezeket valósítsuk meg.

5. Routing, controller, middleware

Üzemeljük be az oldalt azzal, hogy reagálunk a HTTP kérésekre. A felhasználói interakcíóval kapcsolatos fícsöröket a controllerben valósítsuk meg! Ajánlott unit testekkel biztosítani a kód folyamatos helyes működését.

6. View

A nézetek elkészítése jobb esetben a frontendes feladata. A view egy sablonkezelő shortcodejaival megspékelt HTML kód. Ehhez jön hozzá később a CSS és JS, de természetesen külön fájlban.

7. Acceptance testing

Az acceptance testing megvalósítása ebben a kontextusban a BDD vagyis behavior-driven-development. Annyit takar, hogy a konkrét feature listát programmal ellenőrizzük és addig ütjük a vasat, amíg a programunk nem implementálja helyesen a kért featureöket. PHP-ban ezt a Behat teszt keretrendszerrel tudjuk elvégezni.

8. Átadás

Miután programatikusan meggyőződtünk, hogy a programunk helyes, dőljünk hátra, és várjuk a megrendelő igénymódosításait 🙂

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.