語言只是工具,光懂Python是找不到工作更別說接單。我在知乎上看到知乎推給我的問題,我這裏做一一梳理和總結
- 例如:問題:「零基礎學習Python轉行,想解決就業問題。」這類問題的題主多數沒有弄清自己的專長以及不了解國內IT行業內當前對Python這門語言的定位。
- 例如:問題「零基礎零經驗自學Python,到精通Python要多久啊?」這個問題屬於典型的為了語言而學語言。
我首先給出結論: 如果光學會Python,其實是無法找到開發崗位工作的 。之所以這麽說,是因為編程愛好者真正想轉行做開發還是憑自己掌握編程技能實作小目標創業。判斷他是否適合從事開發崗位,不光衡量編程者本身熟練掌握一門程式語言或者只會「CRUD」, 更重要的是編程者自身要對作業系統原理、程式語言本身背後的套用生態、演算法和數據結構這些都要比較深入的了解 ,這樣不至於被行業淘汰。
Python非開發崗位
數據分析
一些非開發崗位例如資料探勘和分析、初級運維崗位是有可能的。
如果你的就業方向是選擇Python相關的數據分析的崗位,筆者建議你了解一下知乎知學堂的數據分析實戰教程,符合打算從事數據分析崗位的人群,筆者跟其他平台的數據分析課程對比過,該課程適合面對零基礎 、初級 、 中級的學習群體,能幫助學習者建立自己的數據分析思維和方法論打下堅實的基礎。
該課程的特點是講解常用模型+架構邏輯,透過互聯網大廠的一線案例說明各種分析方法的運用,幫助學習者構建數據分析思維,帶大家快速掌握常用的數據分析工具。課程共3天6小時、一線大廠的數據分析行業的名師為學員提供一對一的問題答疑、就業等問題輔導。
因為筆者就是從運維崗位過來的,現在也是從事開發的工作但筆者不僅只用Python一門語言而是C、C++、Cython這些程式語言混合著用。
話說回來學會Python的衡量的標準是什麽?看一兩本書Python入門書籍還是瞟完一整套Python系列影片教程就能找工作?!所以還是應驗了那句話:「 師父領進門,修身靠個人 」之前有位陌生的乎友給我私信留言。我就很直白地回復了他(她)。
如果以就業目的為方向,不論學習Python還是其他語言,千萬不要為了學程式語言而學語言。而是 根據你的未來的就業方向選擇學語言。而不是根據語言去學習。這樣目標、學習路線會清晰很多。千萬不能本末倒置 。
先搞清學習語言最終目的是什麽,如果是基於興趣,你那麽下面的內容可以直接不用看 。 相信其他學習知乎其他Python答主已經給出很好的學習路線,我自己關註幾個Python答主他們的文章都很優秀,可以翻我關註的知乎好友看看。 我重點是談Python就業方向的問題,以及Python和其他語言存在競爭和共存的關系。
先談談Python就業方向的問題。掌握中級Python水平的可以選擇的職業方向的門檻很低, 但有些門檻高得大部份人是無法觸碰的。
其他職業方向
門檻低的Python或多或少相關的職業:例如初級運維工程師、數據分析、跨金融領域的量化交易會用到Python、一些網絡安全崗位也會用到Python,比如「Cisco的初級CCNA工程師」就要求具備Python編程能力。這些崗位的特性,都不要求學習者深入理解系統原理,因此不要求用到C,Python相關低門檻的IT崗位,更多要求從業者誇專業和橫行性多重技能。另外,Python非常適合副業例如用Python以私單的形式接一下小型專案是非常不錯的選擇。給自己打個廣告:「 筆者在Java、Python的私活也會接,如果有二次開發專案、中小型專案需求的,可以給筆者私信 」。
對於大型的Web全棧開發,市場需求的語言是Java/Go,大型Web後端的商用環境幾乎不會考慮用Python。因為原生CPython本身執行效率面對多使用者並行和後台繁重的密集型計算原生CPython是應付不了的。用Python做全棧大部份是小規模的科技公司或制造業類別的企業,因為開發出來的受眾面不會太大,業務系統的效能問題不是考察的重點,而是開發效率。
後端開發崗位、演算法開發崗位、Linux開發崗位實質上 用到的是C/C++、甚至Python和C的混編技術、高級運維開發工程師會用到Python、Go、Shell、甚至是C。 因此即便學會Python,光懂Python也找不到這些崗位工作,這本質上已經不是Python語言的問題,而是這些崗位要求從業者最起碼有3年以上相關工作經驗,對數據庫、系統操作原理和開發用到什麽工具要有一個系統性的知識背景。
高門檻的Python崗位:人工智能雖然用到是Python語言,但 本質已經和Python語言關系不大、更為重要的是那些領域要求從業者電腦碩士以上學歷,以及深厚的數學、演算法功底做加持 。大部份非科班或者條件達不到的連門檻都夠不著。如果你日後打算從事AI領域的崗位,並這些是都是硬性條件:
所以非科班的或者零基礎轉行聽信培訓宣傳之類能從事這部份領域工作的話,可以洗洗睡。
但不是說沒有靠譜的Python課程,但答主仍然強調, 光學會「Python」是找不到的工作的。Python只是一個工具,重點是與該崗位相關的其他職業技能 。例如量化交易,就需要從業者有金融知識和操盤實戰的經驗。
如果後面選擇學習Python培訓機構的課程,自己要擦亮眼睛,一些跟Python沾邊的培訓課程:「Linux雲端運算、資料探勘和分析、量化交易、自動化運維」也有靠譜的培訓課程,結合自己的專長可選擇相關課程。
Python效能問題
上面Python相關職業的問題,如果打算深入學習Python,到了中期基本上就要面對Python效能瓶頸的問題。所以Python到達一定水平,一定要嚴格區分不同的Python實作,大部份人說的Python其實就是CPython,而深入學習Python的話,一定要掌握PyPy、Numba、Cython這些第三方Python技術。因為Python套用規模到達一定程度,會不得不面對一個問題就是效能會急劇下降,因為官方的CPython內核的執行效率其實是非常低的,此時你可以考慮學習C來很大程度上改善CPython執行效率。此時有紮實的C基礎的話,可以進一步學習Cython這門語言。將Python程式中嚴重拖慢程式效能的Python程式碼遷移到Cython中,並且編譯成Cython擴充套件,讓CPython前端去呼叫。
如果你後面學習十分在意Python的效能問題的話,那麽Cython是一門必修的語言之一,而學習Cython就客觀你要懂C語言,並且一定程度理解CPython內核原理(至少要熟悉常用的Python/C介面的呼叫)。這裏多說一句,你初期學習到常用Python第三方擴充套件庫,例如openxml、爬蟲核心的lxml其實都是Cython語言實作的。
Cython、Numba、PyPy、甚至最近傳聞在日後新版本CPython整合的Pyjion JIT編譯器,他們背後的 邏輯最佳化Python程式碼的邏輯是將CPU密集型的Python程式碼而CPython力不從心的,直接讓Cython編譯直接降級為機器碼執行,繞過Python內部繁瑣的類別檢測、堆記憶體分配、虛擬機器內部低效棧操作 。
但仍然 強調的是這些不是CPython實作原生的技術,CPython能從Cython、Numba、PyJion這些第三方編譯工具得到效能上的提升,CPython其實在自身效能問題上仍然是不思進取的,那麽PyPy的出現其實就是要取代CPython 的。
解決CPython前端效能瓶頸的問題的,可以考慮用上Numba、PyPy這些高效能的JIT編譯器。而答主實際上在Python編程中最好的組合就是前端PyPy JIT+ 後端Cython擴充套件的呼叫。
當你Python到達一定基礎,有興趣可以關註我「鐵甲萬能狗」主頁下這個【Cython/PyPy編程技術】,不玩套路,專題裏面每篇文章是答主過去的學習心得和經驗總結。