HTML

asdf

Fullstack!

2018.10.26. 15:04 tvk

Szóval van ez a fullstack developer, devops és software craftmanship őrület, ami nagyon menőnek számít.
Akkor nézzük át mit is kéne tudnia egy ilyen fullstack software craftman-nek, aki még ráadásul devops-ban is jártas:

A számítógépet nyilván ismerjük, szóval ezt nem részletezem. Bemelegítésnek némi oprendszer parancssori vagy Word/Excel vagy OpenOffice műveltség, lehetőleg magasabb szinten mint ami anyukámnak van. Aztán verziókezelő-műveltség, ami tipikusan Git mostanság. Ezt valaki megúszhatja grafikus eszközzel, de a többség nem.

Aztán a backenden használt nyelv A-tól Z-ig, ami mondjuk Java-nál magába foglalja a generikus szerkezeteket, a lambdákat, stream-eket meg mindent, ami egyébként nem kevés és egy seniort is meg lehet fingatni kínos kérdésekkel. A 10-11-ben bevezetett modulokat még talán nem is muszáj tudni. A nyelvhez használt parancssori eszközöket legalább egy kicsikét, pl. a compilert. A felhasznált IDE-t hatékonyan használni, amihez nem árt néhány shortcut-ot is bemagolni és tudni konfigurálni az eszközt, tudni vele debugolni. Jöhetnek a backenden használt egyéb lib-ek és keretrendszerek: dependency injection, logging, parserek, perzisztencia, web és app szerverek, meg ki tudja még mi, kb százat fel lehet sorolni. Ha valaki van olyan szerencsés/szerencsétlen hogy Enterprise Edition-t használ, akkor még az is, ami párszáz oldalas könyvbe fér bele. Régebben még az volt az elterjedt, hogy a backenden lett generálva a frontenden megjelenő kontent JSP-vel, JSF-fel, egyébbel, de ettől már inkább eltekintek. Mondjuk hogy erre ma már nincs szükség, persze lehet hogy mégis, legacy kód miatt. Szóba jöhet még rich client frontend, mint Spring vagy SWT. A projektet valamivel buildelni is kell, szóval build tool-t kell ismerni kicsikét legalább (Maven / Gradle). A backendhez tartozik az adatbáziskezelő is, ami talán relációs, szóval SQL-t kell tudni. ACID, tranzakciós izolációs szintek meg normál formák, indexek szerepe, nem árt ha tud róluk az ember. Ha NoSQL van, akkor meg annak a rigolyáival kell tisztában lenni, pl. CAP. De lehet hogy mindkettő van. Hálózaton is biztos akarunk kommunikálni, szóval HTTP ismerete többé-kevésbé, meg a RESTful elvek. Adatszerkezetek ismerete, algoritmuselmélet akár a frontendhez is mehetne, de valahogy ezt mindenki a backend-hez kapcsolja. A tesztelés hasznos, szóval unit tesztelés elvei, használt eszközök, mockolás, integrációs tesztelés. Architektúrálisan rendben kell lennie a dolognak. Nem mindenkinek kell tudnia architekt döntéseket hozni, de azzal nem árt tisztában lenni, hogy mi az a mikroszervíz vagy éppen a monolit, milyen rétegeket érdemes létrehozni, mik azok a tervezési minták.

Jöjjön hát a frontend. A nyelv javascript vagy typescript már, amit nem árt ismerni. Tisztában lenni vele, hogy nagyjából melyik böngésző mit támogat, vagy legalábbis hogy lehet olyan kódot _generálni_ ami mindenen fog futni. A node, nodejs lelkivilága, meg az aktuális build tool-é, meg a plugin rendszeréé. Frontenden is van ezer lib, meg érdekes megoldás, pl. a future-ök, amit ma már kézségszinten ismerni kell. Aztán itt is kéne tudni tesztelni több szinten is. Jobb esetben a HTML / CSS tudást át tudja venni valami dizájner, rosszabb esetben ezzel is a fullstack fejlesztőnek kell foglalkoznia. Nem látszik nagy falatnak, de az, ha korrektül akarja csinálni az ember. Lexikális tudás is kell hozzá, meg érteni is kell az egészet. Ma már reszponzív, accessible, offline működő és secure frontendet kell csinálni, amiről így külön három közepes hosszúságú könyvet lehetne írni. Ezt az egészet szintén tudni kell debugolni, tipikusan a böngészőben, ami már igazából ziccer manapság. A felhasznált IDE-t ismerni kell, ami -ha nem azonos a backendhez használt IDE-vel- okozhat némi kavarodást a fejben, pl. ha egy shortcut az egyik IDE-ben ezt csinálja, a másikban meg azt.

Jöhet egy kis E2E tesztelés, acceptance environment? Selenium, adatbázisok másolása, fenntartása, elértünk a CI eszközökig, ami Jenkins vagy gitlab CI vagy nem tudom mi. Jó esetben van erre külön ember, dehát az milyen már, az nem "devops". Szóval tanuljuk csak meg. Docker is kell vagy valami virtualizáció, szőrmentén némi Python vagy Linux scriptelgetés. Ha nagyban játszunk, skálázunk, akkor már orchestration eszköz, pl. Kubernetes, meg ilyen dolgok amik image-eket pakolnak, gyártanak, tárolnak. Bevallom, próbálok róluk minél kevesebbet tudni.

Devops felé menet adatbázisokat kéne ide-oda másolni, backupolni, restore-olni, figyelni, rendszereket kellene menedzselni, akár hardver szinten is. Aztán ha a prod rendszerben gáz van, azt tudni kéne detektálni valami metrikák alapján, és itt kicsit megakadok a Devops gondolatmenetben, mert az Ops az 0-24 kéne hogy legyen 7/7, de a Dev meg jobb esetben napi 8 óra 7/5. De mindegy végülis ezt meg lehet oldani valahogy szervezeti szinten, akár úgy, hogy valójában mégiscsak vannak dedikált Ops emberek.

Szóval csupán ennyit kéne tudni egy fullstack developernek nagyjából (+ amit kihagytam + az adott projekttel kapcsolatos domain szintű dolgok)

Nem gondolom, hogy ez egy jó irány. Ez irtózatosan sok tudás bármilyen más szakmához vagy hivatáshoz képest, amit ismerek. Az esetlegesen elkövetett hibáknak elég nagy súlyuk lehet. Emellett a használt tudás még avul is, szóval nem lehet leállni a tanulással.

Szerintem le kéne jönni erről a dologról. Ha valaki ezt akarja csinálni otthon a négy fal között, vagy valami startupban, akkor lelke rajta. De egy rendes nagyobb méretű cégnél nem vagyok benne biztos hogy segít ez a dolog a fejlesztés hatékonyságának fenntartásában, beleértve az új fejlesztők keresgélését is.

Egyébként nem is tudom mi erről a vélekedés a nagyvilágban. Lehet hogy nyitott kapukat döngetek.

Szólj hozzá!

Címkék: architect antipattern

A bejegyzés trackback címe:

https://kodzaj.blog.hu/api/trackback/id/tr3814323707

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.