我們用 Python Junior 播客的主要想法製作了一個簡短的記錄:在其中我們討論了作為初級 Python 開發人員從哪裡開始以及該往哪裡去。最近我們有很多針對中高級的內容,但這一集絕對是針對初級的。

主要議題:
- 新手程式設計師需要練習哪些知識
網路開發? - 雇主對開發商有何期望?
- 沒有經驗怎麼找工作?
- Python開發者如何進行開發?
Python Junior Podcast 是一個為想要更了解 Python 的人提供的程式播客。廣播由社區佈道者主持 和課程老師 .
對話參與者:
- 瓦倫丁·東布羅夫斯基,莫斯科Python聯合創始人
- 茲拉塔·奧布霍夫斯卡婭, NVIDIA 團隊負責人
- 格里戈里·彼得羅夫, 莫斯科Python佈道者
- 阿列克謝·什蒂爾尼亞耶夫, FinEx 開發人員、Learn 課程教師
蟒蛇
為什麼 Python 適合 Web 開發
瓦倫丁·東布羅夫斯基: 為什麼Python適合Web開發?例如,為什麼不使用 PHP 或 JavaScript 呢?
格里戈里·彼得羅夫: 所以沒有太多選擇。雖然事實上,在現代Web 中,您實際上可以在沒有後端的情況下建立單頁應用程式或漸進式Web 應用程式(純粹使用前端技術,使用JavaScript),但它仍然太複雜,索引很差,並且需要優秀的開發人員。
如果我們想要製作一個網站或服務,我們會使用組合方法:一些後端實作邏輯並建立網頁,有些前端在瀏覽器中繪製這些網頁。當我們需要快速地將所有內容整合到某件事上時,我們實際上別無選擇。
讓我們看看可能的選擇。
- C#。 微軟真的很棒,他們創造了.NET Core,並且正在以各種可能的方式推廣它。但首先,這是一項新的跨平台技術,目前還不是一切順利。其次,它確實很昂貴,C# 開發人員很少——僅僅是因為它不受歡迎。
- 爪哇。 情況很複雜。用 Java 製作一個普通的網站並不需要像 Python 一樣需要 10 行程式碼。這是很多程式碼,這些都是框架,您需要了解設定 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。
進入該行業需要哪些知識?
茲拉塔·奧布霍夫斯卡婭: 我相信您需要充分了解一種框架 - 並了解其他框架的存在以及它們的使用時間。 Tornado在哪裡,Django在哪裡,Flask在哪裡,aiohttp在哪裡等等。
了解協議這樣的東西將會很有用。特別是,http 協定的知識對於建立 Web 應用程式至關重要。
你還需要至少粗略地了解前端在Web專案中是如何運作的:什麼是HTML、CSS、JS。
阿列克謝‧什蒂爾尼亞耶夫: 並知道文件在哪裡。這是最重要的。
格里戈里·彼得羅夫: 在這裡,我們正踏上非常不穩定的土地。如果我們不幸運,並且以某種方式開始認真研究現代前端,那麼它將比 Python 中的後端複雜約 10 倍。新手開發人員需要限制他的注意力,以便他可以開始學習 HTML,但不會迷失在所有這些 div、跨度、浮動以及所有內容如何對齊和排列中。
阿列克謝‧什蒂爾尼亞耶夫: 需要基本的 Bootstrap 課程。以及 HTML 的基礎知識。
第一年,你不應該深入研究 JS 框架(如果你專注於後端)。基礎Bootstrap課程已經有現成的模組:如果你想要一個滑桿,就製作一個滑桿;如果你想要一個浮動選單,就製作一個浮動選單。
茲拉塔·奧布霍夫斯卡婭: 我認為在研究前端時,你可以讓自己沉浸其中,特別是了解靜態通常如何賦予 Web 應用程式。透過這種方式,開發人員可以順利地開始學習 Web 應用程式的架構原則上如何運作以及它們如何在生產環境中運作。
格里戈里·彼得羅夫: 是的,如果你選擇Python 作為後端開發語言,並且選擇Django 作為框架,我會立即推薦它:Django 在Django Book 中有文檔,這真的很酷,它包含了Zlata 所說的所有內容,她真的適合初學者。
阿列克謝‧什蒂爾尼亞耶夫: 如果您的目標是學習 Django,一些 Django Girls 也適合快速入門。這是一個教程,您可以在一天內全面了解基礎知識以及框架的功能。
瓦倫丁·東布羅夫斯基: 為了準備錄製播客,我們整理了一份 Python 程式設計師進行 Web 開發所需的清單,其中總結了我們之前所說的內容。
Python Web 開發基礎包含哪些內容
- Web 框架 Django、Flask、aiohttp、Tornado 等(並了解其他框架的存在)。
- 協定和 API:主要是 http、JSON-RPC、Protocol Buffers、gRPC。
- ORM 與遷移、關聯式資料庫、SQLAlchemy、SQL、PostgreSQL、MySQL。
- HTML、CSS、Bootstrap 以及 JS 框架和 JQuery 基礎知識。
- 生產、測試、單元測試、自動測試、版本控制系統、git 中的應用程式操作原理。
初級需要演算法嗎?
茲拉塔·奧布霍夫斯卡婭: 一開始你不需要了解演算法,只要你從事開發時間夠長,它們就會逐漸出現在你的腦海中。我認識很多優秀的工程師,他們沒有上好的正式演算法課程。
格里戈里·彼得羅夫: 我想火上澆油。我們對演算法的渴望從何而來?
我們目前沒有演算法的基礎教育,我們不知道如何培養程式設計師,我們沒有技術基礎。
他們正在嘗試這樣做,但我們這裡有霍格華茲的故事:如果我們沒有一個巫師,我們就無法為巫師創建一所學校。因此,當大學來找他們並詢問:「開始培訓程式設計師」時,他們應該怎麼做,但他們沒有程式設計師,因為每個人都在 Mail.ru、Rambler 和 Yandex 工作,他們在那裡感覺很好?
大學看了並說:
- 好的,程式設計。讓我們找到一些相關的知識領域並邀請那裡的專家。讓我們邀請會寫文案的記者、會製作電路的電氣工程師、會使用演算法的數學家。
最後,事實證明,這就像教授建築粒子物理學一樣實用,因為磚和水泥是由基本粒子製成的。
同時,他們本身也不談論水泥和磚塊,因為試圖訓練建築工人的物理學家不知道如何建造房屋。結果,我們得到了一位能夠完美描述「水泥如何運作」的建築商,但從未見過它,也不知道如何用它製造任何東西。
演算法和資料結構都很好,但是這是一個很小的應用領域。例如,如果您正在編寫遊戲引擎、編譯器或網路協議,那麼它們是迫切需要的。
大多數程式設計師解決不需要演算法和資料結構的業務問題。
最難的數學是兩次加法然後除法。它需要完全不同的知識。解決業務問題主要需要應用知識而不是基礎知識。
對於新手開發人員來說,更好地了解業務以及如何正確快速地從現成的區塊中組裝必要的結構,如何調試它們,如何確保它們不會崩潰,知道它們為什麼崩潰,當需求發生變化並且程序像雨後的房子一樣開始「紮根」時會發生什麼事。
這些都是實用的東西,也是對如何寫軟體的理解。他需要知道除了調試器之外,他還有一組工具可以準確顯示程式速度變慢的位置。
瓦倫丁·東布羅夫斯基: 我想到了這樣的比較:這是從商業語言到可以與電腦溝通的語言的翻譯。也就是說,程式設計師是一種特定的語言學家。
格里戈里·彼得羅夫: 商業需要作家,而不是語言學家。作者不需要知道為什麼一千年前這個詞會變成這樣。他需要能夠應用這些字。
作為開發人員找到第一份工作需要什麼
阿列克謝‧什蒂爾尼亞耶夫: 對於如何烹飪青少年,可能沒有通用的食譜。
如果你來到某家公司,他們會僱用你,不是因為你了解 Django、JSON 和一些演算法。您很可能會因該公司此時此刻所需的技能而被聘用。
公司有很多,而且都有不同的要求。為了進一步準備履歷和找工作,並不需要獲得如此普遍的知識。
格里戈里·彼得羅夫: 當我們VoxImplant尋找幾位工程師時,我們的技術總監就制定了這樣的基本要求:一個人必須能夠解決問題。很明顯,初級人員並不總是能有效地做到這一點,不是以最好的方式,也不總是正確的,但理想情況下,你給一個人一個任務,他會努力並解決它。這是雇主主要在尋找的技能。
茲拉塔·奧布霍夫斯卡婭: 從商業角度來看,從其他領域尋找工作的人有一些優勢,因為他們已經走了一些路,能夠快速解決問題。這些都是軟技能,我甚至將其稱為工作文化。通常,大學畢業生還沒有形成這種工作文化。
但我仍然想嘗試為初學者提供一些食譜。
新手開發人員的第一步
茲拉塔·奧布霍夫斯卡婭: 首先,這仍然是你自己的某種項目,因為你需要在履歷中寫一些東西並展示一個最小的作品集。如果這些項目不是為您自己製作,而是作為自由項目為某人製作,那就更酷了。
第一個專案完成後,您就可以製作一份履歷並將其發送給所有有六月職位的公司。訪談將讓您深入了解公司的需求。遲早會有人僱用你,至少在小公司是這樣。隨後,這段工作經驗會讓你有機會進入一家更大、更有趣的公司。
瓦倫丁·東布羅夫斯基: 順便說一句,在我們的課程中,我們讓學生在培訓後 10 週內完成自己的專案。此外,我們也培訓團隊發展技能。這些正是 Zlata 所說的軟技能。
阿列克謝‧什蒂爾尼亞耶夫: 我可以根據經驗告訴你,尋找第一份工作可能需要很長時間。當你尋找一兩個月時,這是正常的。如果你把履歷投給所有公司,去面試,第三個月你一定會有所收穫。
瓦倫丁·東布羅夫斯基: 您可以削減自己的項目或承擔簡單的自由項目,同時發送您的履歷。
Python 開發人員有什麼前景?
茲拉塔·奧布霍夫斯卡婭: Python 開發人員可以去任何地方。你可以進入測試並繼續發展為高級架構師。甚至進入管理領域。技術經理有不同類型,你可以成長為高階主管。您可以從事資料科學、DevOps 領域的開發、自動化測試或機器學習。
瓦倫丁·東布羅夫斯基: 總的來說,有很多選擇和機會,包括我們的課程。入門時你不需要太多知識,但建議涵蓋更廣泛的範圍,因為你能涵蓋的越多,對你就越好。
***
這只是發布的一部分 。該集的完整版本現已推出 .
或甚至看看:

感謝您的閱讀、聆聽或觀看。
來源: www.habr.com
