Sokak szerint felhasználói felületet (user interface - UI) tervezni nem is annyira szoftverfejlesztői feladat, hiszen mi sem egyszerűbb annál, minthogy az ember papíron rajzol néhány színes ablakot gombokkal, legördülő menükkel, a többit majd megoldják a programozók. Első ránézésre lehet, hogy ilyen egyszerűnek tűnik a dolog és inkább egy absztrakt festőművészre illik a fenti leírás, azonban a valóság másképp fest. Már most az elején szeretném leszögezni: manapság nagyon nehéz a munkaerőpiacon profi user interface-fejlesztőt találni, legalábbis az évek során ezzel szembesültem mint IT-fejvadász.
Első körben nézzük meg, milyen követelményeket állítanak a munkaadók az UI-fejlesztőkkel szemben. A napi nyolc órában ablakokat rajzolgató elvont művészt felejtsük el, bár kétségtelen, hogy a munkához a fejlett esztétikai érzék és ergonómiai szemléletmód elengedhetetlen, sőt, aki ezekkel a tulajdonságokkal nem bír, ne is adja a fejét ilyen munkára. De nézzünk a színfalak mögé! Azt fogjuk látni, hogy erre a munkára valójában profi szoftverfejlesztőket keresnek.
Az első és legfontosabb követelmény, hogy erős objektumorientált programozási háttere legyen az illetőnek. Fontos, hogy tisztában legyen olyan alapfogalmakkal, mint a konstruktor, destruktor, absztrakt osztály, virtuális metódus, polimorfizmus és még sorolhatnánk. Ismerjen tervezési mintákat, tudja, hogy mikor és hol érdemes ezeket alkalmazni. Az elméleten túl fontos, hogy a felsoroltakat a gyakorlatban is tudja alkalmazni, és ne csak keretrendszerekben dolgozzon, hanem akármennyire is amatőr dolognak tűnik, papíron is tudjon kódolni. Persze erre sokan felkapják a fejüket és azzal védekeznek, „hogy hát úgy is ott van a help, meg a Google és azon mindent meg lehet találni..." Ez igaz, de aki így akar dolgozni, az nem fog haladni, és a legtöbb munkaadó ma már papíron írat programozási tesztet.
A programozási feladatokban különböző fokozatok vannak. Általában feldobnak egy-egy kódrészletet és meg kell mondanunk, hogyan fut le, milyen értékkel tér vissza, mit ír ki, mi lesz az adott változó értéke. Aztán vannak olyanok, ahol például végig kell követnünk egy metódushívást, illetve ki kell egészíteni a kódot, vagy teljesen új függvényt kell implementálni. Ma már az sem ritka, hogy a jelöltek házi feladatot kapnak, ahol viszont tényleg mindent lehet használni; persze ilyenkor elég szűkös a határidő, általában 2-3 nap, komplexebb feladatoknál legfeljebb 1 hét.
Egy konkrét feladat
De nézzük, melyek is azok a konkrét technológiák, amelyekben egy profi UI-fejlesztőnek jártasnak kell lennie. Mivel ma már a legtöbb rendszert webes felületen keresztül lehet elérni, legyen az banki, repülőjegy-foglalási vagy termelésirányítási téma, olyan dolgokhoz kell magas szinten értenie, mint a CSS, HTML, XHTML, XML. Ha szkriptelő nyelvekről beszélünk, akkor a JavaScript a sláger, de azt nagyon profi szinten kell ismerni. Nem elég a keretrendszerekben szerzett tapasztalat, hanem például Unobtrusive JavaScript gyakorlat kell.
Nézzünk egy konkrét JavaScript-feladatot az elmondottak illusztrálására! Tanulmányozzuk a következő HTML forráskódot:
<button id="button" x="A">button</button>
<script type="text/javascript">
var x = 'B';
var Class = function(x) {
var button = document.getElementById('button');
button.onclick = this.clicked;
this.x = 'C';
};
Class.prototype.x = 'D';
Class.prototype.clicked = function(x) {
// this.prototype.x = 'H';
var x = 'E';
alert(this.x);
};
var instance = new Class('F');
instance.clicked('G');
delete instance.x;
instance.clicked();
var clickedOfInstance = instance.clicked;
clickedOfInstance();
</script>
Ezt az állományt megnyitjuk a böngészőben, becsukjuk az összes figyelmeztetést, majd a gombra kattintunk.
Írjuk le a megjelenő figyelmeztetések tartalmát a helyes sorrendben, attól függően, hogy milyen böngészőt használunk:
Internet Explorer 6: .............. .............. .............. ..............
Mozilla Firefox 3.5: .............. .............. .............. ..............
Úgy is, hogy komment lesz a következő sorból: // this.prototype.x = 'H';
Internet Explorer 6: .............. .............. .............. ..............
Mozilla Firefox 3.5: .............. .............. .............. ..............
A profi UI-, vagy, ahogy sok helyen nevezik, front-end fejlesztő persze a szerveroldalon is biztonságban érzi magát és komoly middleware és adatbázis-fejlesztői ismeretei is vannak. Tehát ha például Java-alapú technológiákról beszélünk, akkor mondjuk, ezekben kell jónak lennie: J2EE platform, JSP, alkalmazásszerverek, Hibernate ORM könyvtár és így tovább. Persze ez attól is függ, hogy pontosan mit használ a munkaadó egy-egy probléma megoldására.
Kell a jó kommunikáció
A mély szakmai ismereteken túl nagyon fontos, hogy az illető megértse és képes legyen megvalósítani a felhasználók igényeit úgy, hogy az, amit a képernyőn látunk, ízlésesen jelenjen meg és jól használható, magyarán felhasználóbarát legyen. Egy ilyen embertől tehát jó kommunikációs képességeket várnak el. Nagyon fontos az erős szóbeli angolnyelv-tudás, mivel nemritkán külföldi felhasználókkal vagy kollégákkal kell értekezni a tervezendő felhasználói felületekről s a mögöttük megvalósítandó funkciókról. Hiszen ami a felhasználónak csak egy gombnyomást jelent, az a programozónak sokszor több ezer sor kód. A jó UI-fejlesztő olyan, mint egy jó üzleti elemző vagy rendszerszervező, aki felméri a felhasználói igényeket. Egy jó felhasználói felületen, mint egy programterven, képileg is megjeleníti, illetve összegzi azokat. Majd elmagyarázza a back-end fejlesztőknek, hogy milyen mögöttes funkciókat kell implementálniuk, azok megvalósításában maga is aktívan részt vesz, sőt, mint a rendszer egyik legjobb ismerője, a tesztelést ő maga tudja legjobban elvégezni vagy elvégeztetni.
Nagyon fontos kérdés, hogy hova és hány UI-fejlesztőt keresnek ma Magyarországon, illetve Európa-szerte. Hogy hányat keresnek, azt pontosan darabra nehéz megmondani, több ezret biztosan. Azt már könnyebb megmondani, hogy milyen területekre: mobilkommunikáció, banki alkalmazások, szórakoztatóipar, szállodaipar, méréstechnika és még hosszan lehetne sorolni. Tehát szinte mindenhová, ahol felhasználói alkalmazásokat fejlesztenek. Számomra húzóágazatnak tűnik ezen a területen az androidos alkalmazások fejlesztése, hiszen itt nagyon intenzív felhasználói aktivitásról van szó.
Befejezésül elmondhatjuk, hogy az UI-fejlesztői munka nagyon komoly és összetett feladat. Nem elég felületesen ismerni az alkalmazott technológiákat, mély tudással kell rendelkeznünk a kapcsolódó technológiákban is ahhoz, hogy szép, ugyanakkor hatékony felhasználói felülteteket tervezzünk és fejlesszünk. Az ilyen szakemberek iránt nagy a kereslet, amelyet a mobilalkalmazások elterjedése egyre jobban generál.