大專學歷,轉行自學兩年的 Python 開發者故事

我畢業六年了,但與技術和 Python 相關的工做經驗也就兩年。今天我想跟你們分享本身轉行的故事,但願可以鼓勵那些跟我同樣的朋友共同前行。前端

咱們將會聊到我我的的經歷和入行故事,我的的技術成就,我 2019 年上半年和下半年的工做重點,討論快速學習的方法,最後推薦一些學習資源。git

我的簡介和經歷

我叫韋世東,是一名 Python 開發者,同時也正在學習 Rust 語言。github

我學習 Rust 語言一週就編寫了一個開源庫,名叫 asciis,對應的crates 倉庫爲 asciisweb

我並無大廠履歷,也沒有太多的 it 工做經歷。在網絡世界裏,我經常使用的暱稱有兩個:面試

  • 德瑪西亞之翼-奎因
  • Asyncins

這是我前面幾個月在華爲總部直播的截圖,右側那個乖巧的胖子就是我:算法

我喜歡用文章的方式向周邊的人分享知識,也熱衷於開源項目。數據庫

在 2018 年之前,我並非一個專業的研發,工做內容甚至與技術沒有太多關聯。django

我所學的專業是「軟件開發」,但大專唸書的時候沒有好好學習,致使畢業後四處碰壁。編程

畢業後的第一年展轉進入了一個互聯網金融企業,在技術部裏面擔任最小的小弟。隨着公司的發展和人數增長,我從小弟變成了小哥,後來成爲了鏈接技術部和公司高層的紐帶。後端

從這個時候起,我離技術愈來愈遠,後來慢慢轉到了運營崗,並經過努力從運營小弟變成了運營小哥。2013 年畢業,到 2018 年轉技術,中間 5 年時間裏我也只有第一年呆在技術崗位,其餘幾年都與技術無關。這幾年我待過的崗位有:信息安全員、技術組長、運營專員、運營指導、副總經理、運營總監。

互聯網金融倒閉和跑路潮爆發,我感到行業朝不保夕,並且我以爲就我這點運營水平也蹦噠不起來(說一事無成也不爲過)。剛好那段時間我瞭解到 Python 語言,瞭解到爬蟲對於企業運營和發展的重要性,還有 Python 易學的特色。

因而我下班後看 Python 的入門教程,並根據網上文章嘗試運行本身編寫的代碼。唸書的時候,學校教的是 C 語言、C# 和 PHP,但我都沒有學會。惟獨這一次,我感受我可以學會 Python。

在家看慕課網的 Python 入門文章、廖雪峯的 Python3 入門教程文章和慕課網 Bobby 的爬蟲入門視頻。跟着教程學習了大概 3 個月,我就嘗試本身接一些小需求來作,例如爬取一些公開數據、編寫 Python 程序等。那時候一兩天才能完成任務,獲得的報酬一般是 30~300,有時候甚至靠回答羣友的問題領幾塊錢小紅包。

自學階段過去以後,個人 Python 水平已經達到了初級,還學會了不少爬蟲相關的技術,例如網頁解析、數據存儲、定時調度、去重和增量爬取等,對於常見的一些反爬蟲措施也略有了解。

從零基礎到這個階段,我大概花了 7 個月。這時候,我以爲我可以勝任一個初級爬蟲工程師的工做了,因而便在省會城市的人才網找了一些招爬蟲或 Python 研發的公司,投了簡歷。三天內,接到了 5 個面試,而後也順利的找到了一份爬蟲組長的工做。

工做期間,咱們爬蟲組的任務就是完成技術負責人分配的數據爬取任務,目標分爲網站和 APP兩大類。咱們公司是體育行業,因此數據的變更是常有的事,這就要求爬蟲組可以高頻的爬取數據。

爲了省事,我參考 Scrapyd 和 Celery,用 Django 編寫了一套支持 Crontab 規則的調度平臺,這樣咱們編寫的爬蟲就能夠集中在這個調度平臺上進行管理。

在反爬蟲方面,對於那些用 JavaScript 保護數據的網站,咱們最開始採起的是 Selenium 或者 Splash 這種自動渲染工具來應對。但後來考慮到高頻、時效性和資源佔用等問題,便硬着頭皮去解目標網站中的 JS 算法,再用 Python 模擬實現一樣的算法。這樣,

將爬蟲的爬取速度和資源佔用都調整到了最優的狀態。

我認爲我進入了技術領域,就應該踏踏實實的呆在這個領域裏,想辦法紮根。因此我一直在尋找除了工做和外包之外的副業。

我但願這個副業,既可以幫助我技術成長、提升我的水平,又可以幫助我在技術領域紮根。2018 年是知識付費蓬勃發展的一年,因此我也加入了這個行列。

我注意到掘金社區正在招募掘金小冊的做者,正好我前段時間研究了 Scrapyd 項目,對爬蟲項目的部署和調度有很深的瞭解,因此我在掘金社區的申請單上填入了本身的信息。

爬蟲領域缺乏項目部署和調度的知識,甚至連相關的文章都難以找到,我對本身的申請頗有信心。但是幾天過去,我卻沒有收到任何的回覆,這就很尬了。

因而我主動聯繫了掘金小冊的客服,但願她可以幫我重提一下我提交的申請。這一次,終於獲得了迴應,接下來就是對內容的策劃和章節的設計。

最終,我在掘金社區發佈了一本名爲《Python 實戰:用 Scrapyd 打造我的化的爬蟲部署管理控制檯》的電子小冊。

正是由於個人主動出擊和爭取,這本小冊才得以面世,填補了爬蟲項目部署和調度知識的空缺。我發如今編寫小冊的過程當中,我不得不逼迫本身弄清楚細節,這使個人技術能力獲得了進步。

因而,我便開啓了寫文章之路,一方面做爲本身的「筆記」,一方面逼迫本身完善細節。

其實一開始我有寫博客,但沒有系統化的寫過完整文章,因此小冊發佈以後,我便「駐紮」在掘金社區,並發表了多篇專欄文章。文章閱讀數、點贊數和評論反響都不錯。

後來崔慶才崔哥跟我說有優質文章能夠在他的公衆號「進擊的Coder」上投稿,因而我就將一些文章搬到公衆號上。接着崔哥又邀請我作公衆號的管理員,能夠自由發文。

這對我來講簡直就是雪中送炭,給了我一個很大的展現平臺。

在此,感謝崔哥對個人照顧

這一切看起來都是機緣巧合,但又不乏努力爭取和主動出擊。就這樣,一邊工做一邊發文,個人技術水平呈直線上升態勢。故事太多,我就不一一列舉了。

我的成就

不提工做上的成果,單說在技術領域的成就。因爲獲得了崔哥的照顧,在大平臺的光芒之下,我也認識了不少朋友,包括技術圈的朋友、媒體圈朋友和一些後來私交甚好的朋友。

做爲一個剛轉行不久的「新人」,我自知難以與高學歷、大廠履歷或者多年工做經驗的朋友相比較。大城市和大廠對於學歷的要求近乎苛刻:第一學歷 985/2十一、名校研究生或領域極客。

在學歷上,我已經沒有辦法努力了。我選擇的是「曲線行駛」的方式,爭取在其餘方面可以遇上這些大佬。截至目前,我在技術領域或媒體圈得到了一些「名頭」:

  • 圖靈教育簽約做者
  • 電子工業出版社簽約做者
  • 華爲雲認證雲享專家
  • 掘金社區優秀做者
  • GitChat 認證做者
  • 公衆號 「進擊的Coder」 管理員
  • 公衆號 「Rust之禪」 號主
  • 開源項目 aiowebsocket 做者

這些「名頭」看似「虛名」,但對我而言卻十分重要。雖然它們並非什麼高級的榮耀,但這都是我努力的成果,是我日日夜夜刻苦學習的證實,是廣大讀者和媒體朋友對韋世東的承認,是我最寶貴的財富之一。

快速學習的方法

對於轉行的朋友,或者剛接觸 IT 技術的朋友來講,最重要的是兩件事:

  • 如何保持專一,可以堅持
  • 找到快速學習的方法

第一件事其實並不難,保持專一併可以堅持的緣由一般有二:有經濟收入或者極大的興趣愛好。縱觀個人成長經歷,其實這也是我堅持下來的緣由。學習之初,徹底是出於興趣和轉行的壓力。

在 3 個月的階段,有一些小小的收入也是支撐我繼續前行的主要緣由。第二件事,找到快速學習的方法。我能夠說,個人進步速度很是快,並且很穩固。

我深深的知道**「浮沙之上難駐高臺」**的道理,因此我在學習的過程當中,經過寫文章來鞏固所學,而且我只專一於一個領域(爬蟲)。Python 能夠發展的方向很是多,例如 WEB、爬蟲、數據分析和深度學習,我自知想要紮根就必須專一一個領域。

我從最初的網絡請求、網頁解析到數據存儲,爬蟲部署調度,再到異步、多線程多進程、去重和增量,甚至是反爬蟲的研究,都屬於爬蟲這個領域。

爲了保持專一,我改變了個人做息時間,從原來的「早上八九點起牀,凌晨一兩點睡」改爲了「早上六七點起,晚上十一點睡」。週末亦是如此,早睡早起使我有充沛的精力保持工做和學習。

選好某個領域,並保持足夠的時間後,可以讓人快速進步的因素還有:讀源碼,造輪子。

讀源碼可讓咱們從更高的的角度理解程序的設計,並學到不少平時難以見到的騷操做。而造輪子,則是考驗咱們將知識轉換成代碼的能力。

我讀/研究過源碼的項目有:

  • Scrapyd
  • Scrapy
  • Celery
  • Gerapy
  • SpiderKeeper
  • SpiderWeb
  • WebSockets
  • WebsocketClient
  • Parsel
  • apscheduler
  • Job_Spider,Rust 語言編寫的定時任務庫

本身造過的輪子有:

  • aiowebsocket,Python 編寫的異步 WebSocekt 客戶端
  • Gerapy 2.0 後端(未發佈),使用 Tornado 框架編寫的爬蟲項目部署調度平臺
  • django_cron_scheduler,工做期間編寫的爬蟲項目部署調度平臺

這裏有個建議,讀源碼、查資料的時候咱們一定會用到搜索引擎,搜索引擎列出的文章並不必定是準確的。有些文章甚至是缺頭缺尾,因此最好是直接翻文檔或者找一些知名做者寫的文章來學習。

上半年與下半年

2019 年上半年,我主要的精力就是放在書籍撰寫上。

這是我與圖靈教育簽約的一本反爬蟲專題的書,書本從網絡協議和網頁結構等基礎開始,經過實際的案例和現象說明其中用到的原理和技術,並將市面上常見的反爬蟲手段歸入其中,做爲示例。

書中對 JavaScript 代碼混淆、加密和驗證碼破解都有深刻的介紹,我但願這本書可以幫助爬蟲工程師和愛好者瞭解反爬蟲的手段和原理,同時也可以幫助到前端、後端開發者瞭解爬蟲工程師經常使用的技巧和原理。

這本反爬蟲專題的書尚未印刷出版,但相信很快就會跟你們見面了

上半年我發佈了不少內容質量很高的文章,例如:

  • 開發者必知必會的 WebSocket 協議

  • 7 分鐘全面瞭解位運算

  • MongoDB 實戰教程:數據庫與集合的 CRUD 操做篇

  • Python如何爬取實時變化的WebSocket數據

  • 一看就懂,Python 日誌模塊詳解及應用

  • 【動圖詳解】經過 User-Agent 識別爬蟲的原理、實踐與對應的繞過方法

  • [動圖演示]Redis 持久化 RDB/AOF 詳解與實踐

下半年,個人主要精力依舊是放在書籍的撰寫上。這一本是與電子工業出版社約定的爬蟲相關書籍,具體內容這裏不便透露,但也會是一本高質量的書,但願你們多關注。

同時,還會兼顧其餘技術內容的輸出,例如此次與 GitChat 策劃的 MongoDB 系列教程。

這個教程目前只出了第一期《MongoDB 實戰教程:數據庫與集合的 CRUD 操做篇》,大致內容以下:

  • NoSQL 的概念
  • 認識 MongoDB
  • 在 Ubuntu 和 macOS 上安裝 MongoDB
  • 交互式接口 MongoShell的使用
  • MongoDB 數據類型
  • 數據庫和集合的 CRUD 操做

這只是開胃菜後面發佈的內容纔是重點。讀者將從第二期《超高性價比的 MongoDB 零基礎快速入門實戰教程》中收穫::

  • 文檔的 CRUD 操做和 Cursor 對象
  • 掌握流式聚合操做
  • 瞭解 MongoDB 的查詢效率和優化
  • 如何提升 MongoDB 的可用性
  • 如何應對數據服務故障
  • 理解 MongoDB 的訪問控制
  • 學會用數據模型下降數據冗餘,提升效率
  • 掌握 mongodump 數據備份與還原方法

這是寫給 0 基礎同窗的 MongoDB 快速入門文章。內容從文檔 CRUD 到流式聚合操做;從執行計劃、索引、數據模型到複製集;從分片、訪問控制到數據備份與還原。****6 篇近 5 萬詞的內容覆蓋了 MongoDB 的大部分知識點,徹底知足平常開發的要求。

學習資源推薦

學習資源是學習質量和速度的保證,所以找到高質量的學習資源對咱們來講也是很是重要的。如下列出的學習資源不分排名,都是好資源:

  • 不管學習什麼知識,官方文檔最重要
  • 公衆號「進擊的Coder」
  • 公衆號「Python學習開發」
  • 公衆號「鹹魚學Python」
  • 公衆號「妄爲寫代碼」
  • 公衆號「Python編程與實戰」
  • 公衆號「小周碼字」
  • 公衆號「菜鳥學Python編程」
  • 公衆號「JAVAandPython君」
  • CSDN「陽光下的小樹」
  • 掘金「MarvinZhang]」
  • 知名博客「靜覓」
  • 優質 IT 書籍 「圖靈社區」
  • 優質 IT 書籍 「電子工業出版社商城」
  • 公衆號「Rust之禪」
  • 韋世東的掘金專欄 juejin.im/user/59df53…
  • 韋世東的 GitChat gitbook.cn/gitchat/aut…
  • 韋世東的華爲雲博客 bbs.huaweicloud.com/community/u…

你們也能夠加我微信:zenrusts,徵得你贊成後,我會拉你進入一個大廠大佬雲集的搬磚羣。咱們一塊兒探討技術知識、共同進步。

相關文章
相關標籤/搜索