Ένας ηλεκτρονικός υπολογιστής (Η/Υ) χωρίς αυτό που αποκαλούμε λογισμικό είναι απλά πολλά ηλεκτρονικά κομμάτια συνδεδεμένα μεταξύ τους. Η μαγεία του τι μπορεί να κάνει ένας Η/Υ έρχεται με το Software. Το Software Development ή Ανάπτυξη Λογισμικού είναι όλες οι διαδικασίες που ακολουθεί ο Προγραμματιστής Λογισμικού ή Software Developer σε καθημερινή βάση.
Ως Software Developer έχεις την ευκαιρία να έρθεις σε επαφή, να συνεργαστείς και να γνωρίσεις ανθρώπους σε όλον τον κόσμο. Η τεχνολογία και το Internet είναι ένα μέσο χωρίς γεωγραφικά όρια. Το επάγγελμα του Software Developer απαιτεί συνεχή εξέλιξη και βελτίωση των διαδικασιών που ακολουθείς. Αυτό σημαίνει πως αποκτάς έναν τρόπο σκέψης, που βασίζεται σε συνεχή εκμάθηση νέων πραγμάτων.
Στα επόμενα λεπτά, θα μάθεις, τι είναι το Software Development, τι ακριβώς κάνει ένας Software Developer και πως μπορείς να ξεκινήσεις μια επιτυχημένη καριέρα στον τομέα της Ανάπτυξης Λογισμικού.
Τι είναι ο Software Developer
Ο Προγραμματιστής λογισμικού ή Software Developer είναι αυτός που σχεδιάζει, αναπτύσσει και ελέγχει λογισμικά – προγράμματα που εκτελούνται από τους ηλεκτρονικούς υπολογιστές.
Τι όμως είναι Προγραμματιστής και τι είναι Λογισμικό;
Ποιός είναι ο Προγραμματιστής
Ο προγραμματιστής είναι μια έννοια που μπορεί να είναι ταυτόχρονα τόσο γενική όσο και ειδική. Αυτό σημαίνει πως ο προγραμματιστής έχει τις γνώσεις και τον τρόπο σκέψης να προσεγγίσει ένα πρόβλημα που σχετίζεται με τους Η/Υ και αφού το αναλύσει να δώσει μια λύση. Από την άλλη, ή έννοια προγραμματιστής μπορεί να συνοδεύεται από διάφορες γλώσσες προγραμματισμού όπως C, C++, Java και να σηματοδοτεί τον προγραμματισμό στην συγκεκριμένη γλώσσα.
Τι είναι το λογισμικό;
Το λογισμικό ή software είναι αυτό που βρίσκεται μέσα στο υλικό ή hardware. Χωρίς το λογισμικό τα περισσότερα ηλεκτρονικά εξαρτήματα θα ήταν απλά, βίδες, πυκνωτές, και LED χωρίς κάποια χρησιμότητα. Οπότε το λογισμικό, είναι αυτό που επιτρέπει στους ανθρώπους να έχουν μια αλληλεπίδραση και διάδραση με διάφορα τεχνολογικά προιόντα.
Λόγω τις ραγδαίας εξέλιξης της τεχνολογίας, υπάρχει η τάση του διαχωρισμού των Developers με τους Testers. Αυτό πρακτικά σημαίνει, πως ο έλεγχος (όταν αυτό είναι εφικτό) γίνεται μέσω ενός άλλου ρόλου που αποκαλείται Software Test ή QA Tester. QA σημαίνει Quality Assurance και ο ρόλος αυτός θα αναλυθεί σε άλλο σχετικό άρθρο.
Πως σκέφτεται ένας Προγραμματιστής
Το πρώτο βήμα για την επίλυση ενός προβλήματος είναι ο καθορισμός του προβλήματος και των απαιτήσεων που χρειάζονται για να επιλυθεί. Αυτό γίνεται από τα άτομα με τα οποία καλέιται να συνεργαστεί ο προγραμματιστής λογισμικού. Έτσι λοιπόν, συνήθως δέχεται κάποιες απαιτήσεις και καλείται να τις αναλύσει, να τις καταλάβει και έπειτα αφού ολοκληρωθούν και διευκρυνηστούν κάποια σημεία, να σχεδιάσει και να προγραμματίσει μια λύση.
Η εργασία γίνεται ομαδική
Πλέον, τα software, τα παιχνίδια και τα λειτουργικά συστήματα είναι τεράστια. Τόσο σε MB όσο και σε απαιτήσεις συστήματος. Αυτό δεν είναι αποτέλεσμα ενός προγραμματιστή αλλά μιας ομάδας. Βλέπουμε λοιπόν, πως το Software Development είναι μια άκρως ομαδική εργασία. Η συνεργασία, η ικανότητα να ακους και να προτείνεις πράγματα, να αποκτάς τον ρόλο του leader είναι στοιχεία του επαγγέλματος.
Στάδια ανάπτυξης ενός λογισμικού
Είτε μιλάμε για ένα λογισμικό (πρόγραμμα) στον ηλεκτρονικό υπολογιστή, για μια εφαρμογή σε κινητό (app) ή ακόμη και για μια ιστοσελίδα υπάρχουν κάποια βασικά στάδια. Καθορίζουν την διαδικασία δημιουργίας ενός ψηφιακού προϊόντος και σε κάθε ένα στάδιο, ο υπεύθυνος αποκτά έναν πιο συγκεκριμένο τίτλο. Βέβαια σε μικρές επιχείρήσεις, τα στάδια μπορεί να συνοψίζονται σε ένα και έτσι ο ρόλος του υπευθύνου να είναι απλά “Προγραμματιστής”.
Ένας προγραμματιστής λογισμικού θα πρέπει να έχει πλήρη γνώση της διαδικασίας που ακολουθείται για την δημιουργία ενός τελικού ψηφιακού προϊόντος.
Το στάδιο της ανάλυσης και της σχεδίασης θα πρέπει να είνει τα πιο χρονοβόρα και συνήθως δεν είναι. Με αποτέλεσμα, ο προγραμματισμός να γίνεται αρκετά γρήγορα και στο τέλος να μην καλύπτει όλες τις απαιτήσεις.
Που μπορεί να εργαστεί
Ο Προγραμματιστής Λογισμικού μπορεί να εργαστεί σε διάφορες εταιρείες και πάνω σε αρκετές παλιές και νέες τεχνολογίες.
- Εταιρείες ανάπτυξης εμπορικού λογισμικού
- Εταιρείες τηλεπικοινωνιών
- Τμήματα πληροφορικής και μηχανογράνωσης επιχειρήσεων, τραπεζων κ.ο.κ.
Μορφή απασχόλησης
Η μορφή απασχόλησης μπορεί να είναι υπάλληλος, τόσο στο δημόσιο όσο και σε ιδιωτικές επιχειρήσεις – οργανισμούς. Επιπλέον, υπάρχει και η δυνατότητα άσκησης του επαγγέλματος ως ελεύθερος επαγγελματίας (freelancer) προσφέροντας υπηρεσίες σε ολόκληρο τον κόσμο.
Νομοθετική Κατοχύρωση
Δεν υφίσταται κάποια συγκεκριμένη νομοθετική κατοχύρωση για το επάγγελμα του Software Developer.
Συνθήκες Εργασίας
Ο Προγραμματιστής εργάζεται σε περιβάλλον γραφείου. Ανεξάρτητα με το αν ασχολείται με τον έλεγχο (testing), την ανάπτυξη του κώδικα οι συνθήκες εργασίας είναι αρκετά ξεκούραστες με εξαίρεση ενδεχομένως προβλήματα στα μάτια και στην μέση λόγω καθιστικής ζωής και πολύωρη εργασίας σε μια οθόνη. Τα οποία βέβαια λύνονται με άθληση και τακτική ενυδάτωση.
Επιπλέον λόγω της φύσης του επαγγέλματος, είναι πολύ συχνό φαινόμενο η τηλεργασία (remote work).
Η εργασία ενός προγραμματιστή είναι κατά το πλείστον ατομική. Βέβαια σε κάποιες φάσεις της ανάπτυξης λογισμικού απαιτείται ένα πιο ομαδικό πενύμα και συνεργασία. Αυτό συμβαίνει για να καθοριστούν σαφή τυχόν απορίες και να γνωρίζει ο κάθε προγραμματιστής τι ακριβώς πρέπει να υλοποιήσει αι να παραδώσει.
Μετακινήσεις χρειάζονται μόνο όταν υπάρχει κάποιο σοβαρό τεχνικό πρόβλημα που δεν μπορεί να λυθεί απομακρυσμένα. Για παράδειγμα η εγκατάσταση συστήμάτων με ευαίσθητα δεδομένα συνήθως γίνεται όπως λέμε on site, δηλάδη στον φυσικό χώρο και οχι μέσω του Internet.
Το stress, το άγχος και τα deadlines είναι μέσα στο καθημερινό πρόγραμμα. Ένας προγραμματιστής καλό θα ήταν να εκτεθεί σε τέτοιου είδους καταστάσεις κατα΄την φοίτηση του ή ακόμη και σε προσωπικά project. Η διαχείριση χρόνου και εργασιών και η τήρηση προτεραιοτήτων είναι εξαιρετικά σημαντικό.
Τι Skills έχει ο Software Developer
Ένας Software Developer δουλεύει τόσο ατομικά όσο και σε ομάδα. Πρέπει λοιπόν, να αναπτύσει τόσο τα Soft Skills όσο και τα Hard Skills. Στις παρακάτω λίστες έχουμε κατηγοριοποιήσει τα ατομικά προσόντα (Soft Skills) και τα τεχνικά προσόντα (Hard Skills).
Κύριες αρμοδιότητες
- Σχεδιασμός ενός συστήματος
- Υλοποίηση μιας εφαρμογής ή ενός λογισμικού
- Συντήρηση του συστήματος
- Έλεγχος και βελτιστοποίηση του κώδικα
- Συνεργασία με προγραμματιστές για τον σχεδιασμό αλγορίθμων και διαγραμμάτων ροής
- Παραγωγή καθαρού, αποτελεσματικού κώδικα βάσει προδιαγραφών
- Ενσωμάτωση στοιχείων λογισμικού και προγραμμάτων τρίτων
- Επαλήθευση και ανάπτυξη προγραμμάτων και συστημάτων
- Αντιμετώπιση προβλημάτων, εκσφαλμάτωση και αναβάθμιση υφιστάμενου λογισμικού
- Συγκέντρωση και αξιολόγηση ανατροφοδότησης χρηστών
- Πρόταση και εκτέλεση βελτιώσεων
- Δημιουργία τεχνικής τεκμηρίωσης για αναφορά και σύνταξη εκθέσεων
Μισθός προγραμματιστή λογισμικού
Ο μισθός του Προγραμματιστή Λογισμικού εξαρτάται από διάφορες παραμέτρους. Οι παράμετροι αυτοί δεν ορίζουν τον μισθό αυτό καθ αυτό, αλλά ένα εύρος. Στην καριέρα του προγραμματιστή υπάρχουν ευκαιρίες και δυνατότητες για εξέλιξη.
Η πρώτη παράμετρος είναι η εταιρεία. Υπάρχει τεράστια διαφορά στις μιρκές εταιρείες τύπου startup και στις μεγάλες πολυεθνικές εταιρείες. Η δεύτερη παράμετρος είναι η εργασιακή εμπειρία. Υπάρχει διαφορετικό εύρος μισθού στους Junior Προγραμματιστές και διαφορετικό στους Senior Προγραμματιστές. Τέλος, η τρίτη παράμετρος είναι η αξία του Προγραμματιστή και οι διαπραγματευτικές του ικανότητες.
Ο καθαρός μισθός του Junior Προγραμματιστή σε μια startup εταιρεία ξεκινά από 750€ και σε μια πολυεθνική με 900€. Αποκτώντας εργασιακή εμπειρία, έπειτα από 3 με 5 χρόνια, ο καθαρός μισθός του Senior Προγραμματιστή φτάνει τα 1500€ με 1700€.
- Μισθός του Software Engineer
- Μισθός του Full Stack Developer
- Μισθός του Back End Developer
- Μισθός του Front End Developer
- Μισθός του Team Leader
- Μισθός του HR Manager
- Μισθός του QA Tester
Σχετικά επαγγέλματα
Οι απαιτήσεις προγραμματισμού έχουν αυξηθεί με ραγδαίο ρυθμό. Αυτό σημαίνει πως πλέον οι ρόλοι και η καθημερινότητα ενός προγραμματιστή μπορεί να εξειδικεύεται σε έναν πολύ συγκεκριμένο τομέα. Έτσι αν και θα δείτε αγγελίες και θέσεις εργασίας με τίτλο προγραμματιστής λογισμικού στην πραγματικότητα οι απαιτήσεις μπορεί να είναι για κατασκευή ιστοσελίδων ή εφαρμογών. Αυτό συμβαίνει γιατί οι διαφορές δεν είναι πάντα ξεκάθαρες σε όλους και υπάρχει μια σύγχυση.
Στην παρακάτω λίστα μπορείτε να βρείτε παρόμοια επαγγέλματα με το Software Developer. Κάποια από αυτά αναφέρονται ως Developer και έχουν αρκετές ομοιότητες και άλλα ως Analyst ή Architect που αναλύονται στα σχετικά άρθρα.
Online Courses
Σύμφωνα με στατιστικά, τα τμήματα Μηχανικών Η/Υ και Πληροφορικής και Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών είναι απο τα πιο απαιτητικά. Αυτό σημαίνει πως η εμπειρία που θα αποκομήσεις είναι μεγάλη. Μια νέα τάση που έχει ξεκινήσει είναι τα online μαθήματα σε διάφορες πλατφόρμες όπως το Udemy ή το Coursera όπου μπορείς να αποκτήσεις και πιστοποίηση ολοκλήρωσης των μαθημάτων.
Παραθέτουμε παρακάτω κάποια σχετικά Links.
Networking
Είτε έχεις αποφοιτήσει από κάποιο Πανεπιστήμιο είτε όχι, είναι πολύ σημαντικό να επενδύσεις χρόνο στο Networking. Η δικτύωσή σου και οι νέες γνωρίμίες που θα κάνεις μέσα από επαγγελματικές οργανώσεις, συλλόγους, ομάδες και κοινότητες θα σου ανοίξουν διάφορους δρόμους.
Η επίσημη ένωση στην Ελλάδα που ασχολείται με τον Τομέα της Πληροφορικής είναι η Ένωση Πληροφορικών Ελλάδας (Ε.Π.Ε.).
Ελληνική εταιρία επιστημόνων και επαγγελματιών Πληροφορικής και Επικοινωνιών
Επιπλέον μπορείς να αντλήσεις πληροφορίες και να ρωτήσεις για οτιδήποτε σε απασχολεί στην Facebook ομάδα Ελληνες προγραμματιστές και Designers.
Θέσεις εργασίας
Η εύρεση θέσεων εργασίας στην Ελλάδα γίνεται μέσω του Linkedin και άλλω μηχανών αναζήτησης εργασίας. Εάν σε ενδιαφέρει να εργαστείς ως Front End Developer, είναι πολύ σημαντικό να μάθεις πως μπορείς να χτίσεις ένα επαγγελματικό προφίλ στο Linkedin. Το Linkedin είναι το κοινωνικό δίκτυο για επαγγελματίες όπου ο εργοδότης συναντά τον εργαζόμενο.
Τόσο το Linkedin οσο και οι Μηχανές Αναζήτησης Εργασίας στην Ελλάδα έχουν την επιλογή για εργασία εξ’ αποστάσεως (remote work)