Software Developer: Επαγγελματικές Ειδικότητες Πληροφορικής σχετικές με τα μαθήματα που παραδίδω.
Web Developer
Ο τρόπος με τον οποίο ένας ιστότοπος ή μια web εφαρμογή φαίνεται και λειτουργεί είναι το άμεσο αποτέλεσμα του έργου του Web Developer. Εξειδικεύεται σε Front End, ή Back End, ή Full Stack Web Developer.
Junior Software Developer
HMTL5 (Semantic Elements, Attributes, Doctype, κλπ), CSS Βασικές αρχές, CSS Grid & Flexbox, CSS Custom properties, CSS transitions. Responsive Design (Viewport, Media Queries, Fluid widths, rem units, Mobile first layout κλπ), Vanilla JavaScript.
Associate Software Developer
Custom Reusable CSS code, SASS (Μεταβλητές, nesting, συνθήκες ελέγχου, κλπ.), CSS Frameworks (Bootstrap, Tailwind CSS, Materialize, Bulma).
Mid-Level Software Developer
Domain Registration, Managed Hosting, Static Hosting, SSL Certificate, FTP, SFTP (File Transfer Protocol), SSH (Secure Shell), CLI & GIT.
Senior Software Developer
JAMstack (Client side Javascript, reusable APIs & prebuilt Markup), Serverless Architecture (FaaS, AWS Lamda, Netlify), Web Assembly, Progressive Web Apps PWA, SSH, Virtualization (Docker, Vagrant), Microservices.
Front End Web Developer
Διαχειρίζεται όλα όσα βλέπουν οι χρήστες οπτικά στον browser ή την on line εφαρμογή τους. Οι Front End Developers είναι υπεύθυνοι για την εμφάνιση και την αίσθηση μιας ηλεκτρονικής παρουσίασης. Η ανάπτυξη του front end επικεντρώνεται κυρίως σε αυτό που κάποιοι μπορεί να φανταστούν ως “client side” της ανάπτυξης.
Junior Software Developer
Όλα όσα αναφέρονται προηγουμένως ως Web Developer (HTML, CSS, Vanilla JavaScript) και επιπλέον: DOM (Document Object Model), JSON (JavaScript Object Notation), Fetch API (Request / Response AJAX), Modern JavaScript.
Mid-Level Software Developer
Git Version Control, GitHub, Browser Dev Tools, VS Code Extensions, Emmet, NPM ή Yarn (Package Management), Axios, Webpack ή Parcel (JavaScript Module Bundlers).
Senior Software Developer
ένα ή περισσότερα Frontend JavaScript Frameworks (React, Vue, Angular), Svelte JavaScript Compiler, State Management (React – Redux, Connect API με Hooks, Vue – Vuex, Angular – NGRX, Services, Apollo Client)
Back End Web Developer
Ο Back End Web Developer είναι υπεύθυνος για τη δημιουργία και τον σχεδιασμό συστημάτων για το πώς ο χρήστης θα αλληλεπιδράσει με τον ιστότοπο ή web εφαρμογή, τη συντήρηση, τον έλεγχο και τον εντοπισμό σφαλμάτων σε ολόκληρο το σύστημα. Αυτό περιλαμβάνει τη βασική λογική της εφαρμογής, διαχείριση δεδομένων σε βάσεις δεδομένων, ολοκλήρωση παρουσίασης δεδομένων και εφαρμογών, API και άλλες διεργασίες back-end.
Junior Software Developer
Μια ή περισσότερες Server Side Languages (Node.js, C#, Python, Ruby, PHP, Java, GoLang, Rust)
Associate Software Developer
Server Side Rendering (File System Routing, Automatic Code Splitting, Static Exporting, CSS in JavaScript), Plug in Systems, JavaScript, TypeScript, Back End APIs, SQL, μια ή περισσότερες βάσεις δεδομένων και RDBMS: Relational Database (PostgreSQL, MySQL, MS SQL)
Mid-Level Software Developer
NoSQL (MongoDB, RethinDB, CouchDB), Cloud Database (Firebase, Azure Cloud DB, AWS ), Lightweiht & Cache (Redis, SQLlite, NeDB). ORM, ODM, BOM, Static Site Generators (Gatsby-React, Gridsome-Vue), GraphQL για δεδομένα.
Senior Software Developer
ένα ή περισσότερα Server Side Frameworks (Node.js: Express, Koa, Adonis, Feather.js, Nest.js / PHP: Laravel, Symfony, Slim / Python: Django, Flask / C#: ASP.NET MVC / Java: Spring MVC, Grails / Ruby: Ruby on Rails, Sinatra / Go: Revel), API First Design.
Full Stack Web Developer
Κατέχει επαρκείς γνώσεις ως Front End Web Developer και ως Back End Web Developer παράλληλα. Δείτε τις προαναφερόμενες ειδικότητες και τις γνώσεις που απαιτούνται και προτείνονται.
Software (Desktop, Mobile, Game) Application Developer
Ο Desktop Application Developer δημιουργεί εφαρμογές επιφάνειας εργασίας που εκτελούνται σε ένα μηχάνημα (ανεξάρτητα από το αν αυτό το μηχάνημα είναι επιφάνεια εργασίας, φορητός υπολογιστής κλπ) και συνήθως δεν απαιτείται συνδεσιμότητα με κάποιον διακομιστή.
Αντίστοιχα ο Mobile Application Developer δημιουργεί εφαρμογές για κινητά, που συνήθως διαθέτουν λογισμικά που έχουν σχεδιαστεί για να λειτουργούν σε μια κινητή συσκευή, όπως ένα smartphone ή tablet PC. Είτε πρόκειται για μια πλατφόρμα Android, Apple ή Windows, ένας προγραμματιστής για κινητά δημιουργεί συγκεκριμένες εφαρμογές που χρησιμοποιούν τα μεμονωμένα χαρακτηριστικά της συγκεκριμένης πλατφόρμας.
Τέλος οι Game Designers & Developers εργάζονται σε ομάδες με στόχο τον σχεδιασμό και την παραγωγή βίντεο παιχνιδιών για υπολογιστές, κινητές συσκευές, ή κονσόλες. Η δουλειά τους περιλαμβάνει τη δημιουργία οπτικού περιεχομένου για ένα παιχνίδι και τη σύνταξη κώδικα για την εφαρμογή όλων των λειτουργιών του παιχνιδιού.
Γνώσεις που είναι απαραίτητες
Βασικές αρχές σειριακού προγραμματισμού, βασικές αρχές αντικειμενοστραφούς προγραμματισμού, μια ή περισσότερες γλώσσες προγραμματισμού (C, C++, C#, Java, Python, SQL, Objective-C, Swift, GoLang, κλπ.), SQL, μια ή περισσότερες βάσεις δεδομένων και RDBMS: Relational Database (PostgreSQL, MySQL, MS SQL), NoSQL (MongoDB, RethinDB, CouchDB), Cloud Database (Firebase, Azure Cloud DB, AWS ), Lightweiht & Cache (Redis, SQLlite, NeDB), γνώσεις λειτουργικών συστημάτων (Linux, Windows, Macos, Ios, Android κλπ), Αλγοριθμικές γνώσεις και τεχνικές.
Προαιρετικά και επιθυμητά
C, Windows API, VB .NET, PHP frameworks (CakePHP, Laravel, Symfony, Phalcon), Swift framework (Cocoa), Java frameworks (Spring, Struts, Hibernate), C# frameworks: (.NET, Xamarin), GoLang frameworks (Revel, Beeg), JavaScript frameworks (Node.js, React.js, Vue.js, Angular.js, Meteor), συστήματα RDBMS, Lazarus.
Ειδικά για Mobile Development
μια ή περισσότερες γλώσσες προγραμματισμού: Dart, Swift, Kottlin (Java, Android Studio) Corona, Python, QML, τεχνολογίες για mobiles: Flutter (Dart), React Native, Native Scripts: JS, TS, Angular, Vue, Ionic, Xamarin (C#), Kottlin framework (Ktor, Verx, Spring), Buildfire.js, HTML5.
Ειδικά για Game Development
μια ή περισσότερες γλώσσες προγραμματισμού: C++, Java, Lua, C#, HTML5, CSS3, JavaScript, Python, Papyrus, Cg, UnrealScript, Squirrel, AMPL, SQL, Clipper, ActionScript, ένα ή περισσότερα Game Engines (Unity, Unreal, Godot, Amazon Lumberyard, CryENGINE, GameMaker Studio, Cocos2d), φυσική προσομοίωση (Physics), Visual Assets Processing (φωτισμός, σκίαση, χαρτογράφηση υφής, βάθος πεδίου κλπ.).
Επέκταση εξειδίκευσης σε
R, Python frameworks (Django, Flask, Pyramid), Electron, Ruby, Rust, Julia, Scala, Arduino C, Data Science, Big Data, Machine Learning APIs, Speech API, Dialog Flow.
Data Science, A.I. & Machine Learning Engineer
Η μηχανική μάθηση (ML) είναι ένα υποσύνολο της τεχνητής νοημοσύνης (AI). Είναι μια εφαρμογή της τεχνητής νοημοσύνης (AI) που παρέχει στα συστήματα τη δυνατότητα αυτόματης εκμάθησης και βελτίωσης χωρίς να προγραμματιστεί ρητά. Η μηχανική μάθηση επικεντρώνεται στην ανάπτυξη προγραμμάτων ηλεκτρονικών υπολογιστών που μπορούν να έχουν πρόσβαση στα δεδομένα και να τα χρησιμοποιούν για να μάθουν για τον εαυτό τους.
Ένας Data Scientist (επιστήμων δεδομένων) είναι κάποιος που ξέρει πώς να εξάγει νόημα και να ερμηνεύει δεδομένα , τα οποία απαιτούν τόσο εργαλεία όσο και μεθόδους από στατιστικές και μηχανική μάθηση, καθώς και ανθρώπινη.
Ο Machine Learning Engineer (μηχανικός μηχανικής μάθησης) είναι ειδικός σχετικά με τη χρήση των δεδομένων για τα μοντέλα εκπαίδευσης. Τα μοντέλα στη συνέχεια χρησιμοποιούνται για την αυτοματοποίηση διαδικασιών όπως η ταξινόμηση εικόνων, η αναγνώριση ομιλίας, την πρόβλεψη της αγοράς κα.
Στην πράξη, η δουλειά ενός μηχανικού μηχανικού μάθησης είναι κοντά σε εκείνη ενός επιστήμονα δεδομένων. Και οι δύο ρόλοι λειτουργούν με τεράστιες ποσότητες πληροφοριών, απαιτούν εξαιρετικές δεξιότητες διαχείρισης δεδομένων και την ικανότητα να εκτελούν σύνθετη μοντελοποίηση σε δυναμικά σύνολα δεδομένων.
Αλλά εδώ η ομοιότητα τελειώνει. Οι Data Scientists παράγουν πληροφορίες, συνήθως με τη μορφή χαρτών ή αναφορών που παρουσιάζονται σε ένα ανθρώπινο ακροατήριο.
Οι Machine Learning Engineers, σχεδιάζουν λογισμικό για την αυτοματοποίηση προγνωστικών μοντέλων.
Γνώσεις που είναι απαραίτητες
Μια ή περισσότερες γλώσσες προγραμματισμού: Python, R, SAS, SQL, Scala, Java, Julia, JavaScript, Tableau, MATLAB, C++, C#, Big Data, βασικές αρχές προγραμματισμού υπολογιστικών συστημάτων, μοντελοποίηση δεδομένων και αξιολόγηση, γνώσεις Μαθηματικών (γραμμική άλγεβρα, βασικές τεχνικές βελτιστοποίησης κα.) και Στατιστικής (πιθανότητες, στατιστικά στοιχεία κα.), εφαρμογή αλγορίθμων και βιβλιοθηκών μηχανικής μάθησης, σχεδιασμό λογισμικού και σχεδιασμό συστήματος.
Προαιρετικά και επιθυμητά
Python βιβλιοθήκες (Tensor Flow, Keras, Theano, Scikit-learn, Numpy, Pandas, Seaborn), R Studio, R βιβλιοθήκες (Carat, RandomForest, E1071, Rpart, KernLab, Nnet, Dplyr, Ggplot2, Esquisse, BioConductor, Shiny, Lubridate), Java εργαλεία μεγάλου πλήθους δεδομένων (Sparks, Flink, Hive, Spark και Hadoop), βιβλιοθήκες Java (Weka, Java-ML, MLlib και Deeplearning4j), Tensorflow.js, D3.js, συστήματα δεδομένων (Hadoop, Google Map-Reduce, Google File System, Google Big Table), Hadoop projects (HBase, Zookeeper, Hive, Mahout).
Επέκταση εξειδίκευσης σε
Νευρωνικά δίκτυα ConvNet, Γενετικοί Αλγόριθμοι, γνώση βασικών αλγορίθμων μηχανικής μάθησης (Perceptrons, Tree Decision, Neural Network & Deep Learning, Bayesian), MPI, Grid Engine, μαθηματικός προγραμματισμός (SDP, SOCP, QCQP, LP), γνώση αλγορίθμων σε εποπτευόμενους / μη επιτηρούμενους / ημι-εποπτευμένους αλγορίθμους.
Content Management Expert
Ο Content Management Expert είναι ο διαχειριστής ενός Συστήματος Διαχείρισης περιεχομένου (CMS). Χρησιμοποιεί μια ήδη υπάρχουσα εφαρμογή λογισμικού ή ένα έτοιμο σύνολο σχετικών προγραμμάτων που χρησιμοποιούνται για τη δημιουργία και τη διαχείριση ψηφιακού περιεχομένου. Τα CMS πακέτα χρησιμοποιούνται συνήθως για τη διαχείριση εταιρικού περιεχομένου (ECM) και τη διαχείριση περιεχομένου ιστού (WCM).
Γνώσεις που είναι απαραίτητες
ενός ή περισσοτέρων Traditional CMS (WordPress, Drupal, Keystone, Enduro), ενός ή περισσότερων Headless CMS (Contentful, Prismic.io, Sanity, Strapi), διαχείριση Themes και Plug ins, ασφάλεια CMS, Back Ups.
Συστήνονται
Domain Registration, Managed Hosting, Static Hosting, SSL Certificate, FTP, SFTP (File Transfer Protocol), βασικές αρχές προγραμματισμού με HTML, CSS, Vanilla JavaScript.
Ο ρόλος του Software Developer έχει εξελιχθεί σε έναν από τους πιο σημαντικούς και πολυδιάστατους στην ψηφιακή εποχή που διανύουμε. Με τη ραγδαία πρόοδο της τεχνολογίας και την αυξανόμενη ανάγκη για λογισμικό που υποστηρίζει από καθημερινές δραστηριότητες μέχρι πολύπλοκες επιχειρηματικές λειτουργίες, οι επαγγελματικές δυνατότητες για έναν Software Developer είναι σήμερα πιο πλούσιες από ποτέ.
Ο software developer έχει τη δυνατότητα να εργαστεί σε πληθώρα τομέων, όπως ανάπτυξη εφαρμογών για κινητά και web, ενσωματωμένα συστήματα, εφαρμογές cloud, λογισμικό τεχνητής νοημοσύνης και ανάλυσης δεδομένων, καθώς και λύσεις για το Internet of Things (IoT).
Οι επαγγελματικές ευκαιρίες για τον Software Developer εκτείνονται σε διάφορα επιχειρηματικά περιβάλλοντα, από νεοφυείς επιχειρήσεις (startups) και μεγάλες τεχνολογικές εταιρείες, μέχρι τράπεζες, τηλεπικοινωνίες, υγειονομικές υπηρεσίες και βιομηχανίες παραγωγής.
Επιπλέον, με τις αυξανόμενες ανάγκες σε απομακρυσμένη εργασία, η ευελιξία και οι απομακρυσμένες ευκαιρίες στον τομέα της ανάπτυξης λογισμικού κάνουν αυτή την επαγγελματική επιλογή ιδανική για ανθρώπους που επιθυμούν να εργάζονται από οποιοδήποτε σημείο του κόσμου.
Οι προοπτικές εξέλιξης για έναν Software Developer είναι εξαιρετικά ευοίωνες. Με τη σωστή εξειδίκευση και συνεχή μάθηση σε νέες τεχνολογίες και γλώσσες προγραμματισμού, ένας developer μπορεί να προχωρήσει σε θέσεις όπως Technical Lead, Software Architect, ή ακόμη και CTO (Chief Technology Officer), συμβάλλοντας στρατηγικά στην τεχνολογική πορεία της επιχείρησης.
Το επάγγελμα αυτό προσφέρει όχι μόνο δημιουργικές και προκλητικές εμπειρίες, αλλά και μια διαρκώς αυξανόμενη ζήτηση, που το καθιστά απόλυτα αναγκαίο και πολύτιμο στη σύγχρονη αγορά εργασίας.
“…Το μόνο στολίδι που δεν φθείρεται ποτέ είναι η γνώση….”
Τόμασ φουλερ