עשינו תמלול קצר עם המחשבות העיקריות מהפודקאסט של Python Junior: בו דנו היכן להתחיל ולאן ללכת כמפתח Python מתחיל. בזמן האחרון יש לנו הרבה תוכן לבינוני ולבוגרים, אבל הפרק הזה בהחלט מיועד לנוער.

נושאים עיקריים:
- איזה ידע צריך לתרגל מתכנת מתחיל
בניית אתרים? - מה מצפים המעסיקים ממפתחים?
- מה לעשות כדי למצוא עבודה ללא ניסיון?
- איך מפתח Python יכול להתפתח?
Python Junior Podcast הוא פודקאסט תכנות למי שרוצה להבין טוב יותר את Python. השידורים מועברים על ידי אוונגליסטים בקהילה ומורי הקורס .
משתתפים בשיחה:
- ולנטין דומברובסקי,מייסד שותף של MoscowPython
- זלאטה אובוחובסקאיה, ראש צוות NVIDIA
- גריגורי פטרוב, האוונגליסט מוסקבה פיתון
- אלכסיי שטרניאייב, מפתח בחברת FinEx, מורה לקורסי Learn
פיתון
למה Python טוב לפיתוח אתרים
ולנטין דומברובסקי: מדוע Python מתאים לפיתוח אתרים? למה לא PHP או JavaScript, למשל?
גריגורי פטרוב: אז אין הרבה ברירה. למרות העובדה שברשת המודרנית ניתן למעשה לבנות אפליקציית עמוד בודד או אפליקציית אינטרנט פרוגרסיבית ללא backend - אך ורק באמצעות טכנולוגיות חזיתיות, באמצעות JavaScript - זה עדיין מסובך מדי, אינדקס גרוע ודורש מפתחים מגניבים.
אם אנחנו רוצים ליצור אתר או שירות, אנחנו משתמשים בגישה משולבת: חלק אחורי מיישם את ההיגיון ויוצר דפי אינטרנט, וחלק ממשק קצה מצייר את דפי האינטרנט הללו בדפדפן. וכשאנחנו צריכים להרכיב את הכל במהירות על משהו, אין לנו באמת ברירה.
בואו נסתכל על האפשרויות האפשריות.
- C#. מיקרוסופט ממש מעולה, הם יצרו את .NET Core ומקדמים אותה בכל דרך אפשרית. אבל, ראשית, זוהי טכנולוגיה חוצה פלטפורמות חדשה, ועדיין לא הכל חלק שם. שנית, זה ממש יקר, יש מעט מפתחי C# - פשוט כי זה לא פופולרי.
- Java. זה מסובך. יצירת אתר רגיל ב-Java לא דורשת 10 שורות קוד, כמו ב-Python. זה הרבה קוד, אלה מסגרות, ואתה צריך לדעת את הפרטים של הגדרת שרתי Java. באופן כללי, כאב וסבל מתמשכים.
- PHP. בגרסאות האחרונות זה נפלא. אני אפילו אגיד את זה: PHP 7.2 לא יותר גרוע מפייתון. אבל אתה לא יכול פשוט להרים ולהשתמש ב-PHP 7.2. אם מפתח רגיל, לא מוביל יוצר אתר ב-PHP, הוא לא יכתוב רק ב-7.2: הוא עדיין יצטרך לקרוא כמה ספרי לימוד, מדריכים, יש הרבה קוד עתיק בכל מקום, וזה לא ממש טוב.
- JavaScript ו-Node.js. זה נפלא ומודרני מאוד כשיש שפה אחת גם בחזית וגם בקצה האחורי. פשוט לא מאוד יציב. Node.js זה דבר טוב, אבל זה בעייתי לפרוס אותו בייצור כך שהוא לא יקרוס ויעבוד ביציבות. בנוסף, אם אנחנו רוצים לכתוב קוד JavaScript איכותי, אנחנו לא צריכים JavaScript, אלא TypeScript. אבל TypeScript מורכב באופן בלתי צפוי, והמוח של המפתח הממוצע רותח כשהוא רואה את זה.
בוא נשאיר את רובי, האסקל, ארלנג ודברי נישה אחרים, ונשאר עם... פייתון. שפה עם תחביר עקבי, ספרייה סטנדרטית אחידה, התיעוד הטוב ביותר, מסגרות קלות משקל פופולריות ושילוב ה-Django המגה-פופולרי.
מסתבר שלמרות הבחירה הרחבה ביותר, אם יש לנו מפתחים רגילים, לא מובילים, אנחנו עסק רגיל שרוצה לעשות אתרים רגילים, אין לנו מחלקת פיתוח ל-50 איש, אז אנחנו לוקחים את פייתון.
איזה ידע נדרש כדי להיכנס למקצוע?
זלאטה אובוחובסקאיה: אני מאמין שצריך להכיר מסגרת אחת היטב - ולדעת מה קיימות אחרות ומתי משתמשים בהן. איפה טורנדו, איפה ג'נגו, איפה פלאסק, איפה aiohttp וכן הלאה.
זה יהיה שימושי לדעת שיש דבר כזה כמו פרוטוקולים. בפרט, ידע בפרוטוקול http הוא מרכזי בבניית יישומי אינטרנט.
אתה גם צריך לפחות להבין בערך איך ה-front end עובד בפרויקטים אינטרנטיים: מה זה HTML, CSS, JS.
אלכסיי שטירניייב: ולדעת איפה התיעוד. זה הכי חשוב.
גריגורי פטרוב: כאן אנחנו צועדים על קרקע רעועה מאוד. אם יתמזל מזלנו ואיכשהו נתחיל ללמוד ברצינות את ה-frontend המודרני, אז זה יהיה בערך פי 10 יותר מסובך מה-backend ב-Python. מפתח מתחיל צריך להגביל את המיקוד שלו כדי שיוכל להתחיל ללמוד HTML, אבל לא ללכת לאיבוד בכל ה-divs, spans, floats, איך הכל מיושר ושורר.
אלכסיי שטירניייב: צריך קורס Bootstrap בסיסי. והיסודות של HTML.
בשנה הראשונה, לא כדאי להתעמק במסגרות JS (אם אתה מתמקד ב-backend). בקורס Bootstrap הבסיסי כבר יש מודולים מוכנים: אם אתה רוצה סליידר, צור סליידר; אם אתה רוצה תפריט צף, צור תפריט צף.
זלאטה אובוחובסקאיה: אני חושב שבזמן לימוד החזית, אתה יכול לטבול את עצמך, במיוחד, כיצד נתון סטטי בדרך כלל ליישומי אינטרנט. אז המפתח עובר בצורה חלקה כדי להתחיל ללמוד כיצד הארכיטקטורה של יישומי אינטרנט פועלת באופן עקרוני וכיצד הם חיים בייצור.
גריגורי פטרוב: כן, אני אמליץ עליו מיד למקרה שבחרתם ב-Python כשפת פיתוח עורפית, ולמשל ב-Django כמסגרת: ל-Django יש תיעוד בספר ה-Django, זה ממש מגניב, הוא מכיל את כל מה שזלאטה אמרה, היא ו ממש טוב למתחילים.
אלכסיי שטירניייב: כמה בנות ג'נגו מתאימות גם להתחלה מהירה אם המטרה שלך היא ללמוד ג'נגו. זהו מדריך שבו ביום אחד אתה יכול לעבור על הטופ, להבין את היסודות ולמה המסגרת מסוגלת.
ולנטין דומברובסקי: לקראת הקלטת הפודקאסט, ריכזנו רשימה של מה צריך מתכנת Python לצורך פיתוח אתרים, שמסכמת את מה שאמרנו קודם.
מה כלול ביסודות לפיתוח אתרים ב-Python
- מסגרות אינטרנט Django, Flask, aiohttp, Tornado וכו' (וידעו על קיומם של אחרים).
- פרוטוקולים וממשקי API: בעיקר http, JSON-RPC, Buffers Protocol, gRPC.
- ORM והגירות, מסדי נתונים יחסיים, SQLAlchemy, SQL, PostgreSQL, MySQL.
- יסודות של HTML, CSS, Bootstrap, כמו גם מסגרות JS ו-JQuery.
- עקרונות פעולת האפליקציה בייצור, בדיקות, בדיקות יחידה, בדיקות אוטומטיות, מערכות בקרת גרסאות, git.
האם זוטרים צריכים אלגוריתמים?
זלאטה אובוחובסקאיה: בהתחלה, אתה לא צריך להכיר את האלגוריתמים; הם יופיעו בהדרגה בראש שלך אם אתה עוסק בפיתוח מספיק זמן. אני מכיר המון מהנדסים טובים שלא עברו קורס אלגוריתמים רשמי טוב.
גריגורי פטרוב: אני רוצה להוסיף שמן למדורה. מאיפה התשוקה שלנו לאלגוריתמים?
אין לנו כרגע השכלה בסיסית באלגוריתמים, אנחנו לא יודעים להכשיר מתכנתים, אין לנו בסיס טכני.
הם מנסים לעשות זאת, אבל כאן יש לנו את הסיפור של הוגוורטס: אנחנו לא יכולים ליצור בית ספר לקוסמים בזמן שאין לנו קוסם אחד. לכן, מה אוניברסיטה צריכה לעשות כשהם באים אליהם ושואלים: "תתחילו להכשיר מתכנתים", אבל אין להם מתכנתים, כי כולם עובדים ב-Mail.ru, Rambler ו-Yandex, הם מרגישים שם טוב?
האוניברסיטה מסתכלת ואומרת:
- בסדר, תכנות. בואו למצוא איזשהו תחום ידע קשור ונזמין משם מומחים. בואו נזמין עיתונאים שיודעים לכתוב עותק, מהנדסי חשמל שיודעים ליצור מעגלים חשמליים ומתמטיקאים שיודעים להשתמש באלגוריתמים.
בסופו של דבר, מתברר שזה מעשי כמו ללמד פיזיקה של חלקיקים בונה רק בגלל שלבנים ומלט עשויים מחלקיקים יסודיים.
יחד עם זאת, הם לא מדברים על מלט ולבנים בעצמם, כי הפיזיקאי שמנסה להכשיר בנאי לא יודע לבנות בתים. כתוצאה מכך, אנו מקבלים בנאי שמסוגל לתאר בצורה מושלמת איך "מלט עובד", אבל מעולם לא ראה אותו ולא יודע איך לעשות ממנו שום דבר.
אלגוריתמים ומבני נתונים טובים מאוד, אבל זהו אזור יישום קטן מאוד. הם נחוצים בדחיפות, למשל, אם אתה כותב מנוע משחק, מהדר או פרוטוקול רשת.
רוב המתכנתים פותרים בעיות עסקיות שבהן אין צורך באלגוריתמים ומבני נתונים.
המתמטיקה הכי קשה שיש היא להוסיף פעמיים ואז לחלק. זה דורש ידע אחר לגמרי. פתרון בעיות עסקיות דורש בעיקר ידע יישומי ולא בסיסי.
עדיף למפתח טירון הבנה בעסקים וכיצד להרכיב נכון ומהיר את המבנים הדרושים מבלוקים מוכנים, כיצד לנפות אותם, כיצד לוודא שהם לא יתפרקו, לדעת מדוע הם מתפרקים, מה קורה כשהדרישות משתנות והתוכנית מתחילה "להתיישב על הבסיס" כמו בית אחרי גשם.
אלו דברים פרקטיים והבנה איך לכתוב תוכנה. הוא צריך לדעת שבנוסף ל-debugger, יש לו סט כלים שיראה בדיוק היכן התוכנית מאטה.
ולנטין דומברובסקי: ההשוואה הזו עלתה במוחי: מדובר בתרגום משפת העסקים לשפה שבה אפשר לתקשר עם מחשב. כלומר, מתכנת הוא סוג של בלשן ספציפי.
גריגורי פטרוב: עסקים צריכים סופר, לא בלשן. הכותב לא צריך לדעת מדוע לפני אלף שנים הוסבה המילה הזו לזה. הוא צריך להיות מסוגל ליישם את המילים האלה.
מה אתה צריך כדי למצוא את העבודה הראשונה שלך כמפתח
אלכסיי שטירניייב: כנראה שאין מתכון אוניברסלי איך לבשל ג'וניור.
אם תגיע לאיזו חברה, הם יעסיקו אותך לא בגלל שאתה מכיר את ג'נגו, JSON וכמה אלגוריתמים. סביר להניח שתתקבל לעבודה עבור הכישורים שהחברה הזו צריכה כאן ועכשיו.
יש הרבה חברות, ולכולן יש דרישות שונות. אין כמות כל כך אוניברסלית של ידע שצריך להשיג כדי להמשיך להכין קורות חיים וללכת למצוא עבודה.
גריגורי פטרוב: כשחיפשנו ב-VoxImplant מספר מהנדסים, המנהל הטכני שלנו ניסח את הדרישה הבסיסית באופן הבא: אדם חייב להיות מסוגל לפתור בעיות. ברור שג'וניור לא תמיד יעשה זאת בצורה יעילה, לא בצורה הטובה ביותר ולא תמיד נכון, אבל באופן אידיאלי אתה נותן לאדם משימה, הוא מתאמץ ופותר אותה. זו המיומנות שמעסיקים מחפשים בעיקר.
זלאטה אובוחובסקאיה: לאנשים שמחפשים עבודה מתחומים אחרים יש יתרון מסוים מבחינה עסקית כי הם כבר הלכו בדרך כלשהי ומסוגלים לפתור בעיות במהירות. אלו כישורים רכים, אפילו הייתי קורא לזה תרבות עבודה. לעתים קרובות, בוגרי אוניברסיטאות עדיין לא פיתחו את תרבות העבודה הזו.
אבל בכל זאת הייתי רוצה לנסות לתת סוג של מתכון למתחילים.
צעדים ראשונים למפתח מתחיל
זלאטה אובוחובסקאיה: הראשון הוא שזה עדיין סוג של פרויקט משלך, כי אתה צריך לכתוב משהו בקורות החיים שלך ולהראות תיק עבודות מינימלי. זה יותר מגניב כאשר הפרויקטים האלה לא נוצרים עבור עצמך, אלא כפרויקט עצמאי - עבור מישהו.
אחרי הפרויקטים הראשונים כבר אפשר להכין קורות חיים ולשלוח לכל החברות בהן יש משרות ביוני. ראיונות יספקו תובנה למה חברות זקוקות. במוקדם או במאוחר מישהו יעסיק אותך, לפחות בחברה קטנה. בהמשך, ניסיון עבודה זה ייתן לך את האפשרות להיכנס לחברה גדולה ומעניינת יותר.
ולנטין דומברובסקי: אגב, בקורסים שלנו אנחנו מכינים את התלמידים לקבל פרויקט משלהם תוך 10 שבועות מההכשרה. בנוסף אנו מאמנים מיומנויות פיתוח צוות. אלו בדיוק הכישורים הרכים שזלאטה דיברה עליהם.
אלכסיי שטירניייב: אני יכול להגיד לך מניסיון שיכול לקחת הרבה מאוד זמן כדי לחפש את העבודה הראשונה שלך. כשאתה מחפש חודש או חודשיים, זה נורמלי. אם תגישו את קורות החיים שלכם לכל החברות, לכו לראיונות, בחודש השלישי בהחלט תמצאו משהו.
ולנטין דומברובסקי: אתה יכול לחתוך פרויקטים משלך או לקחת על עצמך פרויקטים עצמאיים פשוטים ובמקביל לשלוח את קורות החיים שלך.
אילו סיכויים יש למפתח Python?
זלאטה אובוחובסקאיה: מפתח Python יכול ללכת לכל מקום. ניתן להיכנס לבדיקות ולהמשיך להתפתח לאדריכל בכיר. או אפילו לניהול. ישנם סוגים שונים של מנהלים טכניים, ואתה יכול לצמוח להנהלה בכירה. אתה יכול להתפתח במדעי הנתונים, DevOps, להיכנס לבדיקות אוטומטיות או למידת מכונה.
ולנטין דומברובסקי: באופן כללי, יש הרבה אפשרויות והזדמנויות, כולל הקורסים שלנו. אתה לא צריך הרבה ידע בכניסה, אבל מומלץ אז לכסות מגוון רחב יותר, כי ככל שאתה יכול יותר, כך ייטב לך.
***
זה רק חלק מההוצאה . הגרסה המלאה של הפרק זמינה .
או אפילו תראה:

תודה על הקריאה, ההקשבה או הצפייה.
מקור: www.habr.com
