Επάγγελμα Software Engineer

Ο Μηχανικός Λογισμικού (Software Engineer) είναι υπεύθυνος για τον σχεδιασμό, την ανάπτυξη και την συντήρηση συστημάτων λογισμικού βάση των αρχών της τεχνολογίας λογισμικού. Για να δημιουργηθεί ένα λογισμικό στον Η/Υ όπως το Microsoft Word, απαιτούνται κάποια βασικά στάδια.

Ασχολείται με τις τεχνικές προδιαγραφές, τις απαιτήσεις, την αρχική σχεδίαση ενός συστήματος, αλλά και με ολόκληρο τον κύκλο της ανάπτυξης του. Συνεπώς, σε αντίθεση με τον Προγραμματιστή Λογισμικού (Software Developer) έχει μια θέση επίβλεψης με περισσότερες ευθύνες για το τελικό προϊόν.

Περιγραφή Επαγγέλματος

Σε κάθε νέο project ο Μηχανικός Λογισμικού (Software Engineer) έχει ως στόχο:

  • Να καθορίσει τις απαιτήσεις του συστήματος, όσον αφορά τις λειτουργίες του λογισμικού αλλά και την υποδομή του.
  • Να σχεδιάσει την αρχιτεκτονική του συστήματος, βάση των αρχικών απαιτήσεων και έχοντας υπόψιν την διάσπαση των tasks στην ομάδα ανάπτυξης.
  • Να επιλέξει τις κατάλληλες τεχνολογίες και γλώσσες προγραμματισμού που θα βοηθήσουν στην ομαλή ανάπτυξη και καλή αξιοπιστία του λογισμικού.
  • Να καθορίσει τις μεθόδους ελέγχου για την επιβεβαίωση της ορθής λειτουργίας του λογισμικού.

Χρειάζεται καλή εμπειρία τόσο πάνω σε διάφορες γλώσσες προγραμματισμού, όσο και στην αρχιτεκτονική ενός συστήματος. Πλέον ένα από τα πιο σημαντικά skills ενός Μηχανικού Λογισμικού είναι η ικανότητα του να διασπάει και να καθορίζει μικρά tasks. Να μπορεί να τα αναθέσει και να τα περιγράψει με ξεκάθαρο τρόπο ώστε να είναι εύκολα υλοποιήσιμα και σωστά καθορισμένα. Στο κάτω κάτω, πλέον τα συστήματα είναι αδύνατο να υλοποιηθούν από ένα άτομο και πρέπει να υπάρχει μια οργανωμένη ομάδα.

Ο ρόλους του Μηχανικού Λογισμικού απαιτεί γνώσεις τόσο στο Front-End όσο και στο Back-End ενός συστήματος. Έτσι λοιπόν, συνήθως ο ρόλος αυτός σχετίζεται άμεσα με τον ρόλο του Senior Full Stack Developer.

Πλέον αρκετά από τα συστήματα είναι online και τρέχουν σε αυτό που αποκαλούμε cloud πχ AWS. Έτσι, ένας Μηχανικός Λογισμικού γνωρίζει αρκετά καλά τι είναι και πώς να διαχειριστεί cloud εφαρμογές. Πώς μπορεί να αλλάξει ρυθμίσεις και πώς μπορεί να βελτιώσει τις υποδομές με στόχο την μείωση του κόστος και την αύξηση της συνολικής απόδοσης της ομάδας.

Με τι ασχολείται

Ο Μηχανικός Λογισμικού, μπορούμε να πούμε συνοπτικά πως ασχολείται με τα εξής:

  • Ανάλυση (ως αναλυτής / software analyst)
  • Σχεδίαση (ως σχεδιαστής/ software designer)
  • Υλοποίηση (ως προγραμματιστής / programmer)
  • Έλεγχος Εγκυροποίηση (ως ελεγκτής / tester)
  • Διασφάλισης Ποιότητας και Πιστοποίηση (ως quality assurance specialits)
  • Τεκμηρίωση (ως τεχνικός συγγραφέας / software writer)

Με τον όρο “developer” συνηθίζεται να αποκαλείται ο μηχανικός λογισμικού που ασκεί ανάλυση, σχεδίαση και υλοποίηση ταυτόχρονα

Δεξιότητες που αποκομίζει

  • Ανάλυση και αξιολόγηση πληροφοριών
  • Ανάληψη πρωτοβουλιών & επίλυση προβλημάτων
  • Καθορισμός προτεραιοτήτων
  • Ομαδικό πνεύμα

Τεχνολογίες που χρησιμοποιει

  • Πτυχίο Πανεπιστημίου στην Επιστήμη των Υπολογιστών, τη Μηχανολογία ή σε σχετικό τομέα
  • Εμπειρία στην ανάπτυξη διαδικτυακών εφαρμογών με χρήση τουλάχιστον ενός δημοφιλούς πλαισίου διαδικτυακών εφαρμογών (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

Βασικές Αρμοδιότητες

Αν και οι αρμοδιότητες αλλάζουν ανάλογα με το ύφος και τις απαιτήσεις της κάθε επιχείρησης, αναφέρουμε κάποιες που τις συναντάμε συχνά:

  • Παρακολούθηση και ανάπτυξη του πλήρες κύκλου ενός λογισμικού.
  • Σχεδίαση αρχιτεκτονικής λογισμικού.
  • Προγραμματισμός κώδικα ελέγχου και επιβεβαίωση ορθής λειτουργίας (software quality testing – QA Testing)
  • Προκαθορισμός των απαιτήσεων του λογισμικού με διαγράμματα ροής, πρότυπα προκαθορισμού των απαιτήσεων και έγγραφα τεκμηρίωσης..
  • Επέκταση λογισμικού με νέα features και βελτιστοποίηση του υπάρχων κώδικα.
  • Ανάπτυξη κώδικα αυτοματοποίησης διαδικασιών.
  • Αντιμετώπιση προβλημάτων, εκσφαλμάτωση και αναβάθμιση υπαρχόντων συστημάτων.
  • Καλή γνώση του Auth0
  • Πρακτική εμπειρία και ικανότητα διαχείρισης των Azure, AWS or GCP

Σχολές στην Ελλάδα

Οι απαιτήσεις ενός Μηχανικού Λογισμικού είναι υψηλές. Τα πιο σημαντικά χαρακτηριστικά είναι η λήψη πρωτοβουλιών, ομαδικότητα και η εργασιακή εμπειρία σε cutting-edge τεχνολογίες. Ο Μηχανικός Λογισμικού είναι ένας ρόλος που απαιτεί σπουδές σε τμήματα όπως τα παρακάτω:

Σχετικά Επαγγέλματα

Ο ρόλος του Μηχανικού Λογισμικού είναι μια θέση συντονισμού και επίβλεψης ενός project. Για την ολοκλήρωση του project, υπάρχει απαίτηση για στενή συνεργασία και ομαδικότητα με διάφορους άλλους ρόλους. Μέσα από τις φάσεις του project, ο Μηχανικός Λογισμικού καλείται να οργανώσει και να πάρει πρωτοβουλίες για την δημιουργία ενός αξιόπιστου συστήματος. Έτσι, μπορούμε να πούμε ότι ο ρόλος αυτός σχετίζεται άμεσα με τους εξής ρόλους:

Θέλεις να μάθεις περισσότερα;

Στόχος μας είναι η δωρεάν επιμόρφωση σου, δημιουργώντας ένα μέλλον με επιλογές!

Εάν θέλεις να ενημερωθείς πρώτος όταν το άρθρο αυτό ανανεωθεί με στατιστικά στοιχεία, podcasts, συνεντεύξεις και άλλες χρήσιμες πληροφορίες άφησε το email σου παρακάτω.

error: Το περιεχόμενο προστατεύεται.