Πώς διέφυγα από το καθαρτήριο εκμάθησης και έμαθα να κωδικοποιώ - και πώς μπορείτε επίσης.

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

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

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

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

Μπορείτε επίσης να μεταβείτε στο κάτω μέρος για το TL; DR .

Πρόλογος: C ++

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

Άγιοι καπνιστές, βγήκα από το βάθος μου. Έκανα μερικά διαδικτυακά σεμινάρια (νομίζω ότι μέσω του learningcpp ή παρόμοιου) και σύντομα συνειδητοποίησα ότι θα χρειαζόμουν περισσότερη καθοδήγηση για να κατανοήσω βασικές αντικειμενοστρεφείς αρχές προγραμματισμού, ίσως σε μια πιο εύκολα προσβάσιμη γλώσσα, από ό, τι βρίσκω στη μάθηση του C ++.

HTML, CSS, JavaScript και Python

Πριν ξεκινήσω αυτήν την περιπέτεια, είχα ήδη μια μικρή εμπειρία HTML και συνάντησα το Codecademy. Μου άρεσε πολύ η δυνατότητα να κάνω μαθήματα από το πρόγραμμα περιήγησης και χωρίς να χρειάζεται να δημιουργήσω ένα IDE (κάτι τέτοιο για το C ++ ήταν μια δοκιμαστική εμπειρία). Γρήγορα κατανάλωσα όλα τα μαθήματα της Codecademy σε HTML και CSS. Το φυσικό μονοπάτι από εκείνο το σημείο ήταν να κάνω το μάθημα JavaScript, το οποίο μου άρεσε. Αλλά σύντομα βρέθηκα στο "tutorial purgatory" (όχι η δική μου αναφορά), δουλεύοντας μέσω του μαθήματος Python και άλλων.

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

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

ΝΤΟ#

Βρήκα το μάθημα του Ben Tristem's Unity σε μία από τις πολυετές έκπτωση 10000% της Udemy και δούλεψα επιμελώς μέσω των σεμιναρίων για να φτιάξω κλώνους 2D τούβλου και άλλων παιχνιδιών. Έμαθα αρκετά C # για να περάσω αλλά όχι αρκετά για να αισθάνομαι σίγουρος να φτιάχνω κάτι.

Η ίδια η Unity ήταν πιθανώς περισσότερο εμπόδιο από την οδηγία του Tristrem και του Co, η οποία ήταν πραγματικά πολύ καλή. Ο επεξεργαστής Unity είναι ένα κτήμα ενός κινητήρα, με πολλά καλά εργαλεία που είναι αδιαπέραστα από έναν αρχάριο χρήστη (και πάλι, μπορείτε να διαβάσετε περισσότερα για την εμπειρία μου με το Unity εδώ).

Αισθάνομαι ακόμα ότι έμαθα πολλά από τα μαθήματα και την απλή πράξη της έκθεσης στο C # και στην επιθυμητή ροή εργασίας της Unity, αλλά δεν έφτασα αρκετά από την εμπειρία για να συνεχίσω. Ένας φίλος μου με ενημέρωσε για να ρίξω μια ματιά στο freeCodeCamp, όπου πήγα μετά.

Επιστροφή στο JavaScript

Στο πρώτο ρουζ, το freeCodeCamp έχει την εμφάνιση ενός λιγότερο φανταχτερού Codecademy ή Treehouse. Αλλά μου άρεσε πόσο απλά ήταν τα μαθήματα και δεν χρειάστηκε να περάσω από ένα paywall για να σημειώσω πρόοδο. Πήρα από εκεί που σταμάτησα με την εκμάθηση HTML και CSS, σημειώνοντας ικανοποιητική πρόοδο μέχρι να φτάσω στα έργα Responsive Web Design που απαιτούνται για να ολοκληρώσω την πρώτη ενότητα και να λάβω πιστοποίηση.

Μπορώ να πω με βεβαιότητα ότι αυτή ήταν η στιγμή (ή σειρά στιγμών) της εκτόξευσής μου από το καθαρτήριο εκμάθησης. Για έναν αρχάριο χωρίς πραγματική επαγγελματική εμπειρία σχεδιασμού ιστοσελίδων και την προθυμία να βρω τις δικές μου λύσεις χωρίς την απάντηση της Googling, τα έργα ήταν δύσκολα . Τελικά κέρδισα και έφτιαξα μερικούς ανόητους ιστότοπους που ικανοποίησαν τις απαιτήσεις, αλλά η εμπειρία με ώθησε να δουλέψω μέσω πολλών ακόμη εκπαιδευτικών δωρεάνCodeCamp σε βιβλιοθήκες μπροστινών σημείων JavaScript και πλαίσια υποστήριξης.

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

Εργαστήριο μετά το σεμινάριο

Γρήγορη προώθηση πολύ αργότερα και τώρα εργάζομαι σε διάφορα έργα που σχετίζονται με το παιχνίδι στο Phaser και το Unity (κυρίως, ένα ψηφιακό πρωτότυπο για ένα επιτραπέζιο παιχνίδι καρτών που αναπτύσσω). Έχω περάσει πολύ χρόνο στην τεκμηρίωση του πλαισίου και στο Stack Overflow αναζητώντας απαντήσεις και βέλτιστες πρακτικές για πράγματα (συνδέοντας αυτήν την ανάρτηση για άλλη μια φορά για καλό μέτρο). Έχω αναπτύξει επίσης φιλίες με μερικούς συναδέλφους που είναι οι ίδιοι προγραμματιστές και ήταν χρήσιμο να τρέχουν κώδικα από αυτούς για συμβουλές και σχόλια.

Ένα πράγμα που ήταν χρήσιμο για τη δουλειά στα δικά μου έργα είναι απλώς η βασική εμπειρία δημιουργίας ροής εργασίας. Η εκμάθηση της χρήσης της γραμμής εντολών και του Git σε συνεννόηση με τη ρύθμιση του NPM και ενός προγράμματος επεξεργασίας κώδικα, για παράδειγμα, άνοιξε τα μάτια (ειδικά προέρχονται από το CodePen, το οποίο κάνει τα πάντα για εσάς). Για καλύτερα ή χειρότερα, τα περισσότερα εκπαιδευτικά σεμινάρια δεν σας εκθέτουν στο σκατά των εργαλείων που θα χρειαστείτε για να ολοκληρώσετε τη δουλειά σας, και υπάρχουν πολλά να μάθετε.

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

TL; Δρ

JavaScript:

  • Pro: Ένα πολύ καλό σημείο εισόδου στην εκμάθηση αντικειμενοστραφής προγραμματισμού, ειδικά αν σας ενδιαφέρει οποιουδήποτε είδους ανάπτυξη ιστοσελίδων (front or back end) Μπορείτε να το μάθετε μέσω των περισσότερων πλατφορμών, αλλά η εμπειρία μου εξυπηρετήθηκε καλύτερα από το freeCodeCamp.
  • Μειονεκτήματα: Πολλοί ιστότοποι θα σας πουν ότι "τρέχει απλώς στο πρόγραμμα περιήγησής σας", οπότε "δεν χρειάζεται να δημιουργήσετε ένα IDE" και έτσι είναι πιο εύκολο να το μάθετε, αλλά αυτή η νοοτροπία θα σας οδηγήσει μόνο μέχρι τώρα. Εάν πρόκειται να πραγματοποιήσετε κάποια σημαντική ανάπτυξη με δημοφιλή πλαίσια JavaScript (React, Vue, Express κ.λπ.), θα καταλήξετε να ρυθμίσετε κάτι IDE δίπλα σε έναν επεξεργαστή κώδικα, διαχειριστή πακέτων, εξαρτήσεις κ.λπ., χωρίς το είδος της υποστήριξης που θα λάβετε, ας πούμε, τη ρύθμιση .NET ή κάτι παρόμοιο.

Πύθων:

  • Pro: Εξαιρετικά φιλικό για τους νεοεισερχόμενους εάν τα σγουρά τιράντες σε άλλες γλώσσες εκφοβίζουν στην αρχή και ένα καλό σημείο εισόδου εάν σας ενδιαφέρει να μπείτε στον προγραμματισμό ή την επιστήμη δεδομένων. Είχα μια καλή αρχική εμπειρία επιβίβασης μέσω του Codecademy.
  • Μειονεκτήματα: Οι επιλογές σας είναι λίγο περιορισμένες αν θέλετε να μπείτε στην ανάπτυξη ή στο παιχνίδι. Υπάρχουν πλαίσια, για παράδειγμα, που σας επιτρέπουν να κάνετε παιχνίδια (για παράδειγμα, το PyGame), αλλά αν ψάχνετε συγκεκριμένα για την ανάπτυξη παιχνιδιών, θα σας εξυπηρετούσαν καλύτερα αλλού.

ΝΤΟ#:

  • Pro: Μια πολύ ευχάριστη γλώσσα που υποστηρίζεται καλά από τη Microsoft και την κοινότητα ανοιχτού κώδικα. Με αυτό, μπορείτε να κάνετε back-end ανάπτυξη, να δημιουργήσετε εφαρμογές για επιτραπέζιους υπολογιστές, να δημιουργήσετε παιχνίδια (κυρίως με το Unity, αλλά υπάρχουν και άλλες μηχανές όπως το Monogame εκεί έξω). Μπορεί να είναι μια μη δημοφιλής γνώμη, αλλά θα συνιστούσα πρώτα να μάθεις C # μέσω μαθημάτων της Microsoft ή αλλού και έπειτα να μάθεις το Unity για να μειώσεις μέρος του γνωστικού φόρτου που επιβάλλεται από την πολυπλοκότητα του συντάκτη.
  • Con: Δεν υπάρχουν πολλά να μιλήσουμε εδώ, εκτός αν πραγματικά δεν όπως η Microsoft ή πραγματικά δεν θέλουν να εργαστούν στο μπροστινό ανάπτυξης τέλος ιστοσελίδων (υποθέτω ότι θα μπορούσε να εξετάσει Blazor, αλλά εγώ δεν θα συνιστούσα την έναρξη εδώ). Θα μπορούσα να μιλήσω πολλά για το πώς η Unity μπορεί να βελτιώσει την εμπειρία χρήστη, για παράδειγμα, αλλά το C # είναι υπέροχο.

Γενικές σκέψεις για την εκμάθηση και τη διαφυγή του εργαστηριακού εργαστηρίου :

  • Μία από τις απογοητεύσεις μου στη διαδικασία να κάνω την ερώτηση "ποια γλώσσα προγραμματισμού πρέπει να μάθω;" ήταν αυτό που ένιωσα ότι ήταν η ανεπαρκής απάντηση του "καλά, τι θέλετε να χτίσετε;" Συνάντησα αυτήν την απάντηση πολύ και δεν νομίζω ότι είναι ο σωστός τρόπος να μάθω πώς να προγραμματίζω αν δεν γνωρίζετε ήδη τι θέλετε να κάνετε με αυτήν. Ένας αρχάριος δεν έχει αρκετό πλαίσιο για να ξέρει τι μπορεί να χτίσει, πόσο μάλλον τη διαδρομή για να φτάσει εκεί (εκτός αν είναι ο τύπος του ατόμου που θέλει απλώς να κάνει παιχνίδια ή απλά θέλει να κάνει δουλειά ως προγραμματιστής ιστού ).
  • Μια καλύτερη απάντηση θα ήταν να πείτε, "δοκιμάστε μερικά σεμινάρια σε διαφορετικούς ιστότοπους και σε διαφορετικές γλώσσες και δείτε εάν κάτι σας εντυπωσιάζει τόσο ενδιαφέρον. Εάν ναι, κολλήστε με αυτό. Αν δεν είναι, επιλέξτε ένα τυχαία και δείτε που θα σας οδηγήσει. Τα πράγματα που θα μάθετε θα σας βοηθήσουν ανεξάρτητα από το τι πραγματικά κάνετε. "
  • Επιπλέον, εάν μπορείτε να αναγκάσετε να βγείτε από το εκπαιδευτικό οικοσύστημα και να κάνετε οτιδήποτε έξω από το προστατευμένο περιβάλλον που έχει ρυθμιστεί για εσάς, θα σας βοηθήσει να μάθετε πράγματα που θα πρέπει τελικά να γνωρίζετε, όπως η δημιουργία ενός IDE, αναζήτηση απαντήσεων σε ερωτήσεις και κοινή χρήση της εργασίας σας.

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

Εάν σας άρεσε αυτό το άρθρο, σκεφτείτε το ενδεχόμενο να δείτε τα παιχνίδια και τα βιβλία μου, να εγγραφείτε στο κανάλι μου στο YouTube ή να συμμετάσχετε στο Entromancy Discord .

MS Farzan, Ph.D. έχει γράψει και εργαστεί για εταιρείες υψηλού προφίλ βιντεοπαιχνιδιών και ιστότοπους σύνταξης, όπως Electronic Arts, Perfect World Entertainment, Modus Games και MMORPG.com και έχει υπηρετήσει ως Community Manager για παιχνίδια όπως Dungeons & Dragons Neverwinter και Mass Effect: Andromeda . Είναι ο Creative Director και επικεφαλής σχεδιαστής παιχνιδιών του Entromancy: A Cyberpunk Fantasy RPG και συγγραφέας του The Nightpath Trilogy . Βρείτε MS Farzan στο Twitter @sominator.