Aς τα παρω ολα απο την αρχή.
Εργασια εξ αποστάσεων γίνεται μονο για επαγγέλματα που δεν απαιτήται η σωματική παρουσια στα γραφεία του εργοδότη.
Λογω αυτού του γεγονότος, αυτα τα επαγγελματα μπορουν να ειναι μόνο ΙΤ related. Και εδω καταλήγουμε στο ποιά ειναι αυτα, και ποια έχουν πέραση, και θα συνεχίσουν να έχουν για το μέλλον.
Αυτά διακρίνονται σε 3 κατηγορίες:
- Software related.
- Operations related.
- Product related
Στα software related, τα επαγγέλματα που έχουν μεγαλη ζήτηση ειναι:
- Python developer.
- Javascript Developer.
- Go Developer.
Τα operations-infrastructure related επαγγέλματα ειναι:
- Cloud Infrastructure Engineer.
- DevOps engineer.
- Service Reliability Engineer.
- Linux/Systems Administrator.
Tα product related ειναι:
- Project Manager.
- Technical Writer.
Βεβαια οι 3 παραπάνω κατηγορίες δεν ειναι τελειως ξένες μεταξύ τους.
Ενας προγραμματιστής αναμένεται να ξέρει έστω βασικά πραγματα απο infrastructure, και ενας Cloud, DevOps, SRE Engineer, αναμένεται να ξέρει να γράφει κώδικα, και ενας Technical Writer πρεπει να ξερει και να γραφει βασικά προγράμματα, και να έχει εμπειρία απο DevOps. Το βασικότερο και κοινό σημειων ολων ειναι το Git. To Git ειναι ενα version control system. Κατι σαν αποθήκη του κώδικα που γραφουμε και βοηθάει παρα πολυ στην συνεργασία με αλλα ατομα, και μας δειχνει τι αλλαγες καταναμε, τι σβησαμε, τι προσθέσαμε, και σε ποια γραμμη ακριβώς.
Ειδικά ο τομέας των operations μπορει να μήν εχει τον νταλκά που μπορει να εχει ο προγραμματιστής να γραψει τον ποιο efficient κωδικα με τις λιγότερες κατα δυναμην γραμμές, αλλα θα πρεπει να ξέρει να γραφει μικρά προγράμματα που έχουν ως σκοπό την αυτοματοποιηση εργασιων, δηλαδη Python και Βash. Επίσης εχει αρκετά μεγαλυτερη γκαμα προγραμματων που πρεπει να μαθει. Αυτά ειναι τα παρακάτω.
- Τerraform. Που αναλαμβανει το provisioning των virtual machines που θα τρεχουν οι οποιες εφαρογές γράψαν οι προγραμματιστές.
- Ansible. Αναλαμβανει το configuration και hardening των virtual machines. Mπορεί πχ να κανει μαζικά σε 1000s servers editing καποιων config files.
- Jenkins. Aυτό κάνει Continuous intgration - Continious Deployment. Δηλαδη οταν κανουμε push καποιες αλλαγες του κώδικα στο Git, τοτε το προγραμμα εντοπίζει οτι υπαρχει αλλαγη, κατεβαζει αυτοματως τον ανανεωμένο κώδικα, κανει αυτομάτως building της εφαρμογής, καποια quality τεστς σε καποιον staging server, και αν υπαρχουν μηδενικά λάθη τότε μόνο η εφαρμογή παει live σε production περιβαλλον (το οποιον πλεον ειναι συνηθως ενα cluster απο server).
- Docker. Aυτό ειναι μια πλατφορμα virtualization σε επιπεδο λειτουργικου συστήματος. Εχει το πλεονέκτημα οτι προσφέρει πακεταρισμα ενος λειτουργικου συστήματος και της εφαρμογής μας πχ, σε παρα πολυ μικρό μεγεθος, και ειναι τελειως απομονωμενο απο τον host που τρέχει. Μπορουμε βασιζομενοι σε Dockerfiles, να φτιαξουμε Docker Images, και η εφαρμογή μας να τρεχει μονο με την εκτελεση μιας εντολής
To μαγαλυτερο πλεονέκτημα ειναι οτι μπορουμε να κανουμε decoupling της εφαρμογης. Δηλαδη ενα docker container να τρεχει εναν webserver που θα κανει serving ολo το front-end (τα static assets), το οποιο θα επικοινωνεί με ενα αλλο container που θα τρεχει πχ Php η Python, και ενα ακομα container που θα τρεχει μονο την βαση δεδομένων που μπορει να ειναι MySQL, MongoDB κτλ.
- Kubernetes. Aυτό ειναι ενας orchestrator που κανει container management, και scalling. Ολοι οι cloud providers, Google Cloud Platoform, AWS, Digital Ocean, προσφέρουν Kubernetes Clusters. To δυνατο σημειο του ειναι οτι μεσω καταλληλο configuration έχει την δυνατότητα να κανει αυτόματως up-scalling οχι μονο στα containers που ήδη τρέχουν (horizontal scalling) , αλλα και να αυξήσει των συνολικό αρθμό των virtual hosts που τρέχουν απο κατω, πχ απο 3 σε 6 (vertical scalling). Με αυτό τον τρόπο ενα site δε μπορει να "πεσει" πρακτικά ποτέ, γιατι ο αριθμος των σερβερ προσαμόζεται στο traffic που δέχεται το site.
Οπως καταλαβαινετε γινεται της πουτάνας το καγκελο, οι γνωσεις πρεπει να ειναι πολλες, αλλα να ξερετε οτι κανεις δε ξέρει τα παντα. Εννοείται ουτε και εγώ
Θα πρεπει να δημιουργήσετε τουλαχιστον 5-10 project στο GitHub, ωστε να αποκτήσεε καποια εμπειρία, καθως μονο τοτε οταν πραγματικα προσπαθεις να φτιαξεις κατι μαθαινεις πραγματικα, μεσα απο τα τεχνικά προβλήματα που θα αντιμετωπίσετε κατα την διαρκεια της δουλειάς.
Τωρα καταλαβαινετε γιατι οι ΙΤ δουλειες πληρώνονται αδρά, σε σχεση με τις υπολοιπες "νορμαλ" δουλειες. Οι γνωσεις αυτές ειναι ακριβες, και η εφαρμογή αυτών ακομα ποιο πολυ. Θα σας παρει πολυ χρόνο για να εμπεδώσετε αυτά, αλλα με επιμονή και υπομονή θα επιτευχθεί ο στόχος.
Οσον αφορα την ευρεση δουλειάς που ειναι και το ζουμί, ετοιμαστείτε για πολλές αποτυχίες. Καθε αποτυχία ομως θα σημαίνει και ένα σκαλί ποιο κοντά στην επιτυχια, οπου στο τέλος θα έρθει.
Τελος οσον αφορα τα της συνεντευξης, σε οσους εχουν επαρκή αυτοπεποιθηση ωστε να στελνουν βιογραφικά σε εταιρίες εξωτερικου, ειτε μεσω του stackoverflow ειτε linkedin, να ξερετε τα εξης:
- Ολες οι εταιριες ειναι biased, αλλες σε μικρό και αλλες σε μαγαλυτερο βαθμό. Αν συμπαθησουν την φατσα σου, και τους αρεσει ο τροπος που επικοινωνείς μαζί τους, θα σου δίνουν ακομα και hints για το πως να απαντήσεις σε μια ερώτηση. Αν συμβεί το αντιθετο, θα καθονται παγωμένοι αυξάνοντας το στρες σου με επακόλουθο να αρχιζεις να ξεχνας ακομα και τα ποιο βασικά.
- Πρωτου κανετε apply σε μια εταιρια, ψαξτε online να δειτε τους υπαλληλους της, ειτε στο ίδιο το site της, είτε στο linkedin. Αν δείτε τουρκο εργαζόμενο στην ίδια θέση με την δική σας, να ξερετε υπαρχει ενδεχόμενο να σας χαλασει την σουπα επίτηδες αν βρεθητε σε interview μαζι του/της.
- Σε ανταλλασόμενα e-mail, αν ο/η internal recruiter αργεί να απαντήσει περισσοτερο απο 24-36 ώρες, σημαινει η εταιρία δεν ειναι και τοσο σοβαρη. Αν ο recruiter ειναι external, και αργει η εταιρια να του δώσει απαντηση για το αν θα προχωρήσει μαζι σας περαιτέρω στα επομενα σταδια της συνεντευξης τοτε σημαινει οτι η εταιρία παλι δεν ειναι σοβαρη, η οτι ψαχνει να βρει μεγαλη εμπειρία δινοντας λιγα σχετικά λεφτα.
- Υπαρχει περιπτωση να απορριφθείτε απο θέση αν εχετε πολυ εμπειρία, ως over-qualified, ακομα και απο το initial screening.
- Oταν σας ζητανε να τους πειτε μια τιμή μισθου, δώστε παντα ενα έυρος τιμων, το οποιο ομως να μην ειναι και φθηνο, αλλα οχι και πολύ υψηλο. Αν πειτε κατι αρκετά χαμηλό θα δώσετε την εντύπωση οτι δε ζητάτε αρκετά γιατι δεν εχετε εμπιστοσύνη στις γνωσιακές σας δυνατότητες.
Αυτα, και συγνώμη για το σεντόνι, ελπιζω να κατατοπισα καποιους για το τι παιζει στο ΙΤ γενικότερα.