Δεν ήταν έτσι ο ρόλος του προγραμματιστή, δεν υπήρχαν αυτές οι ανάγκες και ίσως ο ρόλος του full stack developer να υπήρχε κάπου γραμμένος σε κάποια βιβλία, που για την εποχή τους θεωρούνταν ακραία και extreme! Ο κόσμος όμως αλλάζει και η τεχνολογία εξελίσσεται με ραγδαίο ρυθμό. Είναι μια φράση που την ακούμε όλο και πιο συχνά, λίγοι όμως την καταλαβαίνουν και για να μπορέσεις να αντιληφθείς τι σημαίνει ραγδαίος ρυθμός πρέπει να ζεις καθημερινά στον πυρήνα της τεχνολογίας. Αν είσαι ο τυχερός ή άτυχος που δεν ζεις εκεί, μπορείς απλά να βασιστείς στα λόγια αυτών που βρίσκονται (σίγουρα θα έχεις κάποιον φίλο προγραμματιστή).
Στην σελίδα με τις αγγελίες εργασίας, θα δεις ότι επιλέγοντας μια πόλη και κάνοντας μια αναζήτηση για την λέξη “full stack developer” θα πάρεις εκατοντάδες αποτελέσματα. Τόση ζήτηση πια; Τι γίνεται με αυτόν τον προγραμματισμό! Έχοντας λίγο χιούμορ, θα έλεγε κανείς πως βρισκόμαστε σε μια περίοδο που μόλις ανακαλύφθηκε αυτό που λέγεται Internet και υπάρχει τεράστια ζήτηση για προγραμματιστές.
Για να κατανοήσουμε τι ακριβώς είναι ο Full Stack Developer, πρέπει πρώτα να ορίσουμε και να καταλάβουμε τι είναι ο Front End και ο Back End Developer.
Τι είναι ο Front End Developer
Ο καλύτερος τρόπος να το εξηγήσουμε είναι μέσα από ένα παράδειγμα, ένα ζωντανό παράδειγμα. Αυτό που βλέπεις τώρα στην οθόνη σου είναι μια ιστοσελίδα και πιο συγκεκριμένα βλέπεις χρώματα, κουμπιά, εικόνες και τίτλους. Όλα αυτά θα τα βάλουμε σε έναν σάκο με την ετικέτα Διεπαφή Χρήση ή User Interface (γνωστό ως το UI).
Πατώντας στους συνδέσμους στο menu, γράφοντας ένα σχόλιο στο τέλος του άρθρου αν σου αρέσει (πολύ θα το θέλαμε), όπως και κάνοντας μια αναζήτηση δημιουργείται μια αλληλεπίδραση και έτσι αποκτάς μια εμπειρία (ελπίζουμε καλή). Η αλληλεπίδραση αυτή με το UI θα πρέπει να μπει σε ένα άλλο σάκο με την ετικέτα Εμπειρία Χρήστη ή User Experience (γνωστό ως UX).
Τώρα, λοιπόν, που γνωρίζεις τι είναι το UI και το UX έχεις μάθει τι είναι ο front end developer που γι’ αυτό θα μιλήσουμε και πιο αναλυτικά σε κάποιο άλλο άρθρο στο μέλλον. Προς το παρόν είναι ο προγραμματιστής που ασχολείται με αυτό που βλέπεις στην οθόνη και φυσικά με όλα όσα αλληλεπιδράς.
Τι είναι ο Back End Developer
Οι εικόνες που έχεις αποθηκευμένες στον υπολογιστή σου από τις διακοπές του 2019 βρίσκονται σε έναν σκληρό δίσκο. Σε έναν σκληρό δίσκο, ίσως λίγο διαφορετικό από τον δικό σου βρίσκεται και αυτό που βλέπεις (τα γράμματα, οι εικόνες, το μενού…όλα). Για την ακρίβεια δεν έχω ιδέα που ακριβώς βρίσκονται, το μόνο που ξέρω είναι ότι αν γράψω στο URL την λέξη “futuregeneration.gr” θα δω την ίδια ιστοσελίδα. Ας αποκαλέσουμε αυτόν τον σκληρό δίσκο με τη λέξη “βάση δεδομένων” και ας θεωρήσουμε πως αυτή η βάση δεδομένων βρίσκεται κοντά σε ένα air condition μαζί με άλλα συστήματα, όπως ένα router (που όλοι έχουμε). Όλα αυτά που μόλις περιγράψαμε είναι αυτό που αποκαλούμε “server“. Τουλάχιστον μια απλή εκδοχή της λέξης.
Κάνοντας μια αναζήτηση στο google.com ή στο futuregeneration.gr σίγουρα θα πάρεις κάποια αποτελέσματα. Αυτά τα αποτελέσματα δεν έρχονται δια μαγείας, αλλά κάτι γίνεται και κάτι εκτελείται. Κάποια στιγμή κάποιος άνθρωπος που τυγχάνει να είναι και προγραμματιστής, έχει γράψει αυτό που αποκαλούμε “κώδικα” σε μια γλώσσα προγραμματισμού με έναν σκοπό. Όταν ο server καταλάβει πως κάποιος κάνει αναζήτηση για την φράση “τι επάγγελμα να κάνω στην ζωή μου” πρέπει να του επιστρέψει πίσω τα σωστά αποτελέσματα, όσο γίνεται πιο σωστά.
Αυτό φυσικά, όπως καταλαβαίνεις καθημερινά προσπαθεί να κάνει τόσο η google όσο και οι υπόλοιπες μηχανές αναζήτησης ιστοσελίδων. Αυτός ο κώδικας που μόλις αναφέραμε είπαμε πως δεν δημιουργείται δια μαγείας, αλλά πιο συγκεκριμένα από τον προγραμματιστή που αποκαλείται “back end developer“.
Τι είναι ο Full Stack Developer
Συνοψίζοντας, το web χωρίζεται σε δύο κύρια τμήματα, το front και το back. Το front αφορά όλα αυτά που βλέπει ο χρήστης στον υπολογιστή του και στην οθόνη που έχει μπροστά του, καθώς και τον τρόπο με τον οποίο θα αλληλεπιδράσει. Το back αφορά όλες αυτές τις λειτουργίες και πρόσεξε αναφέρομαι στις λειτουργίες που εκτελούνται από τον server και όχι στο τι θα φαίνεται στον τελικό χρήστη, όπως μια εγγραφή, μια αναζήτηση.
Μετά από όλη αυτή την ανάλυση, ένας full stack developer είναι ταυτόχρονα front end developer και back end developer! Ναι κάνει τα πάντα. Τουλάχιστον έτσι υποτίθεται ότι έπρεπε να κάνει. Σε κάποιες θέσεις εργασίες υπάρχει ισορροπία, σε άλλες υπάρχει πιο πολύ ζήτηση στο front κομμάτι και σε άλλες πάλι στο back κομμάτι. Ειλικρινά εξαρτάται από την εταιρεία και τις ανάγκες της.
Αρμοδιότητες
Τι αρμοδιότητες έχει ένας Full Stack Developer; Με τι ασχολείται καθημερινά; Η απάντηση σε αυτό το ερώτημα εξαρτάται από τις ανάγκες της επιχείρησης. Ωστόσο, με μια αναζήτηση στις αγγελίες εργασίας μπορείτε να δείτε πως υπάρχει ένας κοινός παρονομαστής. Παρακάτω αναφέρουμε κάποιες από τις βασικές αρμοδιότητες με τις οποίες ασχολείται ένας Full STack Developer.
- Συγγραφή ποιοτικού κώδικα σε διάφορες γλώσσες προγραμματισμού που να μπορεί αν ελεγθεί από την QA (Quality Assurance) ομάδα.
- Συντήρηση και βελτίωση του πηγαίου κώδικα που υπάρχει ήδη.
- Ανάλυση νέων απαιτήσεων και ανάπτυξη των νέων features ή επέκταση των ήδη υπάρχων.
- Επίλυση προβλημάτων (bugs).
Τι μισθό παίρνει ο Full Stack Developer
Οι απολαβές ενός προγραμματιστή και πιο συγκεκριμένα ενός Full Stack Developer είναι σε σχετικά καλό επίπεδο. Σύμφωνα με έμπιστες ιστοσελίδες, όπως το glassdoor.com και το payscale.com ο μισθός που παίρνει ένας Full Stack Developer κατά μέσο όρο είναι 14.000€ / χρόνο. Αυτό σημαίνει ότι παίρνει 1.166€ / μήνα και σε σύγκριση με άλλες εργασίες είναι σε καλό επίπεδο.
Φυσικά, αυτό δεν σημαίνει πως δεν υπάρχουν άτομα που μπορεί να ξεκινάνε με 700€ ή 800€ και από την άλλη μεριά να φτάνουν και τα 1400€ ή 1500€. Αυτό πάντα εξαρτάται από τις αρμοδιότητες που έχει ο κάθε εργαζόμενος μέσα σε μια επιχείρηση και από την πόλη στην οποία εργάζεται. Στατιστικά, ένας νέος προγραμματιστής που θεωρείται Junior αρχίζει με ένα ποσό από 700€ μέχρι 900€. Εις βάθος χρόνου, μετά από 3 με 5 χρόνια εμπειρίας, όπου πλέον θα λέγαμε θεωρείται Senior το ποσό ανεβαίνει στα 1100€ με 1500€ ευρώ ανάλογα πάντα την θέση εργασίας.
Τα skills του Full Stack Developer
Τόσο ο full stack developer όσο και ένας γενικότερος προγραμματιστής χρειάζεται να έχει δύο κατηγορίες από skills. Αυτά που αποκαλούμε soft skills, καθώς και τα hard skills. Οι δύο αυτοί όροι ήταν πολύ σωστά ορισμένοι για μια περίοδο. Ως soft skills είναι όλα αυτά που χρειάζεσαι για να μπορέσεις να βγάλεις πέρα ένα project μέσα στα χρονικά περιθώρια του deadline που έχει οριστεί. Ναι, ο χρόνος μετράει αντίστροφα και πρέπει να δείξεις πειθαρχία σε αυτό. Η διαχείριση του χρόνου, η ικανότητα λήψης απόφασης, η δυνατότητα να εκτιμάς το ρίσκο, η εργασία υπό πίεση είναι κάποια από τα soft skills. Από την άλλη πλευρά, ίσως πιο τεχνικά θέματα, όπως το να ξέρεις HTML, CSS, PHP, Βάσεις δεδομένων, τουλάχιστον ένα framework όπως αυτό αποκαλείται, είναι κάποια από τα hard skills (όχι δεν μαθαίνονται μέσα σε μια εβδομάδα ).
Front End Τεχνολογίες
- HTML
- CSS
- Bootstrap
- Javascript
- jQuery
- Angular
- React
- …
Back End Τεχνολογίες
- PHP
- Java
- Python
- REST
- C++
- SQL
- MongoDB
- …
Σίγουρα το πρώτο βήμα είναι να αναζητήσεις στο google όλες τις παραπάνω λέξεις να δεις τι είναι το καθένα από αυτά. Εδώ θα βοηθήσει πολύ αν έχεις κάποιον φίλο που γνωρίζει αυτές τις τεχνολογίες. Αν όχι, υπάρχουν και τα σχόλια στο τέλος του άρθρου 😉 Εννοείται πως δεν μπορείς να τα ξεκινήσεις όλα παράλληλα. Μαθαίνοντας δύο και παραπάνω αρχίζεις και φτιάχνεις μια στοίβα με τεχνολογίες που γνωρίζεις. Ως αποτέλεσμα, στο διαδίκτυο υπάρχουν, τόσο αγγελίες για εργασίες, όσο και tutorials που αναφέρονται στις παρακάτω αρκετά δημοφιλείς στοίβες τεχνολογιών (stacks):
- LAMP stack: JavaScript, Linux, Apache, MySQL, PHP
- LEMP stack: JavaScript, Linux, Nginx, MySQL, PHP
- MEAN stack: JavaScript, MongoDB, Express, AngularJS, Node.js
- Django stack: JavaScript, Python, Django, MySQL
- Ruby on Rails: JavaScript, Ruby, SQLite, Rails
Στην πορεία σου ως προγραμματιστής και ως full stack developer, πρέπει να κάνεις λάθη, πρέπει να μην εγκαταλείψεις, πρέπει να κρατήσεις την ορμή που σε ώθησε στο να ακολουθήσεις αυτό το όνειρο του προγραμματισμού.
Αυτό είναι όλο; Τα παραπάνω ήταν κάποια από αυτό που αποκαλούμε hard skills. Δεν είναι τόσο δύσκολο για να τα μάθεις, απλά απαιτούν χρόνο. Αυτό σημαίνει πως γνωρίζοντας όλα τα παραπάνω, μπορείς να δημιουργήσεις προγράμματα και προϊόντα σε έναν υπολογιστή. Η αγορά σήμερα και οι επιχειρήσεις θέλουν ομάδες από ανθρώπους. Αυτό σημαίνει πως πρέπει να μπορείς να καταλάβεις σχετικά γρήγορα πιο είναι το πρόβλημα, να εκτιμήσεις πόσο χρόνο θα σου πάρει για να το λύσεις, αρκετές φορές να παρουσιάσεις δύο ή και παραπάνω λύσεις (μια γρήγορη και μια πιο χρονοβόρα σε σχέση με την ποιότητα πάντα) και πολλά ακόμη. Η συνεργασία, το ρίσκο, η ομαδικότητα, ο προγραμματισμός υπό πίεση, ειδικά αν μιλάμε για startups είναι πολύ σημαντικά προσόντα και αυτά τα μαθαίνεις από το πανεπιστήμιο που λέγεται ζωή.
Πως να σπουδάσεις
Υπάρχουν πάρα πολλές απόψεις και ο κάθε ένας, όπως είναι λογικό το βλέπει από την δικιά του οπτική γωνία, είτε είναι σωστή, είτε λάθος. Δεν υπάρχει απάντηση σε αυτό το ερώτημα και δεν υπάρχει απάντηση, γιατί δεν γνωρίζεις τι ακριβώς θα κάνεις. Ποιος θα είναι ο ρόλος σου και με τι θα ασχοληθείς; Ένα Πανεπιστήμιο σου προσφέρει τρόπο σκέψης, αντίληψης, διάσπασης των προβλημάτων σε μικρότερα. Όπως και το δημοτικό, γυμνάσιο και λύκειο έχουν σκοπό να σε μάθουν να διαβάζεις, έτσι και το πανεπιστήμιο έχει ως σκοπό να σε μάθει να αντιμετωπίζεις την πραγματικότητα.
Σπουδές σε πανεπιστήμιο
Μια από τις πιο συχνές ερωτήσεις, τόσο σε ομάδες στο facebook, όσο και σε διάφορα online forum είναι το πώς να ξεκινήσεις. Υπάρχει η νοοτροπία πως αν δεν περάσεις σε ένα πανεπιστήμιο είσαι άχρηστος. Υπάρχουν παιδιά που προγραμματίζουν από τα 16 τους και δουλεύουν ως Full Stack Developers μετά από τουλάχιστον 5 χρόνια εμπειρίας χωρίς να έχουν μπει καν σε μια σχολή Πληροφορικής. Πώς; Ο χρόνος που αφιερώνεις αν έχεις έναν καλό μέντορα που σε καθοδηγεί είναι αρκετός. Φυσικά χάνεις αρκετά, δεν έχεις τόσο ολοκληρωτική αντίληψη, αλλά εν έτει 2020 το Internet είναι γεμάτο από γνώση.
Είναι γνωστό πως χιλιάδες από εμάς σπουδάζουμε σε πανεπιστήμια σε κάποιο τμήμα σχετικό με την Πληροφορική. Όταν με το καλό πάρεις το πτυχίο, αν δεν το έχεις ήδη κάνει, πρέπει να αποκτήσεις μια νέα νοοτροπία προγραμματισμού, γιατί αυτό ζητάνε οι περισσότερες εταιρείες. Δεν είναι αδύνατο, μπορεί να χρειαστεί 1 μήνας, ή 6 μήνες, ίσως και να χρειάζεσαι 1 χρόνο. Όμως, όλα αυτά τα χρόνια που σπούδασες κέρδισες κάτι; Ήταν απαραίτητες οι σπουδές ή απλά έκανες μια λάθος επιλογή;
Ξεκίνα με online courses
Θα κοστίσει κάποια χρήματα, αλλά ίσως η επένδυση αξίζει! Το Coursera, αλλά και το Udemy είναι δύο αρκετά δημοφιλείς ιστοσελίδες με χιλιάδες μαθήματα στα Αγγλικά. Όχι μόνο στον προγραμματισμό, αλλά και σε άλλους τομείς. Παραθέτουμε τα links παρακάτω αν θέλεις να μάθεις περισσότερα. Σίγουρα, αξίζει να αφιερώσεις 5 λεπτά για να δεις τι επιλογές υπάρχουν. Έπειτα από την ολοκλήρωση των μαθημάτων συνήθως δίνεται και μια πιστοποίηση ότι έχεις παρακολουθήσει το συγκεκριμένο μάθημα.
- Coursera (online μαθήματα στα Αγγλικά)
- Udemy (online μαθήματα στα Αγγλικά)
- Σπουδές στην Ελλάδα
Διαφορές Full Stack Engineer με Full Stack Developer
Με κάποιον τρόπο που θα δούμε και αργότερα, έχεις μάθει τα βασικά και θέλεις να ξεκινήσεις να δουλεύεις. Όπως είναι κατανοητό πρέπει να ξεκινήσεις από τα απλά. Πρέπει, λοιπόν, πρώτα, να ξεκινήσεις από μια θέση εργασίας που συνήθως έχει την ετικέτα “Junior“. Σε διάφορες θέσεις εργασίες που μπορείς να βρεις στις αγγελίες εργασίας θα διαπιστώσεις πως οι τίτλοι των εργασιών, θέλετε για λόγους κύρους ή για λόγους άγνοιας, δεν ταυτίζονται επακριβώς με όσα αναλύονται στην θέση εργασίας. Αυτό βέβαια είναι ένα θέμα και μια συζήτηση για άλλο άρθρο.
Ως αποτέλεσμα οι εργασίες που αναφέρονται ως full stack developer ή full stack web developer είναι θα λέγαμε το ίδιο. Ακόμη και θέσεις εργασίας, όπως full stack engineer ή full stack web engineer αναφέρονται στο ίδιο μοτίβο. Βέβαια, για να προλάβω τους engineers, ο developer με τον engineer έχει κάποιες διαφορές κυρίως στην εμπειρία που έχει αποκομίσει.
Σχετικά Επαγγέλματα
Τι άλλα επαγγέλματα – ρόλοι εργασίας υπάρχουν σχετικά με το Full Stack Developer;
- Επάγγελμα Front End Developer
- Επάγγελμα Back End Developer
- Επάγγελμα Web Developer
- Επάγγελμα Software Engineer
Εύρεση Θέσεων Εργασίας
Η εύρεση θέσεων εργασίας στην Ελλάδα γίνεται μέσω του Linkedin και άλλω μηχανών αναζήτησης εργασίας. Εάν σε ενδιαφέρει να εργαστείς ως Front End Developer, είναι πολύ σημαντικό να μάθεις πως μπορείς να χτίσεις ένα επαγγελματικό προφίλ στο Linkedin. Το Linkedin είναι το κοινωνικό δίκτυο για επαγγελματίες όπου ο εργοδότης συναντά τον εργαζόμενο.
Τόσο το Linkedin οσο και οι Μηχανές Αναζήτησης Εργασίας στην Ελλάδα έχουν την επιλογή για εργασία εξ’ αποστάσεως (remote work)
Σύνοψη
- Ένας Front End Developer ασχολείται με ό,τι φαίνεται στην οθόνη και με τον τρόπο που αλληλεπιδρά μαζί της.
- Ένας Back End Developer ασχολείται με όσα δεν φαίνονται και αφορούν λειτουργίες, όπως η αναζήτηση.
- Ο όρος Full Stack Developer ή Full Stack Web Developer είναι το ίδιο και αναφέρονται σε κάποιον που είναι Front και Back End Developer.
- Συνήθως οι Junior θέσεις αφορούν Front End Developer ή Back End Developer, αλλά κάποιες φορές μπορεί και Full Stack Developer. Αποκτώντας 3-5 χρόνια εμπειρίας από Junior γίνεσαι Senior έχοντας αντίληψη όλου του φάσματος, δηλαδή το Full Stack Development.
- Ο μισθός κατά μέσο όρο είναι 14.000€ / χρόνο.
- Μπορείς να γίνεις Full Stack Developer, τόσο από online courses όσο και μέσα από κάποιο Πανεπιστήμιο (για τα θετικά και αρνητικά διάβασε το άρθρο)