這是讀者在微信上問我的一個問題,我當時給他的回復(fù)是 Python 挺火的,學(xué) Python 就好。但當我在網(wǎng)上看某 Python 視頻后,深感懊悔,覺得自己給出的建議是不負責(zé)任的。
意識到自己的問題之后,我就趕緊給讀者發(fā)了一條信息道歉。另外,回想起之前還有一些讀者問過我類似的問題,我的答案都不夠嚴謹,因此打算特意寫一篇文章來反省一下。
視頻里面分享的內(nèi)容還是非常嚴謹?shù)?,他認為,Python 應(yīng)用的方向主要有 5 個方面:
- 人工智能和機器學(xué)習(xí)
- 數(shù)據(jù)分析
- 爬蟲
- Web 開發(fā)
- 自動化測試
有理有據(jù),所以我完全認同他的觀點。
1、人工智能和機器學(xué)習(xí)
人工智能和機器學(xué)習(xí)是 Python 應(yīng)用的重頭戲,但這方面的崗位對學(xué)歷的要求非常高,高到我自己都應(yīng)聘不上,非常殘酷。
在招聘網(wǎng)站上大致瀏覽了一下,我發(fā)現(xiàn),這方面的崗位不算多,但工資挺給力的,在 15K- 30K。不過,招聘信息上直接說了,"我們的程序員小伙伴都畢業(yè)于 211/985 學(xué)?!?,就這一條,我就會被拒之門外。學(xué)歷硬傷啊,所以應(yīng)聘"人工智能和機器學(xué)習(xí)”這方面的崗位很難,扎心,誰叫咱不是學(xué)霸呢。
考慮到我的讀者已經(jīng)蔓延到了初中生群體,我得鄭重其事地說一句,"如果你喜歡學(xué)習(xí),那就好好學(xué),別在該學(xué)習(xí)的年紀浪費了青春?!卑パ?,我去,說這句話真有點拿自己做反面教材的感覺。
我上小學(xué)的時候,一直是第一名,因為學(xué)校的招生范圍就我們村那么大,一共也就三四十名學(xué)生。等到上了初中,一直保持前四,因為學(xué)校的招生范圍就我們鄉(xiāng)那么大,一共也就三四百名學(xué)生。等到上了高中,一直保持學(xué)校前十,但在整個縣城是沒有任何優(yōu)勢的。
真的是天外有天,人外有人,大部分人都是平凡的,普通的,所以這方面的崗位競爭真的很難。
2、數(shù)據(jù)分析
一般的小公司,比如說我就職過的公司,完全就沒有數(shù)據(jù)分析的必要性,因為重點是在產(chǎn)品上,如何做好產(chǎn)品吸引來用戶才是重點。如果說產(chǎn)品的用戶數(shù)量少,數(shù)據(jù)就完全發(fā)揮不出價值。
那也就意味著,數(shù)據(jù)分析工程師的崗位會相對較少,畢竟有大數(shù)據(jù)的公司屈指可數(shù)。但說實話,這個崗位的薪資還是非常給力的,發(fā)展前景也好。如果學(xué)習(xí)能力強的話,硬指標過關(guān)的話,可以嘗試。
工資高,通常的原因是供不應(yīng)求,也就是說崗位多,但人才少。但實際情況是,數(shù)據(jù)分析的崗位少,符合要求的人才更少。在公司只是在重復(fù)操作 SQL、Excel 等基礎(chǔ)工具的數(shù)據(jù)分析員很容易被自動化工具替代,又扎心了。
大專院校把 Python 作為主語言來教的話,我想肯定不是奔著這兩個方向(人工智能、機器學(xué)習(xí)和數(shù)據(jù)分析)來的。第一個原因就是學(xué)歷的問題,第二個原因就是教師不一定能教得會,更別說學(xué)生能不能學(xué)會了。
3、爬蟲
關(guān)于爬蟲,不得不提一下羊哥視頻評論區(qū)的一句話,不管是不是段子,我覺得挺值得深思的。我有個同學(xué)搞爬蟲被帶走了,還好他不是主犯,就是登記了一下。
爬蟲是近些年非?;馃岬囊粋€話題,連我都買了一本爬蟲入門的書,準備學(xué)一學(xué),無奈 Java 方面可寫的素材越來越多,這個計劃一直未能成行。
什么是爬蟲呢?可能有些不是程序員的讀者不太清楚,我找百科問了問,它說,"爬蟲,又稱網(wǎng)頁蜘蛛,是一種按照一定規(guī)則,自動抓取互聯(lián)網(wǎng)信息的程序或者腳本。”
在知識付費的大環(huán)境下,這種爬蟲就有點麻煩。拿我來說吧,我希望自己的文章只發(fā)表在我希望發(fā)表的平臺下,假如其他平臺在未經(jīng)我的授權(quán)下,就把我的文章爬走,放在自家平臺上,我就覺得知識產(chǎn)權(quán)受到了破壞。
文章還好,是我愿意公開的,如果涉及到一些隱私信息被爬取,那就更糟糕了,是吧?
現(xiàn)在很多平臺都在做反爬,并且做得越來越好,這就在一定程度上有點"魔高一尺道高一丈”的意味,所以,爬蟲方面的工程師還是蠻不容易的。
4、Web 開發(fā)
用 Python 做 Web 開發(fā)的大型互聯(lián)網(wǎng)公司我聽說的不多,羊哥說豆瓣以前用的是 Python,現(xiàn)在也不用了。
不管怎么說,如果拿 Java 來和 Python 相比的話,顯然在 Web 開發(fā)方面的優(yōu)勢巨大。不管是從技術(shù)框架上,還是性能上,以及應(yīng)用的規(guī)模上,同等條件下,Java 工程師顯然更吃香啊。
很多培訓(xùn)機構(gòu)夸贊 Python 在 Web 開發(fā)方面有著巨大的優(yōu)勢,開發(fā)效率高,速度快。嗯,其實我覺得應(yīng)該是因為 Python 的語法簡單,容易教——這恐怕是主要原因啊,我這樣說會不會被社會毒打?
5、自動化測試
說句實在話,Python 的自動化測試還是應(yīng)用非常廣泛的,考慮到框架的腳本質(zhì)量,測試用例的簡單性,以及運行模塊可能存在的技術(shù)弱點,我給大家推薦五款 Python 的測試框架。
1)Robot Framework,主要用于測試驅(qū)動類型的開發(fā)與驗收中。
2)Pytest,特點是開源、易學(xué)。
3)PyUnit,針對單元測試的 Python 類自動化測試框架,收到 Junit 的啟發(fā)。
4)Behave,允許團隊執(zhí)行 BDD(行為驅(qū)動開發(fā),behavior-driven development) 測試。
5)Lettuce,專注于具有行為驅(qū)動開發(fā)特征的普通任務(wù)。
6、總結(jié)
以上觀點都是我個人主觀給出的,不一定正確哈,僅做參考。
如果說,有些讀者的學(xué)歷非常牛逼,然后學(xué)習(xí)能力也非常強,那么選擇人工智能、機器學(xué)習(xí)、數(shù)據(jù)分析,我覺得前途是光明的,既能賺錢,待遇又好,還不可替代,不學(xué) Python 絕對虧。
如果說,有些讀者學(xué)歷一般,做程序員僅僅是為了糊口飯吃,那么我覺得可以把 Python 作為第二語言來學(xué),不要當做主語言。搞點范圍許可內(nèi)的爬蟲,自動化測試,我就覺得挺好的。況且 Python 這門語言本身是非常優(yōu)秀的,不然怎么搞人工智能,海量數(shù)據(jù)分析,對吧?
在此推薦幾個我認為很不錯的Python教程供大家學(xué)習(xí):