直播回顧 | Python web開發破局之道(內附PPT、錄播視訊、提問環節文字梳理)

An楠發表於2019-08-29

? 相關課程推薦:

《Django企業開發實戰》——視訊版

  • 原價399,現價359立省40元
  • 專屬學習福利:獨家首發Django知識腦圖資料
  • 超長課時:2499分鐘
  • 永久回看:2年有效期
  • 獨創的產品服務體系:不打擾,不建群,學分制,學習專區互學互助。

立即試聽:http://m.ituring.com.cn/traningplan/1

? PPT下載☟

下載地址:https://shimo.im/docs/XwjWpTPcKcck3xVR

✍加入python web開發者交流群

enter image description here

❔ 提問環節:

Richard:問

現狀: 當下人工智慧落地困難,我司也是,業務上對python和web要求不高,不停的處理瑣碎的事情讓個人成長變得緩慢。

問題:

  1. 相比傳統的java-web開發和新興起go服務端開發,python-web未來在哪?
  2. 除python技能外, 技術生涯還應規劃和實踐那些?

答: 人工智慧的這個事情其實我沒有做過,從python web開發上來說,首先需要定義的是,什麼是瑣碎的事情?

比如說,你開發一個新聞的網站,他有前臺和後臺,前臺是純介面的方式,後臺是後端渲染的模式,一開始你會覺得寫太久後臺了,想去寫前臺,剛開始寫前臺,你會覺得很新鮮,這種模式跟之前做的不一樣,但時間長了,你會發現這東西也是很瑣碎的,每天都在重複做類似的需求,你可能做不到一年,你就會變得特別煩這事。

很多人都會遇到類似問題,這個時候其實我的建議是什麼?往上看或者往下看。

往上看是指?誰把這些瑣碎的事情給你,看他為什麼要給你這些瑣碎的事,這個事情能不能換另外一種做法去做。你要去跟他溝通,要了解他的目的是什麼?如果你從源頭上把這些事情給hold住,OK,這些瑣碎的事情,慢慢的你就可以不做了,可以交給其他人來做,比如說交給一個實習生。

並不是說實習生就應該去做瑣碎的事情,而是說這些事情可能和他在學校做的實驗室專案是有區別,他也會覺得特別新鮮,會認為很有挑戰,這其實是個雙贏的結果。

往下看是指?它算是基礎,就是你始終在做同樣一個東西,你是不是能把這個東西抽象出來?我拿Django來講,一幫人在做一個新聞網站,要求有個後臺,編輯老師提出十幾個功能需求,然後你把它抽出來,搞一個框架就好了。你把東西抽出來,選一個你更擅長的工具,讓他來幫你更自動化的解決這些問題。

Python和GO的興起,Python的未來在哪?

這個問題其實我們當時線上下討論過,對於Django或Python來講,想要快速上線一個東西,很顯然Python是有競爭力的。這個東西可以支撐你到一定級別,當你達到足夠量級,且有了足夠的錢,你會發現語言已經不能夠支撐你的業務量了。但大部分產品是不存在的,只要花錢就好了。這個時候你會考慮換技術棧,當然換技術棧成本是很高的。所以,Python對於快速開發來說,還是比較有效。

要了解你的技術擅長點,無論你用GO還是Python,比如對Python來說你要的是足夠快的開發效率,尤其是發展型公司會讓你的節奏變得更快,生產迭代速度也會變快,正常當你的效能不是瓶頸的時候,其實它是一個非常合適的技術棧。

python技能之外的技術聲音還要實現哪些?其實對於Python來說,它只是一個點,你把python瞭解足夠細之後,這變成一條線了,但它還不是一個面。

對於Python來說,我自己經常問到的一個問題:我們把一個請求從一個使用者端發起到服務端,它所經歷的所有的鏈路,描述一下這鏈路上所經歷的所有的系統元件,除了Python之外的元件,其實你都應該去了解,因為這個決定了你是否能夠知道使用者的流量是怎麼達到你的伺服器上,以及你的開發機的程式碼怎麼部署到生產伺服器上的。這其實是python之外,你需要掌握的。

另外就是但這個是技術層面的規劃,一開始你的規劃應該是著重在你把這個技術能夠了解的足夠詳細。但關鍵點在於你要了解當下的核心點,比如當前你想了解Python的入門,你就跑去看Linux,去看其他的,這顯然不划算,因為畢竟你面試公司或目前公司讓你用的還是Python。所以這個時候其實python為主,其他的為輔就好了。然後其他的就是我剛才說的,你除了技術之外,你要更關注一下整個團隊整個公司的業務方向。

大廖:問

  • 前後端分離對python web 開發有什麼樣的影響?

答: 其實沒有影響。這個問題很奇怪,就是很多人會問,現在大家已經都在做前後端分離了,你還在用渲染頁面來做,這個是不是太low了點?

大家一定要意識到一件事情,就是本質上對前端來說,我說的前後端分離,其實它只是前端跑在瀏覽器裡面,然後後端通過介面吐出去,對吧?本質上,瀏覽器接收到的是你吐出的資料,你吐的是JS還是html,其實都一樣的。對於後端來說,你需要把這個東西渲染成或序列化成對應的格式,給返回回去。

只是你有一個系統,這個系統吐出來是JS還是吐出來是html,僅此而已。只是說唯一的不同就是可能需要你去維護。如果是後端渲染的話,可能需要你去維護模板,當然,這些東西的維護也不一定是要在後端來維護的。比如,你可以去把這些東西放到資料庫裡,通過另外的方式去把他載入過來,其實都是OK的,所以說沒什麼大的影響。對於你學習Python web開發來說是一樣的,但還是建議大家能夠有基礎的前端能力,你每天都在上網,如果兩個網頁是怎麼構成的都不知道,也說不過去。

五天幾年:問

  • 我想問問,現在網際網路場景下,使用者需要更精準的訪問到自己喜歡的資訊,平臺才能受益,那麼,做一個入門級的推薦系統,需要哪些知識?

答: 關於精準的系統推薦,我不專業,推薦你去看項亮老師的《推薦系統實踐》,據說這本書很好。

小小柒:問

  • 對於一個用django開發的基本雛形網站,如何達到相對穩健,處理高併發等類似問題?

答: 首先你得有高併發,開個玩笑。

就是你要清楚瞭解到,哪怕你的網站每天PV只是1,你也要去關注這個人訪問頁面的響應時間是多少?我們在做訪問優化的時候,或者在處理高併發的時候,最關鍵的問題在於我們要去把每個節點它的響應時間變得足夠的短。比如,使用者訪問到你這個頁面的時候,它通過瀏覽器的Network請求看到返回的響應時間是2s。對,顯示時間有點慢,那麼這2秒是怎麼產生的,你必須要知道。比如,請求發到後端,後端再訪問到NGX的耗時是多少?你要能看,並且你要知道怎麼看。

然後,之後你要知道你的函式,比如拿Django來說,配置好url,配置好對應的View,這個View裡面可能做了比如三次的通過Model查詢資料庫。View的響應時間是多少?從這個請求通過你的url,dispatch就是就分發到你的View這個函式裡面之後,一共耗費了多少時間?每一次你的model的操作,它耗費的時間是多少?你要把這個東西全部都瞭解到,你才知道這東西在哪。但前提是你也要了解,比如,對於Mysql,一條SQL查詢的響應時間在多少是合理的。比如說這個SQL的響應時間超過了10毫秒超過20毫秒,它是不是正常的?比如,Redis的響應時間超過了5毫秒,是不是正常的?就是你要清楚的瞭解你每一個點它所需要消耗的時間,這個時間積累起來就是你所要的這種高併發。

愛騎行的汪:問

  • 你好,胡陽老師。最近在看你的那本書,書裡面最後部署的環節我卡在那裡面了感覺你講的很淺,程式碼那塊有點看不懂。請問,你可以針對於那部分學習吸收有什麼好的建議?

答: 關於這個問題,我建議去在群裡聊,我有qq群,其實很多人會遇到類似的問題。這個看不懂,就是第一個點就是你可以在群裡交流,或者直接問我,第二個點就是你去把相關的東西全部死磕下來,比如,Fabric去部署,你不知道他怎麼部署,或者你不知道fabric怎麼用,那你去看下fabric怎麼用。

然後,比如Linux配置,你不知道,那你去看下Linux配置,你要知道我們現在用的這套流程裡面涉及到的知識點或技術點有哪些,之後這些知識會幫助你把事情做好。我建議就是你去死磕這些點,對於你去學習一個新的東西的時候,是很關鍵的。然後,整體的話,就會有一個比較好的狀態,就是說白了其實還是對這個東西比較陌生。

其實,對於問題5還可以具體問題具體溝通,我覺得現在看書的一個好處,相較以前,你遇到一塊特別的晦澀難懂的,你發現你聯絡不到作者,你也沒有一個群去溝通這些東西。但現在是個挺好的時代,你可以很快速地跟各種人建立連線,可以快速的交流,包括我們今天的分享,其實也是一樣。

Wang可可????:問

現狀: 人工智慧的大火,導致很大一部分人把它當成了一個新興的領域,其實不是;當前談到人工智慧側重於AlphaGo自動駕駛等運用的深度學習。

提問:

  1. 老師您認為人工智慧目前的發展中,難以突破的難點是什麼?
  2. 各行業應該如何運用AI技術?這類技術又如何改變生產力?
  3. Py-web相對於其他技術的實用性與發展?

答: 問題6,這個有點深了。因為我不是這個行業的從業者,我也很難去判斷。所以單純對於python web開發來說,無論是什麼樣的行業,什麼樣的先進的技術,你都需要有一套系統來管理這些資料。本質上來說,程式設計師在做的事情是什麼呢?我們不生產資料,我們只是資料的搬運工,我們做的事情就是去搬運資料,去管理資料。

比如,我們做一個後臺,是為了幫助運營或者編輯,幫助他們去管理這些內容。這些內容是資料,但是這些資料不歸我們管,是他們通過我們的系統產生的資料。那麼,我們不產資料,我們只是在管理這些資料,對吧?比如,新聞網站,運營和編輯產生了內容之後,使用者去消費了,我們只是通過我們構建網站的這套系統,去把對應的資料呈現給使用者。ok,那使用者可以看到了。所以一樣的,其實無論在哪個行業,無論多麼熱門的領域,他最終一定需要一個東西,或者需要一個系統去把這些資料給展示出來,或者去控制它,要做的事情。

胡大大:問

  • python web 開發的前景怎麼樣?能和java的ssm抗衡嗎?

答: 我簡單瞭解,現在的話,Java的那套東西已經挺輕了,語言層次及語言的這種特點,也決定了它的開發效率,所以,相較Java其實在python web開發上還是有優勢的。只不過,我們要從整體的市場環境上來說,java的崗位顯然是更多的,因為他用的多,然後整個市場環境會會比較發達,市場環境發達是指學習的人多,然後做這種叫培訓的人多。然後用Java人多,然後產生了這樣一個迴圈。

所以其實抗衡的話,這個東西倒談不上,只是說他有他自己的這種適應的場景和適應的這種空間。

公眾號後臺留言:問

  • 什麼水平可以去應聘實習生,或者說應屆生達到什麼水平可以去找工作?

答: 事實上,我們在面試的時候,如果真的很缺人,我們更多的考慮的點,這個人能不能幹活,如果不能幹活,那聊其他的沒有用,對吧? 所以能幹活,這是底線。

什麼情況下是能幹活?你自己去假想一個場景,比如,你現在就要去寫一個部落格系統,有什麼樣的需求?你能不能在半個月之內,把這個部落格寫完,並且部署到線上,這是個很實際的問題。如果你能把這東西確實這麼搞出來了,那是你具備了能幹活的能力。

第二點考察就是學習能力怎麼樣?

我們會問,你用這個語言多久了?比如,之前我面試用python特別久的人,他可能用的python的時間比我還要久。假設他用了5年,但在聊的時候發現這個人對Python的掌握也就幼兒園的水平,問深的東西就完全不知道了。這種場景下你可以判斷它在Python上或者在語言上的學習能力,當然也可能跟他沒有投入時間有關係,但他既然還是要找Python的崗,掌握成這個樣子,顯然是因為他學習能力不夠。沒有學,其實也是學習能力的一種。

還有另外的點的話,說點實際的,對工作幾年的人來說,我們會考察他的整體的系統設計能力,會考察他的專案經驗,會考察他對業務的描述。對這一點是很重要的,你是不是能夠特別清楚的描述你的之前做過專案,它的業務是什麼?如果你不能把這個業務描述的很清楚,我很難相信你寫的程式碼能夠完全匹配他的業務場景,對吧? 這是很重要一點。

對於應屆生,因為畢竟沒有工作經驗,考得最多的點就是知識層面的東西,第一部分知識,第二部分經驗。比如,對於python知識點的掌握或者瞭解,對於MySQL對與Redis,然後對於計算機的程式設計的理解,對於linux作業系統的一些理解,對於資料結構和演算法的理解,這個東西對應屆生來說是必須得是必備的。

如果你參加過一次或幾次校招的話,你其實會知道,就這東西基本上都在校招的筆試題裡面已經呈現了。

Desmond:問

  • Python和java的微服務怎麼結合,有什麼最佳實踐?

答: 其實對於我們現在場景來說,基本上都是微服務的方式,就是通過RPC來呼叫,其實沒有什麼最佳實踐,在這種異構的系統裡,兩個不一樣的語言之間,通過介面來打交道,這是一個很實際的場景。

東都大白兔:問

  • 請問老師對於計算機專業大學生關於就業的技能學習和學習路程,有沒有什麼建議?

答: 其實剛才回答實習生找工作的時候,已經簡單聊過了。首先,你確定的方向是什麼?方向其實沒有太大的差別,比如,我做Python有前途還是做Java有前途?你可以去招聘網站去看,現在的崗位哪個多,對應的崗位的工資是什麼?你去搜,比如,Java工程師,Java初級工程師,Java高階工程師,同樣的你去搜Python或其他任何語言,看他們要求看他們的待遇是什麼樣子的。這種情況下,你確定你的方向之後,剛才說的基礎的東西是一樣的。

然後就是,比如,關於語掌握的熟練程度,然後關於框架的掌握程度,關於整個web系統的熟悉程度,這是上層東西,這個東西就是跟語言有一定關係了,所以你的路程裡面其實就包含了這東西從底層到上面的東西。但最終你要知道你的目標是啥,你的目標其實取決了你的方向,方向定好了效率會比較高。

最怕的就是很多人反覆在糾結,他寫了一年Java之後,然後就去做其他的了。當然,我也是這個例子,但這個前提在於你能不能有一個更有效率的提升。當你找到感興趣這個點之後,很多時候因為你大學裡面學的是Java,所以你去找了個Java的工作,這種情況下,其實有一定被動的成分在裡面。當你去主動的選擇了一個語言之後,其實你要至少在前幾年,你要把這個體系構建的足夠好。

對,其實這就是我建議。

補充問題:問

什麼是初級工程師?什麼是高階工程師?什麼中級工程師?這個是很多人在困惑的一個問題,就是包括我之前在招聘的時候,我說我們招聘中高階工程師,有人就會問什麼是中高階工程師?這個是這是很難界定的,它沒有標準。

答: 但對我來說,我可以分享一些我個人的觀點,就是初級工程師是什麼?就是你能幹活了,並且乾的還不錯。我可以把這活交給你,你來做。

中級工程師是什麼?你把這個事情你可以做的足夠好,一定程度上也能影響其他人。比如,無論是你去幫其他人去解決技術問題,還是說去帶著一個人來做你現在做的專案,這個時候你就會有一種進階的狀態了。

然後,高階工程師在團隊中什麼樣呢?大家有問題都會去找他,這是一個特別明顯的一個狀況。有問題你就去找他,找他之後就能解決,這就是高階工程師存在意義。更重要的是,高階工程師他關注的不再是一個具體的功能點或一個具體的系統,它關注的更多的是整個系統的構建。然後它能解決整套技術棧上遇到的任何的問題,且對技術棧足夠熟悉,另外,他也能夠去幫助底層的人去成長,因為他會知道怎麼把初級工程師給帶起來。其實這是初中高階的一個簡單的區分。

或者我們更粗暴一點,一個初級工程師,你很放心的去讓他做一個新的功能點,但是你要他獨自去做一個大專案的話是不放心。中級工程師你可以把一個專案交給他做,他可以完成的比較好。當你想讓他負責更更大的業務的時候,你會考慮一下要不要給高階工程師,其實就是你可以很放心的把這個專案交給他,或者把多個專案交給他,他可以幫你搞得特別好。對吧?基本上高階工程師都會去帶團隊。

kant:問 1. 感覺技術進步變慢了,正準備從創業公司跳到大公司,有什麼經驗可以分享嗎? 2. 第二個問題:Python後端怎麼進知乎?(回答待補充)

答: 經驗就寫在我的部落格裡,其實就是Python程式設計師求職找工作之旅可以看一下。其實就是要把自己的事業提上去,知道這些公司都在用什麼東西,然後去把這東西死磕一下,然後使勁的把基礎夯實一下。

zidy:問

  • django怎麼配置資料庫讀寫分離

settings database 裡可以配置多個資料庫,然後自定義 router 就好了:https://docs.djangoproject.com/en/2.2/topics/db/multi-db/#topics-db-multi-db-routing

OK,今天的分享我們就到這,感謝大家能夠花時間來聽我的分享,尤其這種語音的分享。其實在群裡我們還是可以多交流,個人的觀點只是僅供參考。因為很多不同的經歷決定了你對現在事物的看法是不一樣的,所以大家可以在參考我的一些觀點的時候,去參考其他的一些人的分享,這種的好處就是讓你看到的事務會更加的具體,更全面。其實這也是我們說,你看技術的時候,除了看這個技術點之外,你要還做橫向對比,對吧?比如說你用Python,你為什麼要用?為什麼不用go?為什麼不用Java?當你對判斷了解足夠多之後,你要去這麼想一下,OK,我們今天就到這裡,還是感謝大家!

相關文章