Είσαι ή developer ή designer ή sysadmin. Και δεν μπορείς να κάνεις τίποτε για αυτό.

Αν ασχολείσαι με την δημιουργία “πραγμάτων” στο Internet στις μέρες μας, μπορεί να σε προβληματίζει το πως πρέπει να αυτοπροσδιορίζεσαι επαγγελματικά. Λέω αυτοπροσδιορίζεσαι γιατί η ωμή αλήθεια (παρόλο που δεν θέλουμε να το παραδεχτούμε) είναι ότι η πλειοψηφία των ανθρώπων εκεί έξω δεν ενδιαφέρονται για τον τίτλο σου. Αλλά και η μειοψηφία εκείνη που μπορεί να ενδιαφέρεται να προσλάβει έναν “senior super saiyajin full stack all inclusive keep the change php ninja” μπορεί εύκολα να πειστεί από το καλοστημένο portfolio του απλού, κοινού θνητού, web developer.

Ας κάνουμε τώρα μια υπόθεση εργασίας. Ασχολείσαι με την κατασκευή ιστοσελίδων (οποιοδήποτε κομμάτι της, development, design, …). Είσαι καλεσμένος σε έναν γάμο. Γνωρίζεις έναν τύπο στο τραπέζι σου ο οποίος σου λέει (πριν μάθει με τι ασχολείσαι) ότι προσπαθεί να βρει κάποιον να του φτιάξει το ηλεκτρονικό μαγαζί του για να πουλάει πράγματα στα ιντερνετς, πως τα λέτε αυτά εσείς οι νέοι, και διαθέτει μέχρι και 25.000 ευρώ γιατί ξέρει ότι είναι το μέλλον. Τώρα σκέψου τι πρόκειται να απαντήσεις στην ερώτηση “με τι ασχολείσαι;”.

ΣΗΜΕΙΩΣΗ: Για λόγους απλούστευσης σε αυτό το άρθρο με τον όρο ιστοσελίδα αναφερόμαστε σε όλες τις web εφαρμογές (websites, e-shops, portals, web services, κ.ο.κ.).

Εν αρχή είν’ η αρχιτεκτονική

Κάθε ιστοσελίδα έχει μια δομή. Στην επιστήμη της Πληροφορικής η δομή αυτή εξαρτάται από την αρχιτεκτονική που θα επιλέξει ο κατασκευαστής ή η ομάδα κατασκευής της ιστοσελίδας.

Για τον κόσμο του Web η πιο συνηθισμένη αρχιτεκτονική είναι η αρχιτεκτονική πολλαπλών επιπέδων (multi-tier architecture) και πιο συγκεκριμένα η three-tier arhictecture της οποίας η λογική απεικονίζεται στην εικόνα στα δεξιά. Η αρχιτεκτονική αυτή ορίζει 3 επίπεδα τα οποία με απλά λόγια είναι τα εξής (για καλύτερη κατανόηση διαβάστε από κάτω προς τα πάνω, όπως στο σχήμα):

  • Επίπεδο Παρουσίασης (Presentation Tier): Εδώ ζει (που θα έλεγε και ο Bob Ross) το user interface (UI) ή ελληνιστί η διεπαφή χρήστη. Στην ουσία αυτό το επίπεδο είναι το σημείο επαφής του χρήστη / επισκέπτη της ιστοσελίδας, με την πληροφορία (δηλαδή τα δεδομένα της ιστοσελίδας), μεταφράζει δηλαδή, όπως σωστά αναφέρει το παραπάνω σχήμα, τις διαδικασίες της ιστοσελίδας σε κάτι που να μπορεί να καταλάβει ο χρήστης.
  • Επίπεδο Λογικής (Logic Tier ή Business Logic Tier): Πρόκειται για το κέντρο αποφάσεων της ιστοσελίδας. Εδώ, βάσει των επιλογών των χρηστών της ιστοσελίδας, ανασύρονται τα κατάλληλα δεδομένα από το επίπεδο δεδομένων για να προωθηθούν στο επίπεδο παρουσίασης (βλ. παραπάνω).
  • Επίπεδο Δεδομένων (Data tier): Η αποθήκη δεδομένων (κείμενα, εικόνες, αρχεία, βάση δεδομένων). Όλη η πληροφορία της ιστοσελίδας βρίσκεται εδώ!

Image credit: Wikipedia

ΣΗΜΕΙΩΣΗ: Η παραπάνω αρχιτεκτονική είναι αρκετά αφηρημένη. Τα τελευταία χρόνια έχουν αναπτυχθεί διάφορες παραλλαγές της όπως η Model View Controller (MVC), η Model View Viewmodel (MVVP) και η The Four‑Tier Engagement Platform που κατά βάση επεκτείνει την three-tier architecture λαμβάνοντας υπόψη σαν 4ο επίπεδο τις διαφορετικές mobile συσκευές που πρέπει να εξυπηρετηθούν.

Τίνος είσ’ εσύ;

Βάση των παραπάνω οι βασικές κατηγορίες των επαγγελματιών διαδικτύου συνεχίζουν να είναι οι εξής τρεις (στο D&D θα τις λέγαμε classes):

  • Developer: γράφει κώδικα, σκέφτεται (υπερ-)αναλυτικά, είναι problem solver και θα επιλέγει πάντοτε την πιο αποδοτική λύση για την μηχανή. Θέματα UI/UX τον αφήνουν παντελώς αδιάφορο γιατί ο ίδιος αντιλαμβάνεται εύκολα πως δουλεύει μια μηχανή ή μία εφαρμογή και δεν καταλαβαίνει γιατί δεν είναι ξεκάθαρο για τους άλλους.
  • Designer: είναι artist, πράγμα το οποίο αναπόφευκτα φέρνει υποκειμενικότητα στα παραδοτέα του. Όπως με οποιαδήποτε μορφή τέχνης, κάθε δουλειά “χτυπάει” διαφορετικά στα διάφορα μάτια. Επειδή η βασική του επιδίωξη είναι ο χρήστης μιας εφαρμογής να καταλαβαίνει τι προσφέρει η εφαρμογή και να του είναι όσο το δυνατόν πιο ξεκάθαρο πως λειτουργεί, επικεντρώνεται στο κομμάτι αυτό πολλές φορές αδιαφορώντας για τις συνέπειες σε επίπεδο απόδοσης γιατί θεωρεί πως εφόσον ο χρήστης είναι ικανοποιημένος, η πλατφόρμα είναι επιτυχημένη και όλα τα άλλα θα βρεθούν.
  • SysAdmin / Webmaster: συνήθως λειτουργούν σειριακά με συνταγές καλών πρακτικών και απώτερο στόχο την καλή λειτουργία και την ασφάλεια των υποδομών (δίκτυο, storage, ασφάλεια, κ.ο.κ.). Έχουν βαθιά γνώση σε επίπεδο δικτύου / hardware και των online εργαλείων που αφορούν την διαχείριση των servers σε επίπεδο φιλοξενίας των ιστοσελίδων και διαχείρισης χρηστών. Βλέπουν την εφαρμογή μακροσκοπικά, ως ένα σύνολο αρχείων που ξοδεύει τους πόρους ενός συστήματος για να κάνει μια δουλειά.

Μέχρι τα 2005 περίπου οι περισσότεροι επαγγελματίες καλούνταν να διαλέξουν μία από τις παραπάνω κατηγορίες για να ακολουθήσουν ως επάγγελμα. Οι περισσότεροι ωστόσο από αυτούς (είτε ως φοιτητές, είτε ως χομπίστες) είχαν εκπαιδευτεί σε μια σειρά πραγμάτων που άγγιζαν περισσότερες (και πολλές φορές όλες) τις παραπάνω κατηγορίες. Αυτό σε συνδυασμό με την συνήθη πρακτική εταιριών να ζητούν “ανθρώπους για όλες τις δουλειές” οδήγησε στη δημιουργία επαγγελματιών που ήταν λίγο από αυτό και λίγο από το άλλο (στο D&D θα τους λέγαμε cross-class characters).

Καθώς οι τεχνολογίες του διαδικτύου εξελίσσονταν τα κλασσικά κανάλια UI (desktops / laptops) διευρύνθηκαν με νέους τύπους συσκευών (mobiles, tablets, smart tvs, smart watches, κ.ο.κ.) επεκτείνοντας τις ανάγκες στο Presentation Layer. Ομοίως, οι τεχνολογίες που αφορούσαν τους servers και τις βάσεις δεδομένων εξελίχθηκαν επίσης, επεκτείνοντας τις ανάγκες στο Data Layer. Ο συνδυασμός των δύο αυτών φαινομένων έφερε μοιραία αλλαγές και στο επίπεδο Business Logic.

Οπότε;

Η ζωή συνεχίζεται :) Ο κάθε επαγγελματίας καλείται να διαλέξει το βασικό τομέα (domain) στον οποίο θα ειδικευτεί (στο D&D θα έμοιαζε με τα Schools of Magic των Wizards) προσπαθώντας (κατά την προσωπική μου άποψη) να μένει όσο το δυνατόν ενημερωμένος με τις βασικές εξελίξεις των τομέων — γειτόνων ώστε να μπορεί να καταλαβαίνει τους επαγγελματίες με τους οποίους θα κληθεί να συνεργαστεί στο πλαίσιο μιας ομάδας.

Επειδή το Ελευθέρο Λογισμικό / Λογισμικό Ανοικτού Κώδικα έφερε πληθώρα έτοιμου κώδικα και εργαλείων που μπορούν να επιταχύνουν κατά πολύ την ανάπτυξη λογισμικού, οι ανάγκες ενός έργου πληροφορικής πολλαπλασιάζονται αφού στον ίδιο χρόνο, μπορούν να γίνουν πολύ περισσότερα πράγματα. Το πιθανότερο είναι πως, αν εργαστείτε σε ένα σοβαρό έργο πληροφορικής, θα κληθείτε να δουλέψετε σε μια ομάδα που θα περιλαμβάνει κάποιου είδους designer, κάποιου είδους developer και κάποιου είδους webmaster ;)


Originally published at Apostolos Kritikos.