Alithinos Δημοσ. 7 Σεπτεμβρίου 2017 Δημοσ. 7 Σεπτεμβρίου 2017 Καλημέρα φίλοι και φίλες. Θα ήθελα να μοιραστώ μαζί σας κάτι που σκεφτόμουν και αναρωτιόμουν... Πέρυσι ίσως να θυμάστε ένα thread που είχα ανοίξει όταν μάθαινα τη πρώτη μου γλώσσα (C#) σαν αυτοδίδακτος, και ρωτούσα διάφορες απορίες. Όταν ξεκίνησα να μαθαίνω, η πιο τελευταία έκδοση της γλώσσας ήταν η 5η, και στη πορεία βγήκε και η 6, και τώρα έχει ήδη βγει η 7, η 7.1 και πάμε για την 7.2. Να πω την αλήθεια τότε αν και καταλάβαινα αρκετά στοιχεία της γλώσσας τι κάνουν, μου ήταν δύσκολο να βρω περιπτώσεις που θα μπορέσω να τα χρησιμοποιήσω, λόγο έλλειψης εμπειρίας τελικά πιστεύω. Από τότε όμως έχω μάθει αρκετά πράγματα, για παράδειγμα κάτι που δεν έβρισκα το λόγο να χρησιμοποιήσω τότε ήταν τα interfaces. Πλέον, αφού είχα ξεκινήσει ένα αρκετά μεγαλύτερο project ανακάλυψα πόσο 'σωτήρια' μπορούν να είναι στις κατάλληλες περιπτώσεις, όταν βρήκα τον εαυτό μου να γράφει ξανά και ξανά πολλές if για να οριστεί το αν το Χ ανήκει σε έναν από τους πολλούς τύπους που ήθελα να κατατάξω σε μια λίστα με βάση κάποια κριτίρια. Παρομοίως συνειδητοποίησα όμως και κάτι άλλο: ότι κάποια άλλα στοιχεία της γλώσσας δεν έχει χρειαστεί να τα χρησιμοποιήσω ούτε 1 φορά. Σε σημείο που έχω ξεχάσει καν και το πως να τα γράψω άμα ήθελα να τα χρησιμοποιήσω. Πχ, η υπερφόρτωση τελεστών. Έκτοτε, σε 1 μόλις περίπου χρόνο από την έκδοση 5 έχουμε φτάσει στην 7.1 σε χρονικό διάστημα που μου φαίνεται σχετικά μικρό, και από νέα features μόνο τον νέο τρόπο γραφής στα strings έχω υιοθετήσει τύπου String.Format("Object affected: {objectName}, count: {varNumber}"); Αυτό που σκεφτόμουν είναι μια αμφιβολία που έχω, μήπως "χάνω" σαν προγραμματιστής που δεν χρησιμοποιώ κάποια νέα features ή έχω ξεχάσει κάποια παλιότερα που είχα μάθει. Και αυτό γιατί λένε ότι το να μείνεις κολλημένος σε μια τεχνολογία για πολύ καιρό είναι κακό. Να πω την αλήθεια όμως, δε βρίσκω λόγους, τουλάχιστον προς το παρόν με ότι έχω ασχοληθεί να χρησιμοποιήσω κάποια νέα ή παλιά features. Και νομίζω προσωπικά τουλάχιστον, πως γνώσεις που απέκτησα διαβάζοντας language agnostic βιβλία όπως το "Pragmatic Programmer" και το "Clean Code" με έχουν βοηθήσει πολύ περισσότερο να εξελιχθώ σε αυτό που κάνω και να το κάνω καλύτερα. Παρεπιπτόντως μου φαίνεται πως είναι πολύ πιο χρήσιμο να αφιερώσω το χρόνο μου για να μάθω καλά τις βιβλιοθήκες του εκάστοτε API παρά τα διάφορα features της γλώσσας με τα οποία δεν είμαι εξοικειωμένος. Γιατί έχει τύχει να ξοδεύω ώρες για να πετύχω κάτι, που εν τέλει ανακάλυψα ότι το ίδιο ακριβώς πράγμα έκανε μια μέθοδος μιας κλάσης του API που δε γνώριζα. Αυτό που θέλω να πω είναι πως οι νέες γνώσεις που αποκτώ από ένα σημείο και έπειτα ορίζονται με βάση την εκάστοτε ανάγκη του τι θέλω να φτιάξω, (εφ όσων δεν είμαι υπάλληλος σε μια εταιρία αλλά φτιάχνω πράγματα στον ελεύθερο χρόνο μου, έχω τη πολυτέλεια του να διαλέγω με τι θα ασχοληθώ) και δε λέω ας πούμε "α βγήκε η νέα έκδοση της γλώσσας, ας κάτσω να μάθω τα νέα στοιχεία εξωνυχιστικά". Είναι αυτό κακό ή καλό ; Θα ήταν καλύτερο κάθε τόσο να κάνω ασκήσεις με στοιχεία που δε χρησιμοποιώ μόνο και μόνο για να τα θυμάμαι, ώστε να ξέρω το 100% όλων των στοιχείων μιας γλώσσας, από το να μαθαίνω νέα πράγματα όπως πχ ένα νέο framework, νέες γνώσεις αρχιτεκτονικής και δομής κτλπ ? Οι ταχύτατοι ρυθμοί με τους οποίους η Microsoft πλέον βγάζει νέες εκδόσεις μου δημιουργούν μια αμφιβολία, με κάνουν να νιώθω πως μένω πίσω, αλλά απ' την άλλη θεωρώ πως θα άξιζε πολύ περισσότερο να ξοδέψω το χρόνο μου για να μάθω καλύτερα το API με το οποίο δουλεύω τώρα, παρά τις νέες δυνατότητες της γλώσσας. Δώστε μου λίγο input να καταλάβω πως εσείς, οι άλλοι προγραμματιστές διαχειρίσεστε το τι μαθαίνετε. Αν έχετε περισσότερη εμπειρία (που σίγουρα κάποιοι έχετε πολλή περισσότερη) θα με ενδιέφερε να ακούσω πως εσείς αντιμετωπίζετε το θέμα.
BabyRage Δημοσ. 7 Σεπτεμβρίου 2017 Δημοσ. 7 Σεπτεμβρίου 2017 Προσωπική μου άποψη είναι ότι για να μάθεις να χρησιμοποιείς ένα νέο feature μιας γλώσσας, πρέπει να καταλάβεις για ποιο λόγο υπάρχει. Δηλαδή, αν απλά πάρεις το changelog της νέας έκδοσης και παίξεις με ένα dummy πρόγραμμα να δεις τι καινούριο έχει μπει, κατά πάσα πιθανότητα την επόμενη μέρα δεν θα θυμάσαι απολύτως τίποτα. Θα πρέπει σε κάποιο πρόγραμμα που φτιάχνεις, να έχεις ένα πρόβλημα, και να έρθει το νέο feature να σου λύσει τα χέρα. Γενικά πάντως, όταν έρχεται κάτι καινούριο, η δυσκολία δεν είναι να το μάθει ο προγραμματιστής, αλλά να αλλάξει το προϋπάρχων codebase, αν πρέπει να αλλάξει. Εγώ αυτό που κάνω όταν μαθαίνω κάτι καινούριο, είναι να ξεκινάω με την πιο διαδεδομένη έκδοση. Όταν αυτή γίνει deprecated, και δεν χρησιμοποιείται - υποστηρίζεται - έχει προβλήματα, τότε μόνο πάω στην επόμενη. Αλλιώς θα αλλάζαμε το codebase κάθε τρεις και λίγο. 2
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα