Το άρθρο αυτό γράφεται με αφορμή μια συζήτηση που ξεκίνησε το Σάββατο, 17/05/2014, στο The Cube, στο τέλος του 2ου upNorth conference. Αναφέρεται, δε, έντονα στην ελληνική πραγματικότητα. Τη συζήτηση προκάλεσε ο Γεράσιμος1. Υπάρχουν frontend developers στην Ελλάδα; Κρύβονται; Υπάρχει αγορά για frontend developers στην Ελλάδα; Οι σκέψεις αυτές είχαν αρχίσει να κλωθογυρίζουν στο μυαλό μου ήδη από την πρώτη παρουσίαση της ημέρας, αυτή της Ζαχαρένιας. Εκεί οι όροι designer και developer, μόνοι τους ή με το προσδιοριστικό “web” μπροστά, ακούστηκαν σε διάφορες στιγμές, είτε εναλλακτικά μεταξύ τους είτε χωρίς να ξεκαθαρίζεται πότε επιλέγεται ο ένας αντί για τον άλλον.
Εκεί εντοπίζω ένα πρόβλημα, μια σύγχυση – όχι στην ομιλήτρια, γιατί δεν ήταν αυτό το θέμα της, που το γνωρίζει και νεράκι, αλλά – στην αγορά γενικότερα. Τι είναι αλήθεια “frontend developer”; Μην είναι αυτός που εγκαθιστά themes σε ένα WordPress, Joomla, Drupal κλπ; Μην είναι αυτός που βάζει jQuery scripts απ’ εδώ και απ’ εκεί για να κουνιούνται εικονίτσες και να χορεύουνε κουμπάκια; Μην είναι αυτός που γράφει Javascript πάνω σε Backbone; Μην είναι αυτός που γράφει βιβλιοθήκες όπως η Backbone ή frameworks όπως το Angular2. Μην είναι αυτός που γράφει PHP, το οποίο παράγει HTML και “τακτοποιείται” με CSS;
Μην απαντήσεις βιαστικά, δεν είναι τόσο απλό. Γιατί μην είναι ήταν κι αυτός που έφτιαχνε κάποτες Flash εφαρμογίδια; Μην ήταν κι αυτός που έφτιαχνε παρουσιάσεις σε CD; Μην ήταν κι ο άλλος που έφτιαχνε user interfaces σαν αυτά του Word, του Excel ή του Outlook; Κι εκείνος που ‘φτιαξε το μενού της flat τηλεόρασής σου ή το καντράν του αυτοκινήτου σου; Εντάξει, ας μην επεκταθούμε τόσο, ας μείνουμε στο web! Αλλά, καταλαβαίνεις τι θέλω να πω, δεν την εφηύρε το web την έννοια. Βέβαια, την ανέδειξε.
Ας αποπειραθώ έναν ορισμό
“Frontend developer στο πεδίο της ανάπτυξης ιστοσελίδων και εφαρμογών διαδικτύου, είναι εκείνη η ιδιαίτερη ειδικότητα της ανάπτυξης λογισμικού, που συγκεντρώνει τις κατάλληλες γνώσεις, ικανότητες, εργαλεία και ταλέντα, ώστε το πρόσωπο που την έχει να μπορεί να παράγει, είτε μόνο του είτε στα πλαίσια μιας ομάδας, αποτελεσματικές διεπαφές χρηστών σε περιβάλλοντα πλοηγών διαδικτύου.“
Παρατηρήσεις πάνω στον ορισμό
Χρειάζονται ταυτόχρονα:
- Γνώσεις: πχ ένα πτυχίο, όχι υποχρεωτικά πανεπιστημίου, υπάρχουν και άλλα “σχολεία”, αλλά δίνω ακόμη μια προτεραιότητα σε αυτά του πανεπιστημίου.
- Ικανότητες: αποκτώνται σε όλη την πορεία ενός ανθρώπου, πχ στο πτυχίο έμαθε κάποιος programming σε μια βασική γλώσσα αλλά στην πρώτη του δουλειά έμαθε Javascript.
- Εργαλεία: υποκειμενική η αξία του καθενός, αλλά απαραίτητη η γνώση κάποιων από αυτά.
- Ταλέντα: κάποια πράγματα δεν αποκτώνται, καλλιεργούνται αλλά, πώς να το κάνουμε, δεν αποκτώνται ούτε με καλές προθέσεις ούτε και πολλή προσπάθεια.
Αναφέρω “αποτελεσματικές” διεπαφές επί τούτου γενικόλογα, μιας και η επιτυχία μιας διεπαφής πρέπει να κρίνεται από τους στόχους της. Άλλοτε ο στόχος είναι η ταχύτητα, άλλοτε η ομορφιά, άλλοτε η ευχρηστία, ίσως και όλα αυτά μαζί. Πάντως, σε κάθε περίπτωση, πρέπει να είναι κάτι προσδιορισμένο και μετρήσιμο. Όλη η ουσία του ορισμού βρίσκεται εδώ.
Ο frontend developer μπορεί να παράγει κάτι είτε μόνος του είτε στα πλαίσια μιας ομάδας. Ετούτο αυτομάτως είναι ανοικτό σε διάφορα επιχειρήματα. Πράγματι, υπό συνθήκες, κανείς μπορεί να παράγει διεπαφές διαδικτύου μόνος του. Δε μπορεί όμως να είναι καλός σε όλα. Ή δύσκολα μπορεί αυτό που κάνει να κλιμακωθεί σε μεγάλα έργα. Μερικές φορές κάτι τέτοιο συμβαίνει. Πρόκειται για εξαιρέσεις.
Ο ορισμός δεν αφήνει ανοικτό το κατά πόσο ο frontend developer είναι developer. Είναι developer! Δεν είναι designer. Αυτό, βέβαια, δε σημαίνει ότι κάποιος δε μπορεί να διαθέτει ικανότητες και από το πεδίο του design. Αυτό είναι ένα εξαιρετικό επιπλέον ταλέντο. Στη ραχοκοκκαλιά του όμως θα πρέπει να είναι ένας developer και να διαθέτει τη νοοτροπία ενός developer. Δεν ξέρω πώς να στο δώσω τυποποιημένα αυτό. Πρέπει να γουστάρει να βουτάει μέσα σε κώδικα. Κάποιου είδους κώδικα. Να τον σκαλίζει. Να τον ανακαλύπτει. Να τρώει τα μούτρα του εκεί και να του αρέσει.
Αν βγάλεις από τον ορισμό το “στο πεδίο της ανάπτυξη ιστοσελίδων και εφαρμογών διαδικτύου” και το “σε περιβάλλοντα πλοηγών διαδικτύου“, τότε έχεις το γενικό ορισμό του frontend developer σε οποιοδήποτε πεδίο και μάλιστα ίσως όχι μόνο αυστηρά στην πληροφορική.
Οι δεξιότητες του frontend developer στην πράξη
Θα χαρώ να μου διορθώσετε τον ορισμό – λίγο δύσκολο, εντάξει, το ξέρω. Αλλά είναι καλό να έχουμε ορισμούς. Να ξέρουμε για τι μιλάμε κάθε φορά. Γενικά πάσχουμε σε αυτό και θα πρέπει να το περιορίζουμε. Οι ορισμοί είναι καλή βάση για μια γόνιμη συζήτηση. Αμέσως μετά πρέπει να γινόμαστε συγκεκριμένοι. Ας καταγράψω λοιπόν τις ελάχιστες απαιτήσεις που θεωρώ ότι ένας frontend developer πρέπει να καλύπτει:
- Πτυχίο: σχολής πληροφορικής της ημεδαπής ή του εξωτερικού.
- Ικανότητες: PHP, Javascript, HTML(5), CSS(2,3), MySQL.
- Εργαλεία: code editor (έναν και να τον ξέρει καλά), Photoshop.
- Ταλέντα: καλό γούστο, δημιουργικότητα.
Προσοχή-προσοχή: οι παραπάνω είναι οι ελάχιστες δεξιότητες ενός frontend developer στο web. Είναι δυνατόν κανείς να έχει μεγάλη εξειδίκευση σε κάποια μόνο από αυτές. Ίσως να έχει εμπειρία σε κάποιο συνδυασμό. Ίσως ξέρει Java αντί PHP. Ίσως ξέρει Python, Ruby, Groovy. Ίσως μαθαίνει Dart και Node.js. Fine! Αλλά αυτά είναι πάνω-κάτω το bare minimum, χωρίς το οποίο, πού πας ρε Καραμήτσο; Είτε δεν πας πουθενά είτε πας για κάτι πολύ συγκεκριμένο και καλή τύχη όπου κι αν πας.
Πλέον κανείς χρειάζεται και άλλα πράγματα. Χρειάζεται γνώση κάποιου CMS (συστήνεται WordPress), των web standards, του HTTP, του πώς λειτουργούν εσωτερικά οι μοντέρνοι browsers και τα developer tools τους, καλές πρακτικές για SEO, αίσθηση του τι εστί UX3. Πρέπει να γράφει καθαρό κώδικα, να παρακολουθεί τις εξελίξεις στις τεχνολογίες του, να διαβάζει, να μην ικανοποιείται εύκολα, να είναι self motivated, να αγαπάει αυτό που κάνει. Μήπως είπα πολλά; Όχι, λίγα είπα. Να έχει ανοιχτό μάτι στον κόσμο του marketing, στον κόσμο των mobile applications, στον κόσμο των social media. Για responsive development μίλησα; Σίγουρα όλο και κάτι άλλο θα ξεχνάω.
Κι αν όλοι διαθέτουν το bare minimum που ισχυρίζομαι ότι πρέπει, τότε ποιος θα ξεχωρίσει; Αυτός που διαθέτει δημιουργικότητα και εξελίσσει τον εαυτό του καλύτερα. Σας εγγυώμαι ότι στο τέλος της ημέρας μέσα από όλο το συρφετό των buzzwords που αράδιασα αυτά είναι τα δύο κυρίαρχα χαρακτηριστικά. Καταλάβατε σωστά, δεν πρόκειται για χαρακτηριστικά που απευθύνονται ειδικά ούτε στους frontend developers ούτε καν στους developers γενικότερα. Απευθύνονται σε κάθε πεδίο.
Μα όλα αυτά τα ήξερα
Αν είσαι ήδη web developer ή frontend developer πιθανότατα να αναφωνήσεις ότι όλα αυτά τα ήξερες. Δηλαδή, ήξερες ότι οι frontend developers ασχολούνται με PHP, HTML, CSS και Javascript. Εντάξει! Ξέρεις όμως από δομές δεδομένων; Έχεις ακούσει για αλγορίθμους; Τι πα να πει statically typed γλώσσα; Τι είναι object oriented γλώσσα; Τι είναι prototypal inheritance; Έκανες στο παρελθόν κάτι compile; Οτιδήποτε! Έχεις κάνει έστω και λίγο backend development; Ξέρεις πώς λειτουργεί ένα API; Ξεκοκκάλισες το documentation κανενός API; Λίγη SQL; Λίγη NoSQL; Ξέρεις από JSON/XML; Το πρωτόκολλο HTTP; Το TCP/IP; Το DOM των browsers; Το μηχανισμό των events τους; Τα developer tools τους; Ξέρεις πώς να κάνεις optimization όταν τα repaints πέφτουν βροχή; Άκουσες τίποτα για canvas, webgl, web components, svg; Έχεις γράψει κανένα plugin για jQuery; Ένα CSS reset; CSS3 ακροβατικά κάνεις; WordPress themes from scratch; WordPress plugins;
Νομίζεις ότι περιγράφω κάποιο τέρας-φρανκενστάιν που τα ξέρει όοολα αυτά ή κάποιο super web geek; Νομίζεις ότι περιγράφω τον εαυτό μου4; Ίσως γι’ αυτό έχουν δίκιο που παραπονιούνται ότι ένα από τα μεγαλύτερα προβλήματα των startups είναι το hiring. Δε χρειάζεται να είσαι ειδικός σε όλα αυτά. Καμιά φορά είναι αρκετά ικανό από μόνο του να είσαι πχ απλά ένας CSS expert. Αλλά πού είσαι expert; Ξέρεις ότι αυτές είναι οι τεχνολογίες σου για τις οποίες όλος ο κόσμος έξω μιλάει;
Πράγμα που με κάνει να καταλήξω στην:
Η αποψάρα μου για τον ελληνικό χώρο
Όχι δεν υπάρχουν πολλοί frontend developers στην Ελλάδα σήμερα. Αντιθέτως υπάρχουν πολλοί που νομίζουν ότι είναι, ακόμη περισσότεροι που τους πιστεύουν (ένεκα η σύγχυση, είπαμε) ενώ, ταυτόχρονα, δεν υπάρχει καλά-καλά ζήτηση για αυτούς στην αγορά – αν εξαιρέσει ίσως κανείς το μικρό(ακόμη)κοσμο των startups. Αυτό βγάζει και νόημα: δεν υπάρχει ζήτηση για frontend developers κι έτσι δεν υπάρχουν frontend developers. Δυστυχώς, είναι και φαύλος κύκλος.
Όμως δε θεωρώ ότι τα πράγματα είναι τόσο μαύρα και δίχως ελπίδα. Πιστεύω ότι είναι στο χέρι των νέων ανθρώπων, των νέων web developers να αλλάξουν οι ίδιοι και να βοηθήσουν να αλλάξουν προς το καλύτερο και οι ομάδες στις οποίες εργάζονται. Χρειάζεται προσπάθεια κι επιμονή και μπλα-μπλα-μπλα όλα αυτά τα κοινότοπα μα και αληθινά. Στην τελική, αυτό που λέω είναι να μην περιμένεις να σου ζητήσουν καλό frontend development. Κάνε το από νοοτροπία.
—
1. Φράφο, για το όμορφο event. Χρειαζόμαστε τέτοια!
2. Ναι, άλλο βιβλιοθήκη και άλλο framework.
3. UX !== UI.
4. Είμαι full stack developer, αμάν!