Ποιες δεξιότητες πρέπει να έχει ένας προγραμματιστής στον 21ο αιώνα;

13 February 2022
Αθανάσιος Ανδρούτσος

5΄ reading


Στην ψηφιακή οικονομία του 21ου αιώνα οι επιχειρήσεις χρειάζονται προγραμματιστές με αναλυτικές δεξιότητες, δεξιότητες σχεδιασμού, δεξιότητες συν-δημιουργίας και καινοτομίας που το τρέχον εκπαιδευτικό σύστημα δεν παρέχει ικανοποιητικά. Η αντίληψη ότι καλός προγραμματιστής ή προγραμματίστρια είναι εκείνοι που γνωρίζουν να γράφουν αποτελεσματικά κώδικα, δεν είναι πλέον, στον 21ο αιώνα, σωστή. 

Το πρόβλημα γίνεται φανερό από τις απαιτήσεις των επιχειρήσεων οι οποίες αναζητούν προγραμματιστές με τις παραπάνω δεξιότητες και δεν μπορούν να βρουν. Ακόμα χειρότερη είναι η διαπίστωση, ότι όχι μόνο δεν μπορούν οι επιχειρήσεις να βρουν προγραμματιστές με τις παραπάνω δεξιότητες, αλλά δεν γνωρίζουν και οι ίδιες πως να εκπαιδεύσουν τους προγραμματιστές τους ώστε να αποκτησουν τις παραπάνω δεξιότητες.


Αναλυτική και σχεδιαστική σκέψη

Θυμάμαι ακόμα το μάθημα 'Ανάλυση και Σχεδιασμός Συστημάτων' που είχα διδαχθεί ως φοιτητής τη δεκαετία του '90 στο τμήμα Πληροφορικής, του ΟΠΑ. Ένα πολύ ενδιαφέρον μάθημα το οποίο παρουσίαζε το πως αναλύουμε ένα σύστημα (π.χ. ένα εμπορικό κατάστημα) και πως στη συνέχεια σχεδιάζουμε ένα πληροφοριακό σύστημα που να υλοποιεί σχεδιαστικά τις απαιτήσεις που έχουν προκύψει από την ανάλυση. Τα κλασσικά εργαλεία ήταν τα διαγράμματα ροής δεδομένων (ΔΡΔ) και το Εννοιολογικό μοντέλο των δεδομένων που στη συνέχεια με μία διαδικασία κανονικοποίησης μετατρεπόταν σε E-R Model, ένα μοντέλο δηλαδή μίας σχεσιακής βάσης δεδομένων. Αυτή η μεθοδολογία ανάλυσης ήταν γνωστή ως Soft Systems Methodology (SSM) και είχε αναπτυχθεί από τον Peter Checkland.  

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

Αυτό αναμφισβήτητα είναι μία μορφή αναλυτικής και σχεδιαστικής σκέψης. Και αυτή η μεθοδολογία ακολουθείται (δυστυχώς) χονδρικά και σήμερα. 

Το πρόβλημα δεν είναι μόνο ότι έχουν παρέλθει πάνω από 30 χρόνια από τότε που διδασκόταν και άρχισε να χρησιμοποιείται αυτή η μεθοδολογία. Άλλωστε ήδη από τότε είχε γίνει κατανοητό ότι υπήρχαν προβλήματα. Πολλες φορές είχε συμβεί να σχεδιάζονται και να υλοποιούνται συστήματα, που τελικά δεν γίνονταν αποδεκτά από τους χρήστες.

Ιδιαίτερα όμως σήμερα που η ανάπτυξη υπηρεσιών και προϊόντων απαιτεί καινοτόμες λύσεις, γίνεται περισσότερο κατανοητό ότι το Systems Thinking δεν είναι αρκετό για να αναπτύχθούν καινοτόμες λύσεις σε πραγματικά προβλήματα. Αυτό που λείπει από τους προγραμματιστές σήμερα αλλά και από τις επιχειρήσεις είναι η βαθιά κατανόηση ότι η ανάλυση και ο σχεδιασμός των συστημάτων δεν πρέπει να γίνεται μόνο με βάση το σύστημα αλλά πρώτα από όλα με βάση τους χρήστες. Πρέπει δηλαδή η διαδικασία να είναι πρώτα human-centered.

Οι δύο αυτές μεθοδολογίες λοιπόν πρέπει να συνδυάζονται με κυρίαρχη όμως την μεθοδολογία ανάλυσης των αναγκών των χρηστών.


Παιδαγωγικό Μοντέλο

Πως όμως μπορεί να διδαχθεί κάτι τέτοιο; Μπορεί να διδαχθεί η καινοτομία ή μήπως η καινοτομία είναι το προνόμιο ευφυών ή ιδιοφυών μυαλών; Μπορούν οι προγραμματιστές να αποκτήσουν δεξιότητες αναλυτικές και σχεδιαστικές με αυτή την έννοια;  Να μπορούν δηλαδή να κατανοήσουν τους στόχους μιας επιχείρισης, τις ανάγκες των χρηστών και να σχεδιάσουν ένα νέο καινοτόμο σύστημα (refactor) με βάση αυτές τις ανάγκες;

Η απάντηση είναι ναι. Η καινοτομία, η αναλυτική και σχεδιαστική σκέψη μπορεί να διδαχθεί, αλλά ο μόνος τρόπος για να γίνει κάτι τέτοιο είναι μέσω βιωματικής μάθησης. Έχω περιγράψει αναλυτικά το πως μπορεί να γίνει αυτό σε ένα άρθρο στο διεθνές επιστημονικό περιοδικο 'Education Sciences', του εκδοτικού οίκου MDPI με τίτλο "Developing and Piloting a Pedagogy for Teaching Innovation, Collaboration, and Co-Creation in Secondary Education Based on Design Thinking, Digital Transformation, and Entrepreneurship", 2019. https://www.mdpi.com/2227-7102/9/2/113


Systems Thinking vs Design Thinking

Η βασική ιδέα είναι πως η ανάλυση και ο σχεδιασμός στον 21ο αιώνα πρέπει να ακολουθεί μία νέα σχετικά μεθοδολογία, το Design Thinking. Ο πυρήνας του Design Thinking είναι η ανάλυση των χρηστών και ο σχεδιασμός συστημάτων όχι μόνο με συστημική σκέψη αλλά κυρίως με ανθρωποκεντρική προσέγγιση. 

Θα φέρω ένα παράδειγμα. Έστω ότι έχουμε να αναλύσουμε ένα εμπορικό σύστημα (μία τράπεζα, μία βιομηχανία, ένα απλό κατάστημα, κλπ). Kαι έστω ότι μία ομάδα προγραμματιστών ακολουθεί την κλασσική συστημική διαδικασία του SSM προσαρμοσμένη για να είναι πιο φιλική προς τους χρήστες. Δηλαδή, μετά το σχεδιασμό και πριν την υλοποίηση οι χρήστες αξιολογούν τη διεπαφή και δίνουν ανατροφοδότηση. Έστω λοιπόν ότι με βάση αυτή τη μεθοδολογία δημιουργείται μία σωστή λύση με βάση τις προδιαγραφές του συστήματος και το feedback των χρηστών. 

Αυτή η λύση προχωράει στην παραγωγή για να διαπιστωθεί στο τέλος, όταν το σύστημα μπει σε λειτουργία, ότι λύνει ένα άλλο πρόβλημα από αυτό που θεωρούσαν οι χρήστες. Δηλαδή έχει σχεδιαστεί και υλοποιηθεί μία σωστή λύση σε ένα λάθος πρόβλημα!

Το Design Thinking για την ακρίβεια λύνει δύο προβλήματα. Το ένα είναι η δημιουργία καινοτόμων λύσεων εισάγοντας τους χρήστες από την αρχή στη διαδικασία ανάλυσης και σχεδιασμού. Γίνεται δηλαδή συν-δημιουργία του νέου συστήματος. Το 2ο είναι η εκπαίδευση των ομάδων προγραμματιστών μέσα από μία βιωματική διαδικασία, ώστε να κατανοήσουν το σύστημα και τις διάφορες συνιστώσες του που δεν είναι μόνο τεχνολογικές, αλλά και οικονομικές, κοινωνικές, κλπ. 

Μέσω αυτής της διαδικασίας δίνεται η δυνατότητα στους προγραμματιστές να εκπαιδευτούν στις πιο σημαντικές δεξιότητες του 21ου αιώνα, και να είναι σε θέση να σχεδιάζουν και να δημιουργούν νέες υπηρεσίες που θα έχουν αξία για τις επιχειρήσεις και την αγορά.


Συμπερασματικά, 

Ο σύγχρονος προγραμματιστής πρέπει να έχει επιπλέον δεξιότητες. Όχι όμως τις γενικές δεξιότητες που συνήθως περιγράφονται μονότονα, όπως problem solving, επικοινωνιακές δεξιότητες, κριτική σκέψη, λήψη αποφάσεων, διαχείριση του χρόνου, κλπ. Αυτές οι δεξιότητες μπορεί να χρειάζονται δεν είναι όμως ικανές να προσδώσουν στους προγραμματιστές αυτό που χρειάζεται η αγορά στον 21ο αιώνα. Η αγορά χρειάζεται καινοτόμο ανάλυση και σχεδιασμό, συν-δημιουργία υπηρεσιών μαζί με τους χρήστες μέσα από μία διαδικασία παρατήρησης και ενσυναίσθησης και τελικά παραγωγή νέας γνώσης. 

Αυτή είναι η σύγχρονη μορφή αναλυτικής και σχεδιαστικής σκέψης!