選單

Python自學很難找到工作?YES and NO

作者:麥2叔

一場圓桌會

週日晚上9點,我正在看蘇炳添的百米決賽,Kevin給我發來訊息:

叔, 來參加嗎?

Kelvin組織了比較熟悉的一群小夥伴直播討論學習程式設計的問題。今天是

「人於八」

分享Django的學習

我加入的時候他們正在討論:

「什麼是MVC」

(Model,View,Controller)。大家七嘴八舌,說的不亦樂乎。

到了最後,人於八說:

不過招聘網站上Django的崗位真的很少,不好找工作!

大家有點沉默了:講了一晚上,講了個寂寞。

進而,又談到了Python是不是很難找工作。學到什麼程度才可以找工作。

最後大家請我講一講,下面是我的核心觀點,希望對大家有好處。

Python不難找工作

在我前面的一篇討論Python,Java和Go的程式語言中,我曾經展示過:

Python的專業開發崗位數量上大概是Java的60%,是Go的4倍左右。

Python自學很難找到工作?YES and NO

從這個意義上說Python的開發崗位是不少的,如果你Python學的還比較紮實,並不難找工作。

問題來了:怎麼算學的紮實呢?要掌握哪些內容呢?

只會Python不好找工作,換成其他程式語言也一樣

那為什麼很多自學的人,非科班出身的人,自我感覺學的也不錯,在找工作的時候還是很容易碰壁呢?

因為程式設計不僅僅是一門程式語言的事情,而是需要綜合運用很多知識。所以只會Python還不夠成為一個專業的開發者。這個結論換成Java,換成Go,換成C++也一樣成立。

開發和執行一個商業的系統,除了基本的程式設計知識外,還需要:

最上面是網頁和HTML的基礎知識。不管你是後端開發和全棧開發,這都需要會一些的。如果你的定位是後端,前端不需要精通,會核心的內容就可以。

HTTP協議,TCP協議等網路知識。任何一個合格的Web後端開發必須對HTTP協議有一定深度的瞭解。

你的網站或者API程式會最終肯定會發布到Web伺服器的後面。你瞭解Nginx或者其他Web伺服器嗎?

Linux作業系統總要會一點吧?大部分的程式會發布在Linux平臺上。

軟體總要儲存資料,所以資料庫知識肯定離不開。

Python自學很難找到工作?YES and NO

對於非科班出身的人,相對來說右邊的這些知識會相對比較缺乏。當然我們在學習Python的過程中也會或多或少的涉及到這些知識,只要注意積累,有意識的去補充,也沒有那麼難。

在校生好好學習很有必要

仔細看一下上面圖中左邊的這些知識,正好對應計算機專業大學裡的幾門課程:

資料庫工程:其中包括資料庫的原理,SQL語言,MySQL等。資料庫和SQL分不清楚,Microsoft SQL和SQL Server分不清楚的直接就暴露了這方面知識極其欠缺。

網路工程:學校裡學的網路還是很重要的。但講的太全面,缺乏重點。比如HTTP協議可能是一帶而過的,但在這工作中很重要。這就需要自己再加強。

作業系統:作業系統是學校裡非常重要的課程。也是理論講的偏多,實踐缺少。這也要自己加強實踐。但這些理論也很重要。

資料結構:資料結構自然也是非常重要的科目。

在上大學的時候也許或覺得這些科目很無聊,但他們很重要,是區分專業和非專業的重要方面。對你能否更深入的走下去也有很重要的影響。

當然這些還不夠,你還需要多做幾個專案,多鍛鍊一下,再補充一些行業知識和實戰能力。但在校期間,首先應該先學好這些非常重要的基礎知識。

有些大學的課程作業也是很接地氣的,很有用的,建議認真完成,不要隨便糊弄完成。很多人來我的群裡直接付錢找人代寫課程作業,土豪歸土豪,建議還是自己完成吧。

我印象很深的兩個課程作業,給大家分享一下:

資料庫課程作業:自己實現一個MiniSQL資料庫管理系統。完成了這個作業,你對資料庫的儲存,SQL語言的理解不深都難。

軟體工程的作業:自己實現一個簡單的瀏覽器。這個作業對HTTP,HTML,軟體設計等要求都很高。

如果再補充一門學問,那就是

「設計模式」

本文開頭講的MVC嚴格來說算是框架模式,但也可以算是設計模式的擴充套件。

設計模式的書很多,其中最著名的設計模式的書是:GoF的23種設計模式。不過提前警告一下:這本書很難懂,可以先看:大話設計模式。

隨著經驗的增加,我越來越覺得模式的重要性。建築設計有自己的模式,演算法有演算法的模式,軟體設計有軟體的設計模式。掌握了這些模式你就是高手,你就是行家。

總結

說了這麼多,不想給大家潑冷水,說幾個結論:

Python不難找工作,而且專業的開發崗越來越多。

但只會Python語言本身不夠,要有意識加強補充周邊知識。

信心還是要有的,也許你不加強也能順利找到工作,那恭喜你了。但要在程式設計師這條路上走的更遠,這些知識是很有必要的。

我對周邊知識的重要性排序:

第一梯隊:

「HTTP協議」

- 學習難度中等,找對資料,幾天到一個月足夠了。HTTP和Web伺服器知識是關聯的。

Web基礎 - 學習難度中等。

資料庫基礎 - 這個入門不難,但是水很深。涉及到的知識,實戰細節和經驗都很多。是需要一直努力學習的內容。

演算法與資料結構 - 這個博大精深,慢慢加強吧。

第二梯隊:

Linux命令,作業系統的其他知識。基本的操作也是簡單的,有兩週就夠了。但是作業系統的總體知識就博大精深了,多執行緒,多程序等其實都屬於這個範疇。

Web伺服器,其他網路知識。

框架,設計模式等。

好了,今天跟大家分享一些個人看法和總結,希望對大家有幫助。

有問題歡迎在評論區跟我討論。最後祝大家都順利找到高薪的好工作。