ما یک متن کوتاه با افکار اصلی از پادکست Python Junior تهیه کردیم: در آن بحث کردیم که به عنوان یک توسعه دهنده مبتدی پایتون از کجا شروع کنیم و کجا برویم. اخیراً مطالب زیادی برای میانسالان و بزرگسالان داریم، اما این قسمت قطعاً برای نوجوانان است.

موضوع اصلی:
- یک برنامه نویس مبتدی برای تمرین به چه دانشی نیاز دارد
توسعه وب؟ - کارفرمایان از توسعه دهندگان چه انتظاری دارند؟
- برای یافتن شغل بدون تجربه چه باید کرد؟
- چگونه یک توسعه دهنده پایتون می تواند توسعه دهد؟
Python Junior Podcast یک پادکست برنامه نویسی برای کسانی است که می خواهند پایتون را بهتر درک کنند. پخش ها توسط مبشران جامعه انجام می شود و معلمان دوره .
شرکت کنندگان در گفتگو:
- والنتین دومبروفسکی،یکی از بنیانگذاران MoscowPython
- زلاتا اوبوخوفسایا، رهبر تیم NVIDIA
- گریگوری پتروف، بشارتگر مسکو پایتون
- الکسی اشتیرنیایف، توسعه دهنده در FinEx، معلم دوره های Learn
پــایتــون
چرا پایتون برای توسعه وب خوب است؟
والنتین دومبروفسکی: چرا پایتون برای توسعه وب مناسب است؟ چرا مثلاً PHP یا جاوا اسکریپت نیست؟
گریگوری پتروف: بنابراین انتخاب زیادی وجود ندارد. علیرغم این واقعیت که در وب مدرن واقعاً می توانید یک برنامه تک صفحه ای یا برنامه وب مترقی را بدون پشتیبان بسازید - صرفاً با استفاده از فناوری های جلویی و با استفاده از جاوا اسکریپت - هنوز هم بسیار پیچیده است، ایندکس شده ضعیف است و به توسعه دهندگان جالب نیاز دارد.
اگر میخواهیم یک وبسایت یا سرویس بسازیم، از یک رویکرد ترکیبی استفاده میکنیم: برخی از Backend منطق را پیادهسازی میکنند و صفحات وب را ایجاد میکنند، و برخی frontend این صفحات وب را در مرورگر ترسیم میکنند. و وقتی لازم است همه چیز را سریعاً روی چیزی جمع کنیم، واقعاً انتخابی نداریم.
بیایید به گزینه های ممکن نگاه کنیم.
- سی شارپ. مایکروسافت واقعا عالی است، آنها دات نت Core را ساخته اند و به هر طریق ممکن آن را تبلیغ می کنند. اما، اولا، این یک فناوری جدید بین پلتفرمی است و هنوز همه چیز در آنجا صاف نیست. ثانیاً، واقعاً گران است، توسعه دهندگان سی شارپ کمی وجود دارد - صرفاً به این دلیل که محبوب نیست.
- جاوا این پیچیده است. ساختن یک وب سایت معمولی در جاوا مانند پایتون به 10 خط کد نیاز ندارد. این کدهای زیادی است، اینها فریمورک هستند و شما باید مشخصات راه اندازی سرورهای جاوا را بدانید. به طور کلی درد و رنج مداوم.
- پی اچ پی در آخرین نسخه ها فوق العاده است. حتی این را می گویم: PHP 7.2 بدتر از پایتون نیست. اما شما نمی توانید فقط PHP 7.2 را بردارید و از آن استفاده کنید. اگر یک توسعهدهنده معمولی و نه برتر، یک وبسایت با PHP بسازد، فقط با 7.2 نمینویسد: او هنوز باید چند کتاب درسی، آموزش بخواند، کدهای قدیمی زیادی در همه جا وجود دارد، و این خیلی خوب نیست.
- جاوا اسکریپت و Node.js. وقتی یک زبان هم در قسمت جلویی و هم در قسمت پشتی آن وجود دارد، فوقالعاده و بسیار مدرن است. فقط خیلی پایدار نیست Node.js چیز خوبی است، اما استقرار آن در تولید مشکل دارد تا خراب نشود و پایدار کار کند. به علاوه، اگر بخواهیم کد جاوا اسکریپت با کیفیت بنویسیم، به جاوا اسکریپت نیاز نداریم، بلکه به TypeScript نیاز داریم. اما TypeScript به طور غیرمنتظره ای پیچیده است و مغز توسعه دهندگان معمولی با دیدن آن به جوش می آید.
بیایید Ruby، Haskell، Erlang و سایر موارد خاص را کنار بگذاریم، و ما با پایتون باقی میمانیم. زبانی با نحو سازگار، کتابخانه استاندارد یکنواخت، بهترین مستندات، چارچوبهای سبک محبوب و ترکیب فوقالعاده محبوب جنگو.
به نظر می رسد که، با وجود گسترده ترین انتخاب، اگر توسعه دهندگان معمولی و نه برتر داشته باشیم، یک تجارت معمولی هستیم که می خواهیم وب سایت های معمولی بسازیم، ما یک بخش توسعه برای 50 نفر نداریم، سپس پایتون را می گیریم.
برای ورود به این حرفه چه دانشی لازم است؟
زلاتا اوبوخوفسایا: من معتقدم که شما باید یک چارچوب را به خوبی بشناسید - و بدانید که دیگران چه چیزهایی وجود دارند و چه زمانی از آنها استفاده می شود. تورنادو کجا، جنگو کجا، فلاسک کجا، aiohttp کجا و غیره.
دانستن اینکه چیزی به نام پروتکل وجود دارد مفید خواهد بود. به طور خاص، دانش پروتکل http برای ساختن برنامه های کاربردی وب محوری است.
شما همچنین باید حداقل به طور تقریبی درک کنید که قسمت جلویی در پروژه های وب چگونه کار می کند: HTML، CSS، JS چیست.
الکسی اشتیرنیایف: و بدانید اسناد کجاست. از همه مهمتر است.
گریگوری پتروف: در اینجا ما روی زمین بسیار لرزان قدم می گذاریم. اگر ما بدشانس باشیم و به نوعی شروع به مطالعه جدی فرانت اند مدرن کنیم، آنگاه حدود 10 برابر پیچیده تر از باطن در پایتون خواهد بود. یک توسعهدهنده مبتدی باید تمرکز خود را محدود کند تا بتواند شروع به یادگیری HTML کند، اما در همه این divها، spanها، شناورها، نحوه تراز و ردیف شدن همه چیز گم نشود.
الکسی اشتیرنیایف: به یک دوره اولیه بوت استرپ نیاز دارید. و اصول اولیه HTML.
در سال اول، شما نباید به چارچوب های JS بپردازید (اگر روی Backend تمرکز می کنید). دوره اولیه بوت استرپ در حال حاضر دارای ماژول های آماده است: اگر یک اسلایدر می خواهید، یک اسلایدر بسازید؛ اگر یک منوی شناور می خواهید، یک منوی شناور بسازید.
زلاتا اوبوخوفسایا: من فکر می کنم که در حین مطالعه frontend، می توانید خود را غرق کنید، به ویژه در نحوه ارائه استاتیک به طور کلی به برنامه های کاربردی وب. به این ترتیب، توسعه دهنده به آرامی شروع به یادگیری نحوه عملکرد اصولی معماری برنامه های کاربردی وب و نحوه زندگی آنها در تولید می کند.
گریگوری پتروف: بله، در صورتی که پایتون را به عنوان یک زبان توسعه باطن و، به عنوان مثال، جنگو را به عنوان فریمورک انتخاب کنید، فوراً آن را توصیه میکنم: جنگو اسنادی در کتاب جنگو دارد، واقعاً عالی است، حاوی همه چیزهایی است که زلاتا گفته است، او واقعاً برای یک مبتدی خوب است
الکسی اشتیرنیایف: اگر هدف شما یادگیری جنگو است، برخی از دختران جنگو نیز برای شروع سریع مناسب هستند. این آموزشی است که در آن در یک روز میتوانید به سطح بالایی بروید، اصول اولیه و توانایی چارچوب را درک کنید.
والنتین دومبروفسکی: در آمادهسازی برای ضبط پادکست، فهرستی از آنچه برنامهنویس پایتون برای توسعه وب به آن نیاز دارد، جمعآوری کردیم که خلاصهای از آنچه قبلاً گفتیم است.
آنچه در اصول اولیه توسعه وب در پایتون گنجانده شده است
- فریمورک های وب جنگو، فلاسک، aiohttp، تورنادو و غیره (و از وجود دیگران مطلع شوید).
- پروتکل ها و API ها: در درجه اول http، JSON-RPC، Protocol Buffers، gRPC.
- ORM و مهاجرت ها، پایگاه های داده رابطه ای، SQLAlchemy، SQL، PostgreSQL، MySQL.
- مبانی HTML، CSS، Bootstrap، و همچنین چارچوب های JS و JQuery.
- اصول عملکرد برنامه در تولید، تست، تست واحد، تست خودکار، سیستم های کنترل نسخه، git.
آیا نوجوانان به الگوریتم نیاز دارند؟
زلاتا اوبوخوفسایا: در ابتدا، نیازی به دانستن الگوریتمها ندارید؛ اگر به اندازه کافی درگیر توسعه باشید، آنها به تدریج در ذهن شما ظاهر میشوند. من هزاران مهندس خوب را می شناسم که درس الگوریتم های رسمی خوبی نداشته اند.
گریگوری پتروف: من می خواهم به آتش سوخت اضافه کنم. میل ما به الگوریتم ها از کجا می آید؟
ما در حال حاضر آموزش اصولی الگوریتم نداریم، برنامه نویس را نمی دانیم، پایه فنی نداریم.
آنها سعی می کنند این کار را انجام دهند، اما در اینجا ما داستان هاگوارتز را داریم: ما نمی توانیم مدرسه ای برای جادوگران ایجاد کنیم در حالی که یک جادوگر واحد نداریم. بنابراین، وقتی دانشگاه به آنها مراجعه می کند و می پرسد: "شروع به آموزش برنامه نویسان کنید" چه باید بکند، اما آنها برنامه نویس ندارند، زیرا همه در Mail.ru، Rambler و Yandex کار می کنند، آیا در آنجا خوشحال هستند؟
دانشگاه نگاه می کند و می گوید:
- باشه، برنامه نویسی. بیایید برخی از حوزه های دانش مرتبط را پیدا کنیم و متخصصانی را از آنجا دعوت کنیم. بیایید از روزنامه نگارانی دعوت کنیم که می توانند کپی بنویسند، مهندسان برق که می توانند مدارهای الکتریکی بسازند و ریاضیدانانی که می توانند از الگوریتم ها استفاده کنند.
در پایان، معلوم می شود که این کار به اندازه آموزش فیزیک ذرات سازنده عملی است، فقط به این دلیل که آجر و سیمان از ذرات بنیادی ساخته شده اند.
در عین حال، خودشان در مورد سیمان و آجر صحبت نمیکنند، زیرا فیزیکدانی که میخواهد یک سازنده تربیت کند، نمیداند چگونه خانه بسازد. در نتیجه، سازندهای را دریافت میکنیم که میتواند به خوبی نحوه «کارکرد سیمان» را توصیف کند، اما هرگز آن را ندیده و نمیداند چگونه از آن چیزی بسازد.
الگوریتم ها و ساختارهای داده بسیار خوب هستند، اما این یک منطقه کاربردی بسیار کوچک است. برای مثال، اگر در حال نوشتن یک موتور بازی، کامپایلر یا پروتکل شبکه هستید، به آنها نیاز فوری دارند.
اکثر برنامه نویسان مشکلات تجاری را در جایی حل می کنند که الگوریتم ها و ساختارهای داده مورد نیاز نباشد.
سخت ترین ریاضیات در آنجا جمع کردن دوبار و سپس تقسیم است. این نیاز به دانش کاملا متفاوتی دارد. حل مشکلات تجاری عمدتاً به دانش کاربردی و نه بنیادی نیاز دارد.
برای یک توسعه دهنده مبتدی بهتر است درک درستی از تجارت و نحوه جمع آوری صحیح و سریع ساختارهای لازم از بلوک های آماده داشته باشد، چگونه آنها را اشکال زدایی کند، چگونه مطمئن شود که از هم نمی پاشند، بدانند چرا از هم می پاشند، چه اتفاقی میافتد وقتی الزامات تغییر میکند و برنامه شروع میشود مانند خانهای پس از باران "روی پایه".
اینها چیزهای عملی و درک نحوه نوشتن نرم افزار هستند. او باید بداند که علاوه بر دیباگر، مجموعه ای از ابزارها را نیز در اختیار دارد که دقیقاً محل کند شدن برنامه را نشان می دهد.
والنتین دومبروفسکی: این مقایسه به ذهن من رسید: این ترجمه از زبان تجارت به زبانی است که می توانید با رایانه ارتباط برقرار کنید. یعنی برنامه نویس نوعی زبان شناس خاص است.
گریگوری پتروف: تجارت به نویسنده نیاز دارد نه زبانشناس. نویسنده نیازی ندارد بداند چرا هزار سال پیش این کلمه به این تبدیل شده است. او باید بتواند این کلمات را به کار ببرد.
آنچه شما برای پیدا کردن اولین شغل خود به عنوان یک توسعه دهنده نیاز دارید
الکسی اشتیرنیایف: احتمالاً هیچ دستور العمل جهانی برای نحوه طبخ جونیور وجود ندارد.
اگر به فلان شرکت بیایید، شما را استخدام می کنند نه به این دلیل که جنگو، JSON و چند الگوریتم را می شناسید. شما به احتمال زیاد برای مهارت هایی که این شرکت در اینجا و اکنون به آن نیاز دارد استخدام خواهید شد.
شرکت های زیادی وجود دارند و همه آنها نیازهای متفاوتی دارند. چنین میزان دانش جهانی وجود ندارد که برای تهیه رزومه بیشتر و یافتن شغل لازم باشد.
گریگوری پتروف: زمانی که ما در VoxImplant به دنبال چندین مهندس بودیم، مدیر فنی ما نیاز اساسی را به صورت زیر بیان کرد: یک فرد باید بتواند مشکلات را حل کند. واضح است که یک جوان همیشه این کار را به طور موثر انجام نمی دهد، نه به بهترین شکل و نه همیشه به درستی، اما در حالت ایده آل شما به یک فرد یک وظیفه می دهید، او آن را تحت فشار قرار می دهد و آن را حل می کند. این مهارتی است که کارفرمایان در درجه اول به دنبال آن هستند.
زلاتا اوبوخوفسایا: افرادی که به دنبال کار در زمینه های دیگر هستند از نظر تجاری مزیت هایی دارند زیرا قبلاً راهی را طی کرده اند و می توانند مشکلات را به سرعت حل کنند. اینها مهارت های نرم هستند، من حتی آن را فرهنگ کار می نامم. اغلب، فارغ التحصیلان دانشگاه هنوز این فرهنگ کاری را توسعه نداده اند.
اما من هنوز هم دوست دارم سعی کنم نوعی دستور غذا را به مبتدیان ارائه دهم.
اولین قدم برای یک توسعه دهنده تازه کار
زلاتا اوبوخوفسایا: اولین مورد این است که این هنوز نوعی پروژه از خود شماست، زیرا باید چیزی در رزومه خود بنویسید و نمونه کار حداقلی را نشان دهید. وقتی این پروژهها برای خودتان ساخته نمیشوند، بلکه بهعنوان یک پروژه مستقل - برای کسی ساخته میشوند، جالبتر است.
پس از اولین پروژه ها، می توانید از قبل رزومه تهیه کنید و آن را برای تمام شرکت هایی که موقعیت های ژوئن وجود دارد ارسال کنید. مصاحبه ها بینشی را در مورد آنچه شرکت ها نیاز دارند ارائه می دهد. دیر یا زود شخصی شما را استخدام می کند، حداقل در یک شرکت کوچک. پس از آن، این تجربه کاری به شما این فرصت را می دهد که وارد یک شرکت بزرگتر و جالب تر شوید.
والنتین دومبروفسکی: به هر حال، در دوره های خود ما دانش آموزان را آماده می کنیم تا در مدت 10 هفته از آموزش پروژه خود را داشته باشند. به علاوه ما مهارت های توسعه تیم را آموزش می دهیم. اینها دقیقا همان مهارت های نرمی است که زلاتا در مورد آنها صحبت کرد.
الکسی اشتیرنیایف: من از روی تجربه می توانم به شما بگویم که جستجوی اولین کار ممکن است زمان زیادی طول بکشد. وقتی به دنبال یک یا دو ماه هستید، طبیعی است. اگر رزومه خود را به همه شرکت ها ارسال کنید، به مصاحبه بروید، در ماه سوم قطعا چیزی پیدا خواهید کرد.
والنتین دومبروفسکی: می توانید پروژه های خود را قطع کنید یا پروژه های فریلنسری ساده را انجام دهید و در عین حال رزومه خود را ارسال کنید.
یک توسعه دهنده پایتون چه چشم اندازی دارد؟
زلاتا اوبوخوفسایا: یک توسعه دهنده پایتون می تواند به هر جایی برود. شما می توانید وارد آزمایش شوید و به توسعه به سمت یک معمار ارشد ادامه دهید. یا حتی در مدیریت. انواع مختلفی از مدیران فنی وجود دارد و شما می توانید به مدیریت عالی برسید. می توانید در علم داده، DevOps توسعه پیدا کنید، به آزمایش خودکار یا یادگیری ماشین بروید.
والنتین دومبروفسکی: به طور کلی، گزینه ها و فرصت های زیادی از جمله دوره های ما وجود دارد. در ورودی نیازی به دانش زیادی ندارید، اما توصیه می شود که دامنه وسیع تری را پوشش دهید، زیرا هر چه بیشتر بتوانید، برای شما بهتر است.
***
این تنها بخشی از انتشار است . نسخه کامل این قسمت موجود است .
یا حتی نگاه کنید:

ممنون که خواندید، گوش دادید یا تماشا کردید.
منبع: www.habr.com
