Ο Μηχανικός Λογισμικού (Software Engineer) είναι υπεύθυνος για τον σχεδιασμό, την ανάπτυξη και την συντήρηση συστημάτων λογισμικού βάση των αρχών της τεχνολογίας λογισμικού. Για να δημιουργηθεί ένα λογισμικό στον Η/Υ όπως το Microsoft Word, απαιτούνται κάποια βασικά στάδια.
Ασχολείται με τις τεχνικές προδιαγραφές, τις απαιτήσεις, την αρχική σχεδίαση ενός συστήματος, αλλά και με ολόκληρο τον κύκλο της ανάπτυξης του. Συνεπώς, σε αντίθεση με τον Προγραμματιστή Λογισμικού (Software Developer) έχει μια θέση επίβλεψης με περισσότερες ευθύνες για το τελικό προϊόν.
Τι είναι ο Software Engineer
Σε κάθε νέο project ο Μηχανικός Λογισμικού (Software Engineer) έχει ως στόχο:
- Να καθορίσει τις απαιτήσεις του συστήματος, όσον αφορά τις λειτουργίες του λογισμικού αλλά και την υποδομή του.
- Να σχεδιάσει την αρχιτεκτονική του συστήματος, βάση των αρχικών απαιτήσεων και έχοντας υπόψιν την διάσπαση των tasks στην ομάδα ανάπτυξης.
- Να επιλέξει τις κατάλληλες τεχνολογίες και γλώσσες προγραμματισμού που θα βοηθήσουν στην ομαλή ανάπτυξη και καλή αξιοπιστία του λογισμικού.
- Να καθορίσει τις μεθόδους ελέγχου για την επιβεβαίωση της ορθής λειτουργίας του λογισμικού.
Με τον όρο “developer” συνηθίζεται να αποκαλείται ο μηχανικός λογισμικού που ασκεί ανάλυση, σχεδίαση και υλοποίηση ταυτόχρονα
Χρειάζεται καλή εμπειρία τόσο πάνω σε διάφορες γλώσσες προγραμματισμού, όσο και στην αρχιτεκτονική ενός συστήματος. Πλέον ένα από τα πιο σημαντικά skills ενός Μηχανικού Λογισμικού είναι η ικανότητα του να διασπάει και να καθορίζει μικρά tasks. Να μπορεί να τα αναθέσει και να τα περιγράψει με ξεκάθαρο τρόπο ώστε να είναι εύκολα υλοποιήσιμα και σωστά καθορισμένα. Στο κάτω κάτω, πλέον τα συστήματα είναι αδύνατο να υλοποιηθούν από ένα άτομο και πρέπει να υπάρχει μια οργανωμένη ομάδα.
Ο ρόλους του Μηχανικού Λογισμικού απαιτεί γνώσεις τόσο στο Front-End όσο και στο Back-End ενός συστήματος. Έτσι λοιπόν, συνήθως ο ρόλος αυτός σχετίζεται άμεσα με τον ρόλο του Senior Full Stack Developer.
Πλέον αρκετά από τα συστήματα είναι online και τρέχουν σε αυτό που αποκαλούμε cloud πχ AWS. Έτσι, ένας Μηχανικός Λογισμικού γνωρίζει αρκετά καλά τι είναι και πώς να διαχειριστεί cloud εφαρμογές. Πώς μπορεί να αλλάξει ρυθμίσεις και πώς μπορεί να βελτιώσει τις υποδομές με στόχο την μείωση του κόστος και την αύξηση της συνολικής απόδοσης της ομάδας.
Με τι ασχολείται
Ο ρόλος του Software Engineer αφορά ολόκληρο τον κύκλο ενός προϊόντος. Συνεπώς, μπορούμε να πούμε συνοπτικά πως ασχολείται με τα εξής:
- Ανάλυση (ως αναλυτής / software analyst)
- Σχεδίαση (ως σχεδιαστής/ software designer)
- Υλοποίηση (ως προγραμματιστής / programmer)
- Έλεγχος – Εγκυροποίηση (ως ελεγκτής / tester)
- Διασφάλισης Ποιότητας και Πιστοποίηση (ως quality assurance specialits)
- Τεκμηρίωση (ως τεχνικός συγγραφέας / software writer)
Αν και οι αρμοδιότητες αλλάζουν ανάλογα με το ύφος και τις απαιτήσεις της κάθε επιχείρησης, αναφέρουμε κάποιες που τις συναντάμε συχνά:
- Παρακολούθηση και ανάπτυξη του πλήρες κύκλου ενός λογισμικού.
- Σχεδίαση αρχιτεκτονικής λογισμικού.
- Προγραμματισμός κώδικα ελέγχου και επιβεβαίωση ορθής λειτουργίας (software quality testing – QA Testing)
- Προκαθορισμός των απαιτήσεων του λογισμικού με διαγράμματα ροής, πρότυπα προκαθορισμού των απαιτήσεων και έγγραφα τεκμηρίωσης..
- Επέκταση λογισμικού με νέα features και βελτιστοποίηση του υπάρχων κώδικα.
- Ανάπτυξη κώδικα αυτοματοποίησης διαδικασιών.
- Αντιμετώπιση προβλημάτων, εκσφαλμάτωση και αναβάθμιση υπαρχόντων συστημάτων.
- Καλή γνώση του Auth0
- Πρακτική εμπειρία και ικανότητα διαχείρισης των Azure, AWS or GCP
Τα Skills του Software Engineer
- Ανάλυση και αξιολόγηση πληροφοριών
- Ανάληψη πρωτοβουλιών & επίλυση προβλημάτων
- Καθορισμός προτεραιοτήτων
- Ομαδικό πνεύμα
- Εμπειρία στην ανάπτυξη διαδικτυακών εφαρμογών με χρήση τουλάχιστον ενός δημοφιλούς πλαισίου διαδικτυακών εφαρμογών (JSF, Wicket, GWT, Spring MVC)
- Βάσεις δεδομένων
- Ανάπτυξη λογισμικού σε διάφορες γλώσσες προγραμματισμού
- Εμπειρία σχεδιασμού διαδραστικών εφαρμογών
- Εμπειρία με Unit tests
- Έλεγχος Εκδόσεων Λογισμικού: Git
- Σχεδίαση Συστημάτων: MVC, UML
- Format Δεδομένων: XML, JSON
- Front-end Web Τεχνολογίες: HTML, CSS, Bootstrap, Javascript, jQuery, Ajax
- Back-end Web Τεχνολογίες: PHP/MySQL, ASP.NET/C#,
- Γνώσεις ενός τουλάχιστον framework: React, Angular, Laravel, Vue
- Semantic Web: OWL/RDF/SPARQL/RuleML, SOAP/WSDL/UDDI
- Παράλληλος Προγραμματισμός: MPI, Java Threads, OpenMP, OpenCL, CUDA
Πως να σπουδάσεις
Οι απαιτήσεις ενός Μηχανικού Λογισμικού είναι υψηλές. Τα πιο σημαντικά χαρακτηριστικά είναι η λήψη πρωτοβουλιών, ομαδικότητα και η εργασιακή εμπειρία σε cutting-edge τεχνολογίες. Ο Μηχανικός Λογισμικού είναι ένας ρόλος που απαιτεί σπουδές σε τμήματα όπως τα παρακάτω:
- Τμήμα Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Ιωαννίνων
- Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών του Πανεπιστημίου Κρήτης
- Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών του Ελληνικού Μεσογειακού Πανεπιστημίου
- Τμήμα Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πάτρας
- Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Θεσσαλονίκης
- Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δυτικής Αττικής
- Τμήμα Μηχανικών Πληροφορικής Τ.Ε.Ι. Αθήνας
- Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστικών Συστημάτων Τ.Ε. Πειραιά
- Τμήμα Μηχανικών Πληροφορικής και Ηλεκτρονικών Συστημάτων Σίνδου Θεσσαλονίκης
Σχετικά Επαγγέλματα
Ο ρόλος του Μηχανικού Λογισμικού είναι μια θέση συντονισμού και επίβλεψης ενός project. Για την ολοκλήρωση του project, υπάρχει απαίτηση για στενή συνεργασία και ομαδικότητα με διάφορους άλλους ρόλους. Μέσα από τις φάσεις του project, ο Μηχανικός Λογισμικού καλείται να οργανώσει και να πάρει πρωτοβουλίες για την δημιουργία ενός αξιόπιστου συστήματος. Έτσι, μπορούμε να πούμε ότι ο ρόλος αυτός σχετίζεται άμεσα με τους εξής ρόλους:
- Full Stack Developer
- Front End Developer
- Back End Developer
- Software Developer
- Web Developer
- Πολιτικός Μηχανικός
Εύρεση Θέσεων Εργασίας
Η εύρεση θέσεων εργασίας στην Ελλάδα γίνεται μέσω του Linkedin και άλλω μηχανών αναζήτησης εργασίας. Εάν σε ενδιαφέρει να εργαστείς ως Front End Developer, είναι πολύ σημαντικό να μάθεις πως μπορείς να χτίσεις ένα επαγγελματικό προφίλ στο Linkedin. Το Linkedin είναι το κοινωνικό δίκτυο για επαγγελματίες όπου ο εργοδότης συναντά τον εργαζόμενο.
Τόσο το Linkedin οσο και οι Μηχανές Αναζήτησης Εργασίας στην Ελλάδα έχουν την επιλογή για εργασία εξ’ αποστάσεως (remote work)