Κάναμε μια σύντομη μεταγραφή με τις κύριες σκέψεις από το Python Junior Podcast: σε αυτό συζητήσαμε από πού να ξεκινήσουμε και πού να πάμε ως αρχάριος προγραμματιστής Python. Τον τελευταίο καιρό έχουμε πολύ περιεχόμενο για μεσαίους και ηλικιωμένους, αλλά αυτό το επεισόδιο είναι σίγουρα για juniors.

Κύρια θέματα:
- Τι γνώσεις χρειάζεται ένας αρχάριος προγραμματιστής για να εξασκηθεί
Ανάπτυξη διαδικτύου; - Τι περιμένουν οι εργοδότες από τους προγραμματιστές;
- Τι να κάνετε για να βρείτε δουλειά χωρίς εμπειρία;
- Πώς μπορεί να αναπτυχθεί ένας προγραμματιστής Python;
Το Python Junior Podcast είναι ένα podcast προγραμματισμού για όσους θέλουν να κατανοήσουν καλύτερα την Python. Οι εκπομπές πραγματοποιούνται από ευαγγελιστές της κοινότητας και καθηγητές μαθημάτων .
Συμμετέχοντες στη συζήτηση:
- Βαλεντίν Ντομπρόβσκι,συνιδρυτής της MoscowPython
- Zlata Obukhovskaya, Ηγέτης της ομάδας NVIDIA
- Γκριγκόρι Πετρόφ, ευαγγελιστής ΜόσχαΠύθων
- Alexey Shtyrnyaev, προγραμματιστής στο FinEx, καθηγητής μαθημάτων Learn
Python
Γιατί η Python είναι καλή για την ανάπτυξη ιστού
Βαλεντίν Ντομπρόβσκι: Γιατί η Python είναι κατάλληλη για ανάπτυξη ιστού; Γιατί όχι PHP ή JavaScript, για παράδειγμα;
Γκριγκόρι Πετρόφ: Άρα δεν υπάρχουν πολλές επιλογές. Παρά το γεγονός ότι στον σύγχρονο Ιστό μπορείτε πραγματικά να δημιουργήσετε μια εφαρμογή μονής σελίδας ή μια προοδευτική εφαρμογή Ιστού χωρίς backend - χρησιμοποιώντας καθαρά τεχνολογίες front-end, χρησιμοποιώντας JavaScript - εξακολουθεί να είναι πολύ περίπλοκη, κακώς ευρετηριασμένη και απαιτεί καλούς προγραμματιστές.
Αν θέλουμε να δημιουργήσουμε έναν ιστότοπο ή μια υπηρεσία, χρησιμοποιούμε μια συνδυασμένη προσέγγιση: κάποιο backend υλοποιεί τη λογική και δημιουργεί ιστοσελίδες και κάποιο frontend σχεδιάζει αυτές τις ιστοσελίδες στο πρόγραμμα περιήγησης. Και όταν πρέπει να τα συνδυάσουμε γρήγορα όλα σε κάτι, δεν έχουμε πραγματικά επιλογή.
Ας δούμε τις πιθανές επιλογές.
- ΝΤΟ#. Η Microsoft είναι πραγματικά υπέροχη, έφτιαξαν το .NET Core και το προωθούν με κάθε δυνατό τρόπο. Αλλά, πρώτον, αυτή είναι μια νέα τεχνολογία πολλαπλών πλατφορμών και δεν είναι όλα ομαλά ακόμα εκεί. Δεύτερον, είναι πολύ ακριβό, υπάρχουν λίγοι προγραμματιστές C# - απλώς επειδή δεν είναι δημοφιλές.
- Java. Είναι περίπλοκο. Η δημιουργία ενός κανονικού ιστότοπου σε Java δεν απαιτεί 10 γραμμές κώδικα, όπως στην Python. Αυτός είναι πολύς κώδικας, πρόκειται για πλαίσια και πρέπει να γνωρίζετε τις ιδιαιτερότητες της ρύθμισης διακομιστών Java. Γενικά, συνεχής πόνος και ταλαιπωρία.
- PHP. Στις τελευταίες εκδόσεις είναι υπέροχο. Θα πω ακόμη και αυτό: η PHP 7.2 δεν είναι χειρότερη από την Python. Αλλά δεν μπορείτε απλώς να σηκώσετε και να χρησιμοποιήσετε την PHP 7.2. Εάν ένας συνηθισμένος, όχι κορυφαίος προγραμματιστής φτιάξει έναν ιστότοπο σε PHP, δεν θα γράψει μόνο σε 7.2: θα πρέπει ακόμα να διαβάσει μερικά σχολικά βιβλία, σεμινάρια, υπάρχει πολύς κώδικας παλαιού τύπου παντού, και αυτό δεν είναι πολύ καλό.
- JavaScript και Node.js. Είναι υπέροχο και πολύ μοντέρνο όταν υπάρχει μία γλώσσα τόσο στο front-end όσο και στο back-end. Απλά όχι πολύ σταθερό. Το Node.js είναι καλό, αλλά είναι προβληματικό να το αναπτύξεις στην παραγωγή ώστε να μην κολλάει και να λειτουργεί σταθερά. Επιπλέον, αν θέλουμε να γράψουμε ποιοτικό κώδικα JavaScript, δεν χρειαζόμαστε JavaScript, αλλά TypeScript. Αλλά το TypeScript είναι απροσδόκητα πολύπλοκο και ο εγκέφαλος του μέσου προγραμματιστή βράζει όταν το βλέπει.
Ας αφήσουμε έξω τη Ruby, τον Haskell, τον Erlang και άλλα εξειδικευμένα πράγματα και μας μένουν... Python. Μια γλώσσα με συνεπή σύνταξη, μια ενιαία τυπική βιβλιοθήκη, την καλύτερη τεκμηρίωση, δημοφιλή ελαφριά πλαίσια και το πολύ δημοφιλές συνδυασμό Django.
Αποδεικνύεται ότι, παρά την ευρύτερη επιλογή, αν έχουμε απλούς, όχι κορυφαίους προγραμματιστές, είμαστε μια συνηθισμένη επιχείρηση που θέλει να φτιάξει συνηθισμένους ιστότοπους, δεν έχουμε τμήμα ανάπτυξης για 50 άτομα, τότε παίρνουμε την Python.
Τι γνώσεις χρειάζονται για να μπεις στο επάγγελμα;
Zlata Obukhovskaya: Πιστεύω ότι πρέπει να γνωρίζετε καλά ένα πλαίσιο - και να γνωρίζετε τι υπάρχουν άλλα και πότε χρησιμοποιούνται. Πού είναι το Tornado, πού είναι το Django, πού είναι το Flask, πού είναι το aiohttp και ούτω καθεξής.
Θα είναι χρήσιμο να γνωρίζετε ότι υπάρχει κάτι όπως τα πρωτόκολλα. Ειδικότερα, η γνώση του πρωτοκόλλου http είναι κεντρικής σημασίας για τη δημιουργία διαδικτυακών εφαρμογών.
Πρέπει επίσης να κατανοήσετε τουλάχιστον κατά προσέγγιση πώς λειτουργεί η διεπαφή σε έργα ιστού: τι είναι HTML, CSS, JS.
Alexey Shtyrnyaev: Και να ξέρετε πού είναι η τεκμηρίωση. Είναι το πιο σημαντικό.
Γκριγκόρι Πετρόφ: Εδώ πατάμε σε πολύ σαθρό έδαφος. Αν είμαστε άτυχοι και αρχίσουμε με κάποιο τρόπο να μελετάμε σοβαρά το σύγχρονο frontend, τότε θα είναι περίπου 10 φορές πιο περίπλοκο από το backend στην Python. Ένας αρχάριος προγραμματιστής πρέπει να περιορίσει την εστίασή του, ώστε να μπορέσει να αρχίσει να μαθαίνει HTML, αλλά να μην χαθεί σε όλα αυτά τα div, τα spans, τα floats, το πώς όλα είναι ευθυγραμμισμένα και ευθυγραμμισμένα.
Alexey Shtyrnyaev: Χρειάζεστε ένα βασικό μάθημα Bootstrap. Και τα βασικά της HTML.
Τον πρώτο χρόνο, δεν πρέπει να εμβαθύνετε σε πλαίσια JS (αν εστιάζετε στο backend). Το βασικό μάθημα Bootstrap έχει ήδη έτοιμες ενότητες: εάν θέλετε ένα ρυθμιστικό, κάντε ένα ρυθμιστικό εάν θέλετε ένα αιωρούμενο μενού, κάντε ένα αιωρούμενο μενού.
Zlata Obukhovskaya: Νομίζω ότι ενώ μελετάτε το frontend, μπορείτε να βυθιστείτε, ειδικότερα, στον τρόπο με τον οποίο δίνονται γενικά στατικά στοιχεία στις εφαρμογές Ιστού. Έτσι, ο προγραμματιστής προχωρά ομαλά για να αρχίσει να μαθαίνει πώς λειτουργεί κατ' αρχήν η αρχιτεκτονική των εφαρμογών Ιστού και πώς ζουν στην παραγωγή.
Γκριγκόρι Πετρόφ: Ναι, θα το προτείνω αμέσως σε περίπτωση που επιλέξατε την Python ως γλώσσα ανάπτυξης υποστήριξης και, για παράδειγμα, το Django ως πλαίσιο: Το Django έχει τεκμηρίωση στο Βιβλίο Django, είναι πραγματικά υπέροχο, περιέχει όλα όσα είπε η Zlata, πραγματικά καλό για έναν αρχάριο.
Alexey Shtyrnyaev: Μερικά Django Girls είναι επίσης κατάλληλα για ένα γρήγορο ξεκίνημα εάν ο στόχος σας είναι να μάθετε Django. Αυτό είναι ένα σεμινάριο όπου μέσα σε μια μέρα μπορείτε να ξεπεράσετε την κορυφή, να κατανοήσετε τα βασικά και τι είναι ικανό το πλαίσιο.
Βαλεντίν Ντομπρόβσκι: Κατά την προετοιμασία για την εγγραφή του podcast, συντάξαμε μια λίστα με το τι χρειάζεται ένας προγραμματιστής Python για την ανάπτυξη Ιστού, η οποία συνοψίζει όσα είπαμε νωρίτερα.
Τι περιλαμβάνεται στα βασικά για την ανάπτυξη ιστού στην Python
- Πλαίσια Ιστού Django, Flask, aiohttp, Tornado κ.λπ. (και γνωρίζουν την ύπαρξη άλλων).
- Πρωτόκολλα και API: κυρίως http, JSON-RPC, Protocol Buffers, gRPC.
- ORM και μετεγκαταστάσεις, σχεσιακές βάσεις δεδομένων, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Βασικά στοιχεία HTML, CSS, Bootstrap, καθώς και πλαίσια JS και JQuery.
- Αρχές λειτουργίας εφαρμογής στην παραγωγή, δοκιμές, δοκιμές μονάδων, αυτοδοκιμές, συστήματα ελέγχου έκδοσης, git.
Τα juniors χρειάζονται αλγόριθμους;
Zlata Obukhovskaya: Στην αρχή, δεν χρειάζεται να γνωρίζετε τους αλγόριθμους που θα εμφανιστούν σταδιακά στο μυαλό σας, εάν ασχοληθείτε με την ανάπτυξη αρκετά. Ξέρω έναν τόνο καλών μηχανικών που δεν είχαν καλό επίσημο μάθημα αλγορίθμων.
Γκριγκόρι Πετρόφ: Θέλω να ρίξω λάδι στη φωτιά. Από πού πηγάζει η λαχτάρα μας για αλγόριθμους;
Αυτή τη στιγμή δεν έχουμε θεμελιώδη εκπαίδευση στους αλγόριθμους, δεν ξέρουμε πώς να εκπαιδεύουμε προγραμματιστές, δεν έχουμε τεχνική βάση.
Προσπαθούν να το κάνουν αυτό, αλλά εδώ έχουμε την ιστορία του Χόγκουαρτς: δεν μπορούμε να δημιουργήσουμε ένα σχολείο για μάγους ενώ δεν έχουμε ούτε έναν μάγο. Επομένως, τι πρέπει να κάνει ένα πανεπιστήμιο όταν έρθει σε αυτούς και ρωτήσει: "Ξεκινήστε να εκπαιδεύετε προγραμματιστές", αλλά δεν έχουν προγραμματιστές, επειδή όλοι εργάζονται στο Mail.ru, στο Rambler και στο Yandex, είναι ευχαριστημένοι εκεί;
Το πανεπιστήμιο κοιτάζει και λέει:
- Εντάξει, προγραμματισμός. Ας βρούμε έναν σχετικό τομέα γνώσεων και ας προσκαλέσουμε ειδικούς από εκεί. Ας προσκαλέσουμε δημοσιογράφους που μπορούν να γράφουν αντίγραφα, ηλεκτρολόγους μηχανικούς που μπορούν να κάνουν ηλεκτρικά κυκλώματα και μαθηματικούς που μπορούν να χρησιμοποιούν αλγόριθμους.
Τελικά, αποδεικνύεται ότι αυτό είναι τόσο πρακτικό όσο η διδασκαλία της φυσικής των σωματιδίων σε έναν οικοδόμο μόνο και μόνο επειδή το τούβλο και το τσιμέντο αποτελούνται από στοιχειώδη σωματίδια.
Ταυτόχρονα, δεν μιλούν οι ίδιοι για τσιμέντο και τούβλα, γιατί ο φυσικός που προσπαθεί να εκπαιδεύσει έναν οικοδόμο δεν ξέρει πώς να χτίζει σπίτια. Ως αποτέλεσμα, έχουμε έναν οικοδόμο που είναι σε θέση να περιγράψει τέλεια πώς "λειτουργεί το τσιμέντο", αλλά δεν το έχει δει ποτέ και δεν ξέρει πώς να φτιάξει τίποτα από αυτό.
Οι αλγόριθμοι και οι δομές δεδομένων είναι πολύ καλές, αλλά πρόκειται για μια πολύ μικρή περιοχή εφαρμογής. Χρειάζονται επειγόντως, για παράδειγμα, εάν γράφετε μηχανή παιχνιδιών, μεταγλωττιστή ή πρωτόκολλο δικτύου.
Οι περισσότεροι προγραμματιστές επιλύουν επιχειρηματικά προβλήματα όπου δεν χρειάζονται αλγόριθμοι και δομές δεδομένων.
Τα πιο δύσκολα μαθηματικά εκεί είναι η πρόσθεση δύο φορές και μετά η διαίρεση. Απαιτεί εντελώς διαφορετική γνώση. Η επίλυση επιχειρηματικών προβλημάτων απαιτεί κυρίως εφαρμοσμένες και όχι θεμελιώδεις γνώσεις.
Είναι καλύτερο για έναν αρχάριο προγραμματιστή να κατανοήσει τις επιχειρήσεις και πώς να συναρμολογήσει σωστά και γρήγορα τις απαραίτητες δομές από έτοιμα μπλοκ, πώς να τα διορθώσει, πώς να βεβαιωθεί ότι δεν διαλύονται, να γνωρίζει γιατί καταρρέουν, τι γίνεται όταν αλλάζουν οι απαιτήσεις και το πρόγραμμα αρχίζει να «εγκαθίσταται στα θεμέλια» σαν ένα σπίτι μετά τη βροχή.
Αυτά είναι πρακτικά πράγματα και κατανόηση του τρόπου σύνταξης λογισμικού. Πρέπει να ξέρει ότι εκτός από το πρόγραμμα εντοπισμού σφαλμάτων, έχει ένα σύνολο εργαλείων που θα δείχνουν ακριβώς πού επιβραδύνεται το πρόγραμμα.
Βαλεντίν Ντομπρόβσκι: Αυτή η σύγκριση μου ήρθε στο μυαλό: αυτή είναι μια μετάφραση από τη γλώσσα των επιχειρήσεων σε μια γλώσσα στην οποία μπορείτε να επικοινωνήσετε με έναν υπολογιστή. Δηλαδή, ένας προγραμματιστής είναι ένα είδος συγκεκριμένου γλωσσολόγου.
Γκριγκόρι Πετρόφ: Η επιχείρηση χρειάζεται συγγραφέα, όχι γλωσσολόγο. Ο συγγραφέας δεν χρειάζεται να ξέρει γιατί πριν από χίλια χρόνια αυτή η λέξη μετατράπηκε σε αυτή. Πρέπει να μπορεί να εφαρμόσει αυτές τις λέξεις.
Τι χρειάζεστε για να βρείτε την πρώτη σας δουλειά ως προγραμματιστής
Alexey Shtyrnyaev: Πιθανώς δεν υπάρχει καθολική συνταγή για το πώς να μαγειρέψετε junior.
Αν έρθεις σε κάποια εταιρεία, θα σε προσλάβουν όχι επειδή ξέρεις Django, JSON και μερικούς αλγόριθμους. Πιθανότατα θα προσληφθείς για τις δεξιότητες που χρειάζεται αυτή η εταιρεία εδώ και τώρα.
Υπάρχουν πολλές εταιρείες και όλες έχουν διαφορετικές απαιτήσεις. Δεν υπάρχει τέτοιος καθολικός όγκος γνώσεων που πρέπει να αποκτηθεί για να προετοιμάσει περαιτέρω ένα βιογραφικό και να πάει να βρει δουλειά.
Γκριγκόρι Πετρόφ: Όταν εμείς στο VoxImplant ψάχναμε για αρκετούς μηχανικούς, ο τεχνικός μας διευθυντής διατύπωσε τη βασική απαίτηση ως εξής: ένα άτομο πρέπει να μπορεί να λύνει προβλήματα. Είναι σαφές ότι ένας άντρας δεν θα το κάνει πάντα αποτελεσματικά, όχι με τον καλύτερο τρόπο και όχι πάντα σωστά, αλλά ιδανικά δίνετε σε ένα άτομο μια εργασία, καταπονείται και το λύνει. Αυτή είναι η δεξιότητα που αναζητούν πρωτίστως οι εργοδότες.
Zlata Obukhovskaya: Οι άνθρωποι που αναζητούν εργασία από άλλους τομείς έχουν κάποιο πλεονέκτημα από επιχειρηματική άποψη, επειδή έχουν ήδη προχωρήσει σε κάποιο δρόμο και είναι σε θέση να λύσουν γρήγορα προβλήματα. Αυτά είναι soft skills, θα το έλεγα ακόμη και εργασιακή κουλτούρα. Συχνά, οι απόφοιτοι πανεπιστημίου δεν έχουν ακόμη αναπτύξει αυτήν την κουλτούρα εργασίας.
Αλλά θα ήθελα ακόμα να προσπαθήσω να δώσω κάποιο είδος συνταγής σε αρχάριους.
Τα πρώτα βήματα για έναν αρχάριο προγραμματιστή
Zlata Obukhovskaya: Το πρώτο είναι ότι αυτό εξακολουθεί να είναι ένα δικό σας έργο, επειδή πρέπει να γράψετε κάτι στο βιογραφικό σας και να δείξετε ένα ελάχιστο χαρτοφυλάκιο. Είναι πιο ωραίο όταν αυτά τα έργα δεν γίνονται για τον εαυτό σας, αλλά ως ανεξάρτητο έργο - για κάποιον.
Μετά τα πρώτα έργα, μπορείτε ήδη να κάνετε βιογραφικό και να το στείλετε σε όλες τις εταιρείες όπου υπάρχουν θέσεις Ιουνίου. Οι συνεντεύξεις θα παρέχουν μια εικόνα για το τι χρειάζονται οι εταιρείες. Αργά ή γρήγορα κάποιος θα σε προσλάβει, τουλάχιστον σε μια μικρή εταιρεία. Στη συνέχεια, αυτή η εργασιακή εμπειρία θα σας δώσει την ευκαιρία να μπείτε σε μια μεγαλύτερη και πιο ενδιαφέρουσα εταιρεία.
Βαλεντίν Ντομπρόβσκι: Παρεμπιπτόντως, στα μαθήματά μας προετοιμάζουμε τους μαθητές να έχουν το δικό τους έργο μέσα σε 10 εβδομάδες εκπαίδευσης. Επιπλέον, εκπαιδεύουμε δεξιότητες ανάπτυξης ομάδας. Αυτά είναι ακριβώς τα soft skills για τα οποία μίλησε ο Zlata.
Alexey Shtyrnyaev: Μπορώ να σου πω εκ πείρας ότι μπορεί να χρειαστεί πολύς χρόνος για να αναζητήσεις την πρώτη σου δουλειά. Όταν ψάχνεις για ένα ή δύο μήνες, αυτό είναι φυσιολογικό. Αν υποβάλεις το βιογραφικό σου σε όλες τις εταιρείες, πήγαινε σε συνεντεύξεις, τον τρίτο μήνα σίγουρα κάτι θα βρεις.
Βαλεντίν Ντομπρόβσκι: Μπορείτε να κόψετε τα δικά σας έργα ή να αναλάβετε απλά έργα ελεύθερου επαγγελματία και ταυτόχρονα να στείλετε το βιογραφικό σας.
Τι προοπτικές έχει ένας προγραμματιστής Python;
Zlata Obukhovskaya: Ένας προγραμματιστής Python μπορεί να πάει οπουδήποτε. Μπορείτε να πάτε σε δοκιμές και να συνεχίσετε να εξελίσσεστε σε έναν ανώτερο αρχιτέκτονα. Ή ακόμα και στη διαχείριση. Υπάρχουν διαφορετικοί τύποι τεχνικών διευθυντών και μπορείτε να εξελιχθείτε σε ανώτατα στελέχη. Μπορείτε να αναπτυχθείτε στην επιστήμη δεδομένων, τα DevOps, να προχωρήσετε σε αυτοματοποιημένες δοκιμές ή μηχανική εκμάθηση.
Βαλεντίν Ντομπρόβσκι: Γενικά, υπάρχουν πολλές επιλογές και ευκαιρίες, συμπεριλαμβανομένων των μαθημάτων μας. Δεν χρειάζεστε πολλές γνώσεις στην είσοδο, αλλά καλό είναι στη συνέχεια να καλύψετε ένα ευρύτερο φάσμα, γιατί όσο περισσότερες μπορείτε, τόσο το καλύτερο για εσάς.
***
Αυτό είναι μόνο μέρος της κυκλοφορίας . Η πλήρης έκδοση του επεισοδίου είναι διαθέσιμη .
Ή ακόμα κοιτάξτε:

Ευχαριστούμε που διαβάσατε, ακούσατε ή παρακολουθήσατε.
Πηγή: www.habr.com
