我畢業六年了,但與技術和 Python 相關的工作經驗也就兩年。 今天我想跟大家分享自己轉行的故事,希望能夠鼓勵那些跟我一樣的朋友共同前行。
我們將會聊到我個人的經歷和入行故事,個人的技術成就,我 2019 年上半年和下半年的工作重點,討論快速學習的方法,最后推薦一些學習資源。
01
個人簡介和經歷
我叫韋世東,是一名 Python 開發者,同時也正在學習 Rust 語言。 我并沒有大廠履歷,也沒有太多的 IT 工作經歷。
我喜歡用文章的方式向周邊的人分享知識,也熱衷于開源項目。 在 2018 年以前,我并不是一個專業的研發,工作內容甚至與技術沒有太多關聯。
我所學的專業是“軟件開發”,但大專念書的時候沒有好好學習,導致畢業后四處碰壁。 畢業后的第一年輾轉進入了一個互聯網金融企業,在技術部里面擔任最小的小弟。 隨著公司的發展和人數增加,我從小弟變成了小哥,后來成為了連接技術部和公司高層的紐帶。
從這個時候起,我離技術越來越遠,后來慢慢轉到了運營崗,并通過努力從運營小弟變成了運營小哥。 2013 年畢業,到 2018 年轉技術,中間 5 年時間里我也只有第一年呆在技術崗位,其他幾年都與技術無關。
這幾年我待過的崗位有: 信息安全員、技術組長、運營專員、運營指導、副總經理、運營總監 。
互聯網金融倒閉和跑路潮爆發,我感到行業岌岌可危 ,而且我覺得就我這點運營水平也蹦噠不起來(說成一事無成也不為過)。
恰好那段時間我了解到 Python 語言,了解到爬蟲對于企業運營和發展的重要性,還有 Python 易學的特點。 于是我下班后看 Python 的入門教程,并根據網上文章嘗試運行自己編寫的代碼。
念書的時候,學校教的是 C 語言、C# 和 PHP,但我都沒有學會。 唯獨這一次,我感覺我能夠學會 Python 。
在家看 Python 入門文章、Python3 入門教程文章和爬蟲入門視頻。 跟著教程學習了大概 3 個月,我就嘗試自己接一些小需求來做,例如爬取一些公開數據、編寫 Python 程序等。 那時候一兩天才能完成任務,得到的報酬通常是 30~300,有時候甚至靠回答群有的問題領幾塊錢小紅包。
自學階段,我的 Python 水平已經達到了初級,還學會了很多爬蟲相關的技術,例如網頁解析、數據存儲、定時調度、去重和增量爬取等,對于常見的一些反爬蟲措施也略有了解。
從零基礎到這個階段,我大概花了 7 個月 。 這時候,我覺得我能夠勝任一個初級爬蟲工程師的工作了,于是便在省會城市的人才網找了一些招爬蟲或 Python 研發的公司,投了簡歷。 三天內,接到了 5 個面試,然后也順利的找到了一份爬蟲組長的工作。
工作期間,我們爬蟲組的任務就是完成技術負責人分配的數據爬取任務,目標分為網站和 APP 兩大類。 我們公司是體育行業,所以數據的變動是常有的事,這就要求爬蟲組能夠高頻的爬取數據。
為了省事,我參考 Scrapyd 和 Celery 用 Django 編寫了一套支持 Crontab 規則的調度平臺,這樣我們編寫的爬蟲就可以集中在這個調度平臺上進行管理。
在反爬蟲方面,對于那些用 JavaScript 保護數據的網站,我們最開始采取的是 Selenium 或者 Splash 這種自動渲染工具來應對。 但后來考慮到高頻、時效性和資源占用等問題,便硬著頭皮去解目標網站中的 JS 算法,再用 Python 模擬實現同樣的算法。
這樣,將爬取速度和資源占用都調整到了最優的狀態。
我認為我進入了技術領域,就應該踏踏實實的呆在這個領域里,想辦法扎根。 所以我一直在尋找除了工作和外包以外的副業 。 我希望這個副業,既能夠幫助我技術成長、提高個人水平,又能夠幫助我在技術領域扎根。
2018 年是知識付費蓬勃發展的一年,所以我也加入了這個行列。
我寫了一個 《Python 實戰: 用 Scrapyd 打造個人化的爬蟲部署管理控制臺》 的電子小冊。
我發現在編寫小冊的過程中,我不得不逼迫自己弄清楚細節,這使我的技術能力得到了進步。 于是,我便開啟了寫文章之路,一方面作為自己的“筆記”,一方面逼迫自己完善細節。 其實一開始我有寫博客,但沒有系統化的寫過完整文章,
后來 崔慶才 崔哥跟我說有優質文章可以在他的公眾號上投稿,于是我就將一些文章搬到公眾號上。 接著崔哥又邀請我做公眾號的管理員,可以自由發文。 這對我來說簡直就是雪中送炭,給了我一個很大的展示平臺。
在此,感謝崔哥對我的照顧
這一切看起來都是機緣巧合,但又不乏努力爭取和主動出擊。 就這樣,一邊工作一邊發文,我的技術水平呈直線上升態勢。 故事太多,我就不一一列舉了。
02
個人成就
不提工作上的成果,單說在技術領域的成就。 由于得到了崔哥的照顧,在大平臺的光芒之下,我也認識了很多朋友,包括技術圈的朋友、媒體圈朋友和一些后來私交甚好的朋友。 作為一個剛轉行不久的“新人”,我自知難以與高學歷、大廠履歷或者多年工作經驗的朋友相比較。 大城市和大廠對于學歷的要求近乎苛刻: 第一學歷 985/211、名校研究生或領域極客。
在學歷上,我已經沒有辦法努力了。 我選擇的是“曲線行駛”的方式,爭取在其他方面能夠趕上這些大佬。 我在技術領域或媒體圈獲得了一些“名頭”:
比如在技術領域或媒體圈獲得的一些“名頭:
-
GitChat 認證作者
-
圖靈教育簽約作者
-
電子工業出版社約稿作者
-
華為云認證云享專家
這些“名頭”看似“虛名”,但對我而言卻十分重要。 雖然它們并不是什么高級的榮耀,但這都是我努力的成果, 是我日日夜夜刻苦學習的證明,是廣大讀者和媒體朋友對韋世東的認可,是我最寶貴的財富之一。
03
快速學習的方法
對于轉行的朋友,或者剛接觸 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,工作期間編寫的爬蟲項目部署調度平臺
這里有個建議,讀源碼、查資料的時候我們必定會用到搜索引擎,搜索引擎列出的文章并不一定是準確的。 有些文章甚至是缺頭缺尾,所以最好是 直接翻文檔或者找一些知名作者寫的文章來學習 。
04
上半年與下半年
2019 年上半年,我主要的精力就是放在書籍撰寫上。 這是我與圖靈教育簽約的一本反爬蟲專題的書,書本從網絡協議和網頁結構等基礎開始,通過實際的案例和現象說明其中用到的原理和技術,并將市面上常見的反爬蟲手段納入其中,作為示例。
書中對 JavaScript 代碼混淆、加密和驗證碼破解都有深入的介紹,我希望這本書能夠幫助爬蟲工程師和愛好者了解反爬蟲的手段和原理,同時也能夠幫助到前端、后端開發者了解爬蟲工程師常用的技巧和原理。 這本反爬蟲專題的書還沒有印刷出版,但相信很快就會跟大家見面了。
上半年我發布了很多內容質量很高的文章
下半年,我的主要精力依舊是放在書籍的撰寫上。 這一本是與電子工業出版社約定的爬蟲相關書籍,具體內容這里不便透露,但也會是一本高質量的書,希望大家多關注。
同時,還會兼顧其他技術內容的輸出,例如這次與 GitChat 編輯策劃的 MongoDB 系列教程 。 這個教程目前只出了第一期 《MongoDB 實戰教程: 數據庫與集合的 CRUD 操作篇》 ,大體內容如下:
-
NoSQL 的概念
-
認識 MongoDB
-
在 Ubuntu 和 macOS 上安裝 MongoDB
-
交互式接口 MongoShell的使用
-
MongoDB 數據類型
-
數據庫和集合的 CRUD 操作
這只是開胃菜,后面發布的內容才是重點:
-
文檔的 CRUD 操作和 Cursor 對象
-
掌握流式聚合操作
-
了解 MongoDB 的查詢效率和優化
-
如何提高 MongoDB 的可用性
-
如何應對數據服務故障
-
理解 MongoDB 的訪問控制
-
學會用數據模型降低數據冗余,提高效率
-
掌握 mongodump 數據備份與還原方法
這是寫給 0 基礎同學的 MongoDB 快速入門文章 。 內容從文檔 CRUD 到流式聚合操作; 從執行計劃、索引、數據模型到復制集; 從分片、訪問控制到數據備份與還原。 6 篇近 5 萬字的內容覆蓋了 MongoDB 的大部分知識點,完全滿足日常開發的要求 。
05
學習資源推薦
學習資源是學習質量和速度的保證,因此找到高質量的學習資源對我們來說也是非常重要的。
如果大家感興趣,可以掃描下方二維碼入群獲取和交流
大家也可以加我微信: zenrusts
我們一起探討技術知識、共同進步
點擊 閱讀原文 ,查看我發布過的 Chat 文章。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
