เราได้จัดทำบทบรรยายสั้น ๆ พร้อมแนวคิดหลักจาก Python Junior Podcast: ในนั้น เราได้พูดคุยกันว่าจะเริ่มจากตรงไหนและจะไปที่ไหนในฐานะนักพัฒนา Python มือใหม่ ช่วงนี้มีเนื้อหาสำหรับคนวัยกลางคนและผู้สูงอายุเยอะมาก แต่ตอนนี้เหมาะกับรุ่นน้องแน่นอน

หัวข้อหลัก:
- โปรแกรมเมอร์มือใหม่ต้องฝึกฝนความรู้อะไรบ้าง
การพัฒนาเว็บ? - นายจ้างคาดหวังอะไรจากนักพัฒนา?
- หางานไม่มีประสบการณ์ต้องทำอย่างไร?
- นักพัฒนา Python จะพัฒนาได้อย่างไร?
Python Junior Podcast เป็นพอดแคสต์การเขียนโปรแกรมสำหรับผู้ที่ต้องการทำความเข้าใจ Python ให้ดียิ่งขึ้น การออกอากาศดำเนินการโดยผู้เผยแพร่ชุมชน และอาจารย์ประจำหลักสูตร .
ผู้เข้าร่วมการสนทนา:
- วาเลนติน ดอมบรอฟสกี้ผู้ร่วมก่อตั้ง MoscowPython
- ซลาตา โอบุคอฟสกายา หัวหน้าทีม NVIDIA
- กริกอรี เปตรอฟ, ผู้เผยแพร่ศาสนา MoscowPython
- อเล็กเซย์ ชติร์นยาเยฟ นักพัฒนาที่ FinEx อาจารย์ของหลักสูตร Learn
หลาม
ทำไม Python ถึงดีสำหรับการพัฒนาเว็บ
วาเลนติน ดอมบรอฟสกี้: ทำไม Python จึงเหมาะสำหรับการพัฒนาเว็บ? เหตุใดจึงไม่ใช้ PHP หรือ JavaScript เป็นต้น
กริกอรี เปตรอฟ: เลยไม่มีทางเลือกมากนัก แม้ว่าในเว็บยุคใหม่ คุณสามารถสร้างแอปพลิเคชันหน้าเดียวหรือเว็บแอปพลิเคชันแบบโปรเกรสซีฟได้จริงโดยไม่ต้องมีแบ็กเอนด์ โดยใช้เทคโนโลยีส่วนหน้าเพียงอย่างเดียว โดยใช้ JavaScript แต่ก็ยังซับซ้อนเกินไป มีการจัดทำดัชนีไม่ดี และต้องใช้นักพัฒนาที่ยอดเยี่ยม
หากเราต้องการสร้างเว็บไซต์หรือบริการ เราจะใช้วิธีการผสมผสาน: แบ็กเอนด์บางส่วนใช้ตรรกะและสร้างหน้าเว็บ และส่วนหน้าบางส่วนดึงหน้าเว็บเหล่านี้ในเบราว์เซอร์ และเมื่อเราจำเป็นต้องรวมทุกอย่างเข้าด้วยกันอย่างรวดเร็ว เราก็ไม่มีทางเลือกจริงๆ
ลองดูตัวเลือกที่เป็นไปได้
- VS# Microsoft เก่งมาก พวกเขาสร้าง .NET Core และส่งเสริมมันในทุกวิถีทางที่เป็นไปได้ แต่ประการแรก นี่เป็นเทคโนโลยีข้ามแพลตฟอร์มใหม่และไม่ใช่ทุกอย่างจะราบรื่น ประการที่สอง มันมีราคาแพงมาก มีนักพัฒนา C# เพียงไม่กี่คน - เพียงเพราะมันไม่เป็นที่นิยม
- ชวา มันซับซ้อน การสร้างเว็บไซต์ปกติใน Java ไม่จำเป็นต้องใช้โค้ด 10 บรรทัดเหมือนกับใน Python นี่เป็นโค้ดจำนวนมาก เหล่านี้เป็นเฟรมเวิร์ก และคุณจำเป็นต้องทราบข้อมูลเฉพาะของการตั้งค่าเซิร์ฟเวอร์ Java โดยทั่วไปแล้วจะมีความเจ็บปวดและความทุกข์ทรมานอย่างต่อเนื่อง
- PHP ในเวอร์ชันล่าสุดมันยอดเยี่ยมมาก ฉันจะพูดแบบนี้ด้วยซ้ำ: PHP 7.2 ไม่ได้แย่ไปกว่า Python แต่คุณไม่สามารถรับและใช้ PHP 7.2 ได้ หากนักพัฒนาทั่วไปที่ไม่ใช่นักพัฒนาชั้นนำสร้างเว็บไซต์ด้วย PHP เขาจะไม่เขียนเฉพาะใน 7.2 เท่านั้น: เขาจะยังคงต้องอ่านหนังสือเรียน บทช่วยสอน มีโค้ดดั้งเดิมอยู่มากมายทุกที่ และนี่ก็ไม่ดีนัก
- JavaScript และ Node.js มันมหัศจรรย์และทันสมัยมากเมื่อมีภาษาเดียวทั้งส่วนหน้าและส่วนหลัง แค่ไม่ค่อยมั่นคง Node.js เป็นสิ่งที่ดี แต่การปรับใช้งานในการผลิตเพื่อไม่ให้เกิดข้อผิดพลาดและทำงานได้อย่างเสถียรถือเป็นปัญหา นอกจากนี้ หากเราต้องการเขียนโค้ด JavaScript ที่มีคุณภาพ เราก็ไม่จำเป็นต้องใช้ JavaScript แต่เป็น TypeScript แต่ TypeScript นั้นซับซ้อนอย่างไม่คาดคิด และสมองของนักพัฒนาโดยเฉลี่ยจะเดือดพล่านเมื่อเห็นมัน
ปล่อยให้ Ruby, Haskell, Erlang และรายการเฉพาะอื่นๆ ออกไป และเราเหลือแค่... Python ภาษาที่มีไวยากรณ์สอดคล้องกัน ไลบรารี่มาตรฐานที่สม่ำเสมอ เอกสารที่ดีที่สุด เฟรมเวิร์กน้ำหนักเบายอดนิยม และการรวม Django ที่ได้รับความนิยมอย่างมาก
ปรากฎว่าถึงแม้จะมีทางเลือกที่กว้างที่สุด หากเรามีนักพัฒนาธรรมดาๆ ไม่ใช่นักพัฒนาชั้นนำ เราก็เป็นธุรกิจธรรมดาที่ต้องการสร้างเว็บไซต์ธรรมดาๆ เราไม่มีแผนกพัฒนาสำหรับ 50 คน เราก็เลือก Python
ความรู้อะไรที่จำเป็นในการเข้าสู่อาชีพ?
ซลาตา โอบุคอฟสกายา: ฉันเชื่อว่าคุณจำเป็นต้องรู้จักเฟรมเวิร์กหนึ่งเป็นอย่างดี และรู้ว่าเฟรมเวิร์กอื่น ๆ มีอยู่อะไรบ้างและเมื่อใดจึงจะถูกนำมาใช้ ทอร์นาโดอยู่ที่ไหน Django อยู่ที่ไหน Flask อยู่ที่ไหน aiohttp และอื่นๆ
มันจะมีประโยชน์ถ้ารู้ว่ามีโปรโตคอลเช่นนี้ โดยเฉพาะอย่างยิ่งความรู้เกี่ยวกับโปรโตคอล http ถือเป็นหัวใจสำคัญของการสร้างเว็บแอปพลิเคชัน
อย่างน้อยคุณต้องเข้าใจคร่าวๆ ว่าส่วนหน้าทำงานอย่างไรในโครงการเว็บ: HTML, CSS, JS คืออะไร
อเล็กเซย์ ชติร์นยาเยฟ: และรู้ว่าเอกสารอยู่ที่ไหน นี่คือสิ่งที่สำคัญที่สุด
กริกอรี เปตรอฟ: นี่เรากำลังเหยียบพื้นสั่นคลอนมาก หากเราโชคไม่ดีและเริ่มศึกษาส่วนหน้าสมัยใหม่อย่างจริงจัง มันจะยากกว่าส่วนหลังใน Python ประมาณ 10 เท่า นักพัฒนามือใหม่จำเป็นต้องจำกัดความสนใจของเขาเพื่อที่เขาจะสามารถเริ่มเรียนรู้ HTML ได้ แต่อย่าหลงไปกับ div, spans, floats ทั้งหมดนี้ว่าทุกอย่างถูกจัดเรียงและเรียงกันอย่างไร
อเล็กเซย์ ชติร์นยาเยฟ: ต้องการหลักสูตร Bootstrap ขั้นพื้นฐาน และพื้นฐานของ HTML
ในปีแรก คุณไม่ควรเจาะลึกกรอบงาน JS (หากคุณมุ่งเน้นไปที่แบ็กเอนด์) หลักสูตร Bootstrap พื้นฐานมีโมดูลสำเร็จรูปอยู่แล้ว: หากคุณต้องการแถบเลื่อน ให้สร้างแถบเลื่อน หากคุณต้องการเมนูแบบลอย ให้สร้างเมนูแบบลอย
ซลาตา โอบุคอฟสกายา: ฉันคิดว่าในขณะที่ศึกษาส่วนหน้า คุณสามารถดื่มด่ำไปกับวิธีการมอบสถิติโดยทั่วไปให้กับแอปพลิเคชันเว็บได้ ด้วยวิธีนี้ นักพัฒนาจะเดินหน้าต่อไปอย่างราบรื่นเพื่อเริ่มเรียนรู้ว่าสถาปัตยกรรมของเว็บแอปพลิเคชันทำงานอย่างไรโดยหลักการ และทำงานอย่างไรในการผลิต
กริกอรี เปตรอฟ: ใช่ ฉันจะแนะนำทันทีในกรณีที่คุณเลือก Python เป็นภาษาสำหรับการพัฒนาแบ็กเอนด์ และอย่างเช่น Django เป็นเฟรมเวิร์ก: Django มีเอกสารประกอบใน Django Book มันเจ๋งมาก มันมีทุกอย่างที่ Zlata พูด เธอจริงๆ เหมาะสำหรับผู้เริ่มต้น
อเล็กเซย์ ชติร์นยาเยฟ: Django Girls บางคนก็เหมาะสำหรับการเริ่มต้นอย่างรวดเร็วหากเป้าหมายของคุณคือการเรียนรู้ Django นี่คือบทช่วยสอนที่ในหนึ่งวันคุณสามารถก้าวไปสู่จุดสูงสุด ทำความเข้าใจพื้นฐาน และความสามารถของเฟรมเวิร์กได้
วาเลนติน ดอมบรอฟสกี้: ในการเตรียมการบันทึกพอดแคสต์ เราได้รวบรวมรายการสิ่งที่โปรแกรมเมอร์ Python ต้องการสำหรับการพัฒนาเว็บ ซึ่งสรุปสิ่งที่เรากล่าวไว้ก่อนหน้านี้
สิ่งที่รวมอยู่ในพื้นฐานการพัฒนาเว็บใน Python
- เว็บเฟรมเวิร์ก Django, Flask, aiohttp, Tornado ฯลฯ (และรู้เกี่ยวกับการมีอยู่ของผู้อื่น)
- โปรโตคอลและ API: http, JSON-RPC, บัฟเฟอร์โปรโตคอล, gRPC เป็นหลัก
- ORM และการย้ายข้อมูล, ฐานข้อมูลเชิงสัมพันธ์, SQLAlchemy, SQL, PostgreSQL, MySQL
- พื้นฐานของ HTML, CSS, Bootstrap รวมถึงเฟรมเวิร์ก JS และ JQuery
- หลักการทำงานของแอปพลิเคชันในการผลิต การทดสอบ การทดสอบหน่วย การทดสอบอัตโนมัติ ระบบควบคุมเวอร์ชัน คอมไพล์
รุ่นน้องจำเป็นต้องมีอัลกอริธึมหรือไม่?
ซลาตา โอบุคอฟสกายา: ในตอนแรก คุณไม่จำเป็นต้องรู้อัลกอริธึม มันจะค่อยๆ ปรากฏในหัวของคุณหากคุณมีส่วนร่วมในการพัฒนานานพอ ฉันรู้จักวิศวกรดีๆ มากมายที่ไม่ได้มีหลักสูตรอัลกอริธึมอย่างเป็นทางการที่ดีนัก
กริกอรี เปตรอฟ: ฉันต้องการเติมเชื้อเพลิงลงในกองไฟ ความอยากอัลกอริทึมของเรามาจากไหน?
ขณะนี้เราไม่มีการศึกษาขั้นพื้นฐานเกี่ยวกับอัลกอริธึม เราไม่รู้วิธีการฝึกอบรมโปรแกรมเมอร์ เราไม่มีพื้นฐานทางเทคนิค
พวกเขากำลังพยายามทำเช่นนี้ แต่ที่นี่เรามีเรื่องราวของฮอกวอตส์ เราไม่สามารถสร้างโรงเรียนสำหรับพ่อมดได้ในขณะที่เราไม่มีพ่อมดเพียงคนเดียว ดังนั้นมหาวิทยาลัยควรทำอย่างไรเมื่อมาหาพวกเขาและถามว่า: "เริ่มฝึกอบรมโปรแกรมเมอร์" แต่ไม่มีโปรแกรมเมอร์เพราะทุกคนทำงานที่ Mail.ru, Rambler และ Yandex พวกเขารู้สึกดีที่นั่น
มหาวิทยาลัยมองและพูดว่า:
- เอาล่ะ การเขียนโปรแกรม เรามาค้นหาความรู้ที่เกี่ยวข้องกันและเชิญผู้เชี่ยวชาญจากที่นั่น เชิญนักข่าวที่สามารถเขียนสำเนาได้ วิศวกรไฟฟ้าที่สามารถสร้างวงจรไฟฟ้า และนักคณิตศาสตร์ที่สามารถใช้อัลกอริธึมได้
ในท้ายที่สุด ปรากฏว่าวิธีนี้ใช้ได้จริงพอๆ กับการสอนฟิสิกส์อนุภาคของผู้สร้าง เพียงเพราะอิฐและซีเมนต์ทำจากอนุภาคมูลฐาน
ในเวลาเดียวกันพวกเขาไม่ได้พูดถึงปูนซีเมนต์และอิฐเพราะนักฟิสิกส์ที่พยายามฝึกช่างก่อสร้างไม่รู้วิธีสร้างบ้าน เป็นผลให้เราได้ช่างก่อสร้างที่สามารถอธิบายวิธี "การทำงานของปูนซีเมนต์" ได้อย่างสมบูรณ์แบบ แต่ไม่เคยเห็นและไม่รู้ว่าจะสร้างอะไรจากปูนซีเมนต์ได้บ้าง
อัลกอริทึมและโครงสร้างข้อมูลนั้นดีมาก แต่นี่เป็นขอบเขตการใช้งานที่เล็กมาก สิ่งเหล่านี้มีความจำเป็นเร่งด่วน เช่น หากคุณกำลังเขียนเอ็นจิ้นเกม คอมไพเลอร์ หรือโปรโตคอลเครือข่าย
โปรแกรมเมอร์ส่วนใหญ่แก้ปัญหาทางธุรกิจโดยไม่จำเป็นต้องใช้อัลกอริธึมและโครงสร้างข้อมูล
คณิตศาสตร์ที่ยากที่สุดคือการบวกสองครั้งแล้วหาร มันต้องใช้ความรู้ที่แตกต่างอย่างสิ้นเชิง การแก้ปัญหาทางธุรกิจจำเป็นต้องประยุกต์ใช้เป็นหลักมากกว่าความรู้พื้นฐาน
จะดีกว่าสำหรับนักพัฒนามือใหม่ที่จะมีความเข้าใจในธุรกิจและวิธีการประกอบโครงสร้างที่จำเป็นจากบล็อกสำเร็จรูปอย่างถูกต้องและรวดเร็ววิธีการแก้ไขข้อบกพร่องวิธีการตรวจสอบให้แน่ใจว่าไม่แตกสลายรู้ว่าทำไมพวกเขาถึงแตกสลาย จะเกิดอะไรขึ้นเมื่อข้อกำหนดเปลี่ยนไปและโปรแกรมเริ่ม "วางรากฐาน" เหมือนบ้านหลังฝนตก
สิ่งเหล่านี้เป็นสิ่งที่ใช้งานได้จริงและเป็นความเข้าใจในการเขียนซอฟต์แวร์ เขาจำเป็นต้องรู้ว่านอกเหนือจากดีบักเกอร์แล้ว เขายังมีชุดเครื่องมือที่จะแสดงให้เห็นอย่างชัดเจนว่าโปรแกรมทำงานช้าลงตรงไหน
วาเลนติน ดอมบรอฟสกี้: ฉันนึกถึงการเปรียบเทียบนี้: นี่คือการแปลจากภาษาธุรกิจเป็นภาษาที่คุณสามารถสื่อสารกับคอมพิวเตอร์ได้ นั่นคือโปรแกรมเมอร์เป็นนักภาษาศาสตร์ประเภทหนึ่งโดยเฉพาะ
กริกอรี เปตรอฟ: ธุรกิจต้องการนักเขียน ไม่ใช่นักภาษาศาสตร์ ผู้เขียนไม่จำเป็นต้องรู้ว่าทำไมเมื่อพันปีก่อนคำนี้จึงถูกเปลี่ยนให้เป็นสิ่งนี้ เขาต้องสามารถใช้คำเหล่านี้ได้
สิ่งที่คุณต้องการในการหางานแรกของคุณในฐานะนักพัฒนา
อเล็กเซย์ ชติร์นยาเยฟ: อาจไม่มีสูตรสากลสำหรับวิธีทำอาหารรุ่นจูเนียร์
หากคุณมาที่บริษัทบางแห่ง พวกเขาจะจ้างคุณ ไม่ใช่เพราะคุณรู้จัก Django, JSON และอัลกอริธึมบางอย่าง คุณน่าจะได้รับการว่าจ้างจากทักษะที่บริษัทนี้ต้องการทั้งในปัจจุบันและปัจจุบัน
มีหลายบริษัท และทุกบริษัทก็มีข้อกำหนดที่แตกต่างกัน ไม่จำเป็นต้องได้รับความรู้ที่เป็นสากลเพื่อเตรียมเรซูเม่และหางานต่อไป
กริกอรี เปตรอฟ: ตอนที่เราที่ VoxImplant กำลังมองหาวิศวกรหลายคน ผู้อำนวยการด้านเทคนิคของเราได้กำหนดข้อกำหนดพื้นฐานดังนี้: บุคคลจะต้องสามารถแก้ไขปัญหาได้ เป็นที่ชัดเจนว่าผู้เยาว์จะไม่ทำสิ่งนี้อย่างมีประสิทธิผลเสมอไป ไม่ใช่วิธีที่ดีที่สุดและไม่ถูกต้องเสมอไป แต่ตามหลักการแล้ว คุณให้งานแก่บุคคล เขาเครียดและแก้ไขมัน นี่คือทักษะที่นายจ้างมองหาเป็นหลัก
ซลาตา โอบุคอฟสกายา: คนที่กำลังมองหางานจากสาขาอื่นมีข้อได้เปรียบในมุมมองทางธุรกิจเพราะพวกเขาได้ไปบ้างแล้วและสามารถแก้ไขปัญหาได้อย่างรวดเร็ว สิ่งเหล่านี้เป็นทักษะทางอารมณ์ ฉันเรียกมันว่าวัฒนธรรมการทำงานก็ได้ บ่อยครั้งที่ผู้สำเร็จการศึกษาระดับมหาวิทยาลัยยังไม่ได้พัฒนาวัฒนธรรมการทำงานนี้
แต่ฉันก็ยังอยากจะลองให้สูตรอาหารบางอย่างแก่ผู้เริ่มต้น
ก้าวแรกสำหรับนักพัฒนามือใหม่
ซลาตา โอบุคอฟสกายา: อย่างแรกคือนี่ยังคงเป็นโปรเจ็กต์ของคุณเอง เพราะคุณต้องเขียนอะไรบางอย่างในเรซูเม่ของคุณและแสดงพอร์ตโฟลิโอขั้นต่ำ จะดียิ่งขึ้นเมื่อโครงการเหล่านี้ไม่ได้สร้างขึ้นเพื่อตัวคุณเอง แต่เป็นโครงการอิสระ - เพื่อใครบางคน
หลังจากโครงการแรก คุณสามารถจัดทำเรซูเม่และส่งให้ทุกบริษัทที่มีตำแหน่งเดือนมิถุนายนได้แล้ว การสัมภาษณ์จะให้ข้อมูลเชิงลึกเกี่ยวกับสิ่งที่บริษัทต้องการ ไม่ช้าก็เร็วมีคนจะจ้างคุณ อย่างน้อยก็ในบริษัทเล็กๆ ต่อจากนั้นประสบการณ์การทำงานนี้จะทำให้คุณมีโอกาสได้เข้าทำงานในบริษัทที่ใหญ่และน่าสนใจยิ่งขึ้น
วาเลนติน ดอมบรอฟสกี้: อย่างไรก็ตาม ในหลักสูตรของเรา เราเตรียมนักเรียนให้มีโครงงานของตนเองภายใน 10 สัปดาห์หลังการฝึกอบรม นอกจากนี้เรายังฝึกฝนทักษะการพัฒนาทีมอีกด้วย เหล่านี้คือทักษะด้านอารมณ์ที่ซลาตาพูดถึง
อเล็กเซย์ ชติร์นยาเยฟ: ฉันสามารถบอกคุณจากประสบการณ์ว่าการหางานแรกของคุณอาจใช้เวลานานมาก เมื่อคุณกำลังมองหาหนึ่งหรือสองเดือนนั่นเป็นเรื่องปกติ หากคุณส่งเรซูเม่ของคุณไปยังทุกบริษัท ไปสัมภาษณ์ ในเดือนที่สามคุณจะพบบางสิ่งบางอย่างอย่างแน่นอน
วาเลนติน ดอมบรอฟสกี้: คุณสามารถตัดโปรเจ็กต์ของคุณเองหรือทำโปรเจ็กต์อิสระง่ายๆ และในขณะเดียวกันก็ส่งเรซูเม่ของคุณไปด้วย
นักพัฒนา Python มีโอกาสอะไรบ้าง?
ซลาตา โอบุคอฟสกายา: นักพัฒนา Python สามารถไปได้ทุกที่ คุณสามารถเข้าไปทดสอบและพัฒนาต่อไปจนถึงสถาปนิกอาวุโสได้ หรือแม้แต่การบริหารจัดการ มีผู้จัดการด้านเทคนิคหลายประเภท และคุณสามารถเติบโตเป็นผู้บริหารระดับสูงได้ คุณสามารถพัฒนาในด้านวิทยาศาสตร์ข้อมูล DevOps ไปสู่การทดสอบอัตโนมัติหรือการเรียนรู้ของเครื่อง
วาเลนติน ดอมบรอฟสกี้: โดยทั่วไปมีตัวเลือกและโอกาสมากมาย รวมถึงหลักสูตรของเราด้วย คุณไม่จำเป็นต้องมีความรู้มากนักที่ทางเข้า แต่ขอแนะนำให้ครอบคลุมช่วงที่กว้างขึ้น เพราะยิ่งคุณทำได้มากเท่าไรก็ยิ่งดีสำหรับคุณเท่านั้น
***
นี่เป็นเพียงส่วนหนึ่งของการเปิดตัว - สามารถดูเวอร์ชันเต็มของตอนได้แล้ว .
หรือแม้กระทั่งดู:

ขอบคุณสำหรับการอ่านการฟังหรือการดู
ที่มา: will.com
