有多少人按@蕭井陌大神給出的Python+Flask路線找到工作了?

蕭大在 WEB開發還有前途嗎? - 互聯網 下的回答給我指明了一條道路,也給下面評論的幾十人中的一些指明了道路,我現在想寫個小微博小知乎,仍然不得不看著書敲代碼,還寫不出來,我覺得我的人生很失敗,我茶飯不思,口舌生瘡。請問其他走這條路線的人經歷如何


註冊知乎這麼久,總算有個能回答的問題了。

已經按照 python + web 的路線找到工作。

工資不高,省吃儉用勉強收支平衡,但總算是轉職成功了。


背景

年齡:1987.10
學歷:末流大專
基礎:會用電腦
人脈:0,無相關專業朋友及網友
簡歷:套了個流行的模板,內容流水賬,無任何包裝和技巧

時間線

  • 2015.9.3 開始自學
  • 2016.2.18 投簡歷,共投出10份,3個面試,4個不合適
  • 2016.2.24~25 面試
  • 2016.2.25 拿到兩個offer,選擇了其中一個

自學過程

2015年9月: 完成coursera的python交互程序設計入門。

本來根本沒有轉職的打算的,當時無意間點進了S1外野的一個討論編程的帖子,然後看到有人說coursera上這套python教程讓他感到打開了新世界的大門,然後我就去搜了下coursera python(那天正在下載i社的新作,等待的時候,人總是容易失去理智),然後我就參加了這門課,當時只是覺得coursera是個挺高大上的東西,試一下總是一種體驗,完成了week 1的課程後,發現week 2的課程得等一個禮拜後的互評結束後才能觀看。簡單搜索一下後,找到了全部的視頻,還帶字幕的。課程的內容很簡單,就是 用簡單的條件判斷語句 + 簡單的面向對象 + 課程提供的gui庫 來寫一些小遊戲,比如第二周的課程是乒乓。後面的三周時間幾乎是廢寢忘食的利用所有空閑時間完成了這套課。這是人生中頭一次體會到編程的樂趣,雖然代碼糟糕的很,毫無技巧,也不優雅,然而程序跑通的那一刻,得到的體驗仍然勝過一切,無論是苦刷三天爆了件神裝,還是萬智牌絕境下神掏逆轉,或者是圍棋比賽中殫精竭慮戰勝了比自己強的對手,都無法與之相比。


2015年10月:辭職自學,路線確定 python web,用flask寫了個人blog。

琳琅滿目的自學編程路線中無一不是羅列了一堆磚頭書,從數學基礎到編譯原理,我相信推薦人都是好意,然而一個零基礎自學的人,得有多大的熱情,才能在沒有什麼反饋的情況下,堅持到學完所有的基礎?
這時候看到了蕭井陌的答案:「flask源碼讀懂,就能找到工作」
於是開始學flask,書用的是miguel的那本《flask web開發》,另外有本《explore flask》做參考
這個月比較辛苦,因為啥都不會,照著書敲,前兩周大腦一片混沌,總之各種報錯,各種搜索,各種補基礎,miguel是個好人,長期在他的blog上回答關於他書中的問題。後面敲多了,對MVT框架也就比較清楚了,搜索的內容從清一色的「又報錯了,救命TT」,變成了「我想實現這個功能,咋整」。總之在10月31日倒騰出了一個脆弱的個人blog,順便部署到了sae。
有個插曲,不知道是不是搜了太多的技術名詞,某天google的搜索頁面變成了星戰片尾字幕的效果,然後眼前一黑,進入了一個shell環境,裡面是google的試題,可惜當時太弱。


2015年11月~2016年1月:刷題,堆技術棧

checkio刷了一百題
pythonchallenge完成前28關
leetcode每個tag都做了幾題
匯智、codecademy的互動式教程看了前端和數據相關的
讀完大部分《Problem Solving with Algorithms and Data Structures》
讀完大部分《深入 Python 3》
讀完一半以上的py3.5標準庫
讀了一部分cookbook
讀了so的一些高票答案
讀了很多關於web的技術文章

2016年2月:思考人生,看了幾天海,學django,模仿todoist寫了個簡化版,投簡歷
這個月內心有些動搖,因為搜了半天沒找到年齡大學歷低無人脈的人轉職成功的先例,更害怕的是投出簡歷連面試機會都沒有,所以用一個多禮拜學了下django然後寫了個簡單的todolist,打算投幾份簡歷試試,結果沒想到,居然成了


其他

關於拖延症:

一個人自學是很容易墮落的,在家裡,一不小心,刷刷論壇,一天就過去了。
我自己的拖延現象是非常嚴重的,雖然已經儘力控制,但還是浪費了不少時間。
我控制拖延的方法,簡單的說就是:計劃 + 啟動。
建議找一款時間管理軟體,我用的是 todoist 和 番茄土豆。
每天起床後花半個小時規劃一下一天要做的事情,寫進todolist。
寫了一堆計劃,但最後沒完成的多少的現象也是很常見的,所以關鍵是得開始。
任何事情只要開始做就不那麼難了,如果計劃列表裡的某個任務讓你拖延很久確不去做,那你可以試試將這個計劃分解成很多簡單的步驟。
比如說,你的todolist有一項是 [加入功能A],遲遲不開始是因為這功能實現起來很麻煩。那麼這時候可以考慮把 [加入功能A] 改為 [『搜索問題的答案』,『讀文章找頭緒』,"github找現成的實現","讀懂別人的代碼",『實現自己需要的功能』],如果還是不願意動手,可以繼續細分,細化到 [打開瀏覽器,輸入問題,點擊搜索] 這種程度總能開始做事了。

關於英語:
感覺沒必要刻意去學,平時多用就行,比如可以 把刷知乎、貼吧、S1的時間用來刷quora、4chan、reddit,平時追的漫畫,先看英文肉。

關於提問:
我自己是完全的閉門造車狀態,沒有在任何平台提問過任何技術問題。
首先大部分問題都能直接搜到答案。
其次搜不到答案的問題,很大可能是問題描述有問題。
如果問題描述精準且真的搜不到答案,那麼「大神」們回答問題的成本也不低,而我又不是妹子,所以實在搞不定的問題寧可遺忘,也不提問。(哪裡會有人喜歡孤獨,不過是不喜歡失望.)

關於未來:
我知道,我現在只是一個勉強入門「中小型開源Web應用二次開發者」
我很難趕上那些,十幾歲開始學,二十幾歲就成為行業頂尖的人
但我28歲的時候開始學,38歲的時候至少能成為一個比較成熟的程序員吧


不知道算不算強答,零基礎學了半年吧,沒去找工作,只是接了些活兒,掙了些1000多的外快。

明天就要去北京回學校了,今天在家整理書籍,感慨良多,寫個答案,算是整理一下半年的學習過程。

(寫完了才發現這感慨確實有點多,這個答案是邊整理書邊寫的,所以有點多,基本概括了我半年學習路線,不知道能不能對你有點幫助。)


父親去年五月份查出肝癌晚期,暑假我向學校申請休學半年,九月份的時候父親病逝,我一直在家忙後事。為了不在家浪費時間,加上我早就有建築學棄坑的想法,九月底的時候正式開始學習編程。


不過需要說明的是我並非完全的零基礎,去年年初就有心轉學cs,只是沒人教,學業也繁忙,大概就是看完了《笨辦法學python》《think python》,《編碼》這個樣子吧。

後來就想著利用在家的這段時間試試水,編程學得下去就轉cs,不行就老老實實去干我的建築。所以那個時候學編程給自己定的目標就是寒假能去找份實習。然後在知乎上看到蕭丼陌說python加flask是最快找工作的,就從那本《flask web 開發》狗書開始學起。

開始的時候簡直學這本書痛不欲生,一天啃個一兩章,看不懂就先跳過去,咬牙堅持到第七章的時候就崩了,完全不知道該怎麼繼續學下去。因為學《think python》的時候非常順暢,書里代碼也都敲完了,我居然就天真地以為自己就有了python基礎。而且那個時候我沒有學git,只是把作者最終代碼下載下來,對照著敲,怎麼可能看得懂。

後來就開始回頭補python基礎,因為離開了學校,所有的書都需要我自己買。補基礎這段時間我看的是《python基礎教程 第二版》,手頭還備著一本《python核心編程 第二版》翻閱,也是在這段時間裡學了爬蟲,爬了趕集網幾萬條數據吧,寫爬蟲的時候,看著屏幕上翻滾著一條條的數據,特別有成就感。

用python寫了一個2048,總算是積累了一些代碼,通過寫這個項目開始知道了什麼是類,什麼是面向對象編程。

十月份重新去擼狗書,這次學乖了,從目錄前言開始一字不落。他要我學Git,就老老實實把廖雪峰的Git看完,學完了Git才知道,原來每章都有對應的源碼,不懂git,初學者是不可能通過這本書學會Flask的,後來別人問我怎麼學Flask的時候我都會再三跟他強調,先學git和github,不然別學這本書。

十月二十六號的時候,那天我生日,敲完了狗書,上傳到github。有人可能覺得我速度太慢了,二十多天近一個月才學完這本書。因為我為了學這本書,同時還學了很多本其他書····

網路基礎知識缺乏,就去買了《圖解http》(看完了)、《圖解tcp/ip》(看完了第一章基礎知識)、《計算機網路自頂向下方法》(看完了第一章)。

我的經驗就是這樣,如果你對某一個章節的知識點不懂的話,不如索性把掛著知識點的那棵樹都給挖出來,效率還要高得多。

資料庫那部分代碼跑倒是跑通了,就是不太理解原理,看完了《python基礎知識》、《python核心編程第二版》、《python核心編程第三版》所有關於資料庫的章節,代碼也敲了好幾遍還是不太明白,後來買了一本《SQL必知必會》看完了一下子就懂了。

Bootstrap框架不知道什麼意思,買了一本《Bootstrap實戰》,沒想到書還是看不懂,就去過了一遍html和css常識,知道Bootstrap基本就是把已經做好的css引入就結束了,沒再深究。因為這類知識有太多的細節,暫時沒打算學,邏輯上弄懂是個什麼東西就好了。

也順便學了JS,買了三本書《JS DOM編程藝術》、《JS語言精粹》、《JS高程》,擼完了第一本,寫得很好,第二本翻翻,不太習慣,第三本主要拿來查疑,翻閱的。說實在的,習慣了python的優雅簡潔,再去看JS沒完沒了的大括弧、分號,很不適應。

擼完了狗書之後就有點迷茫了,不知道該幹啥,在家打了一個星期的lol,十一月份的時候去找武漢的小夥伴們玩耍,小夥伴們要麼在準備即將到來的考研,要麼在忙者找工作。我拉著他們一個一個聊天,看著他們在人生岔口上或迷茫、或失意、或焦慮、或安然,有了些想法。

武漢浪了一個星期後回家買了本董偉明的《python web開發實戰》繼續學flask。這本書很有意思,與其說是講flask的,不如說是列了一個提綱,告訴你flask開發要用到什麼什麼,我學習方式基本就是這本書上提到了一個什麼什麼我就去把相關的文檔過一下。通過這樣學習了解了一些網站開發架構的常識。這本書我只看到第六章,後面的需要很多實際工程經驗,我看不了。

學習的過程中我給狗書的網站寫了一個上傳圖片,並將圖片處理成頭像的功能。自己設計編寫代碼要比照著別人的敲有意思多了。

同時還買了《python cookbook》,強力推薦,很好的一本書。最大的作用是改變了我對python的看法,原來代碼還可以這麼寫,當然是不可能看完的,印象里看了幾十頁吧。

因為我的學習都是自己悶在屋子裡,自己敲代碼,代碼只跑給機器看,所以我的代碼很不規範,命名注釋什麼的都很混亂,自己也知道這一點,所以買了本《編寫高質量代碼 python》來看。後來發現代碼本身沒改善多少,對python內部機制的了解深入了一些。

那個時候感覺技術陷入了一個瓶頸,學習好像變成了拼積木,學習了某個模塊,知道了怎麼用然後就沒了。所以就嘗試著學底層,去讀flask源碼,用python寫一個web應用框架,突然間,難度TM地暴漲,就好像我魂斗羅小米加步槍一直打得蠻順,突然給我刷出一個CF里的殭屍。當時就蒙蔽了

根據之前的經驗,我知道,我該去擼真正的基礎了。去了一趟武漢之後對於找實習這件事也不怎麼執著了,就準備去啃那些科班書了。

買了一本《C Primer Plus》和一本《C程序設計語言》跟著網易雲課堂上的翁凱老師把c語言過了一遍,主要是把指針這一塊兒弄明白,不求掌握c語言,只求能看明白。

這兩本書都沒看完,主要用來對照的。老師講什麼,就把對應的章節看了,主要看的是《c plus》,覺得寫得詳細些。

然後買了《大話數據結構》、《數據結構與演算法分析 C語言》開始擼數據結構,把《大話數據結構》擼到「樹」這一章之後在翻《數據結構與演算法分析》發現這玩意需要很長時間才能啃下來。我在家的時間很自由,但也很有限,主要是為了大致了解CS到底是個什麼玩意兒,把時間全花在這裡不太值當。況且我這專業不學數學,「學完建築之後就只會三位數以內的加減法了·····」(我老師說的)所以我還得回學校把數學這個前置技能給點了才好過來繼續擼演算法。

在知乎上聽人吹《深入理解計算機系統》已經聽得夠多了,再加上自己以前就看過《編碼》,早就對計算機的內部運行好奇地要死,就選擇了這本書來學習。

第一章,good,nice!很順暢。

第二章,我擦,好難喲,咬著牙啃了。

第三章,馬勒戈壁,不會要先去學個彙編再來擼這本書吧·········

在這裡卡住了之後,我就繞道而行,選擇了國內的教材,唐朔飛老師的《計算機組成原理》和配套的習題跟著網易公開課上的配套課程學習。基本就是學完了計算機組成原理之機器章節,就回過頭來把《深入》這本書的第六章存儲器給擼一邊,學完了計算機組成原理之數字,就回過頭來把《深入》的第二章再複習一遍。

同時學習兩套教材,確實感覺風格很不一樣。《深入》這本書重視知識的融匯與廣度,什麼東西都會給你提一下,在原理深度上不如《計算機組成原理》。《計算機組成原理》的課後習題基本是在問我上課講的東西你記住了沒?而《深入》這本書則是在問我剛剛說的東西你知道怎麼用了嗎?當然,兩本書我都沒學完,認知可能會有偏頗,總體來說,各有千秋。

學到這兒的時候就已經到了2016年基本就過去了,再後來家裡的事情增多,爺爺也病重,小夥伴們放了寒假來找我玩,所以2017年的時候基本就沒怎麼學了,代碼也不怎麼敲了,到現在已經生疏了很多。

回首這半年,大概可能敲了五千行左右的代碼,編程是我的生活主流,但並非全部,還打了500多場lol,刷了幾百集電視劇動漫(以前從來不看電視劇的),幾十部電影,不定時鍛煉,寫作練字,偶爾去駕校客串教練,刷知乎。因為沒有社交,基本長期都悶在自己的卧室里,懶得出門,倒是硬碟里的片子換了一部又一部········

自己感覺最大的收穫除了俯卧撐從原來的5個到了30個之外就是學習能力提高了不少。自學嘛,各種各樣稀奇古怪的問題,全靠自己克服。

前天心血來潮,擼了一個微信小程序,是專門給一個妹子定製的日曆程序。雖然基本不會js,當初只花了兩三天擼了一遍《JS DOM藝術》,但還是只花了兩個下午搞定了這個小程序,一個下午用來申請資質、讀小程序的文檔,搜集資料以及解決為什麼我死活改代碼,小程序TM的就是沒反應的操蛋問題。一個下午用來邊學js邊寫後台邏輯,邊查css邊寫前台頁面。當然,程序並不完善,算個Demo吧,還有很多想要的功能,設計的彩蛋都沒寫,去北京之後補上。因為騰訊爸爸並不接受個人開發者,得想法子繞過去,所以暫時沒有上線,希望能在月底上線。

以上基本就是我這半年的學習經歷。我並沒有完全按照蕭丼陌大神推薦的學習路線來學習,全部都是自己搞,不過學完了之後對照一看,路線基本差不太多。

其實我還想再寫寫,寫寫自學過程中一點經驗。

例如怎麼學習安裝各種各樣的框架、環境、包、工具?(初學者都知道,安裝這些稀奇古怪的東西是多麼痛苦耗費時間的事。)

怎麼樣搜集和選擇學習資源,學習資料?(我其實不太懂為什麼有人要花好幾千去培訓公司看視頻。那些達內全套前端視頻,麥子學院的全套python培訓視頻等等等,我硬碟這裡都一套一套的。)

怎麼樣在實力還很水的時候忽悠別人掙點外快?(我掙的1000多基本全都拿去買書了。其實沒有刻意去掙錢,主要是給自己一點動力。)

如何降低自學的難度?

········

不過不能再寫了,在這個答案寫完發布後,我就得把這台電腦給拆了送到快遞店打包發到北京去,再寫下去,人家就關門下班了······況且寫了這麼多廢話,肯看完的人估計也沒幾個········


最後來一張這半年買的書籍合影

沒錯,我就是來曬書的!(???)


聲明:只是經驗分享!!!當故事看看就好。不同的人,不同的環境,不具備可複製性。故事看完路還是要自己走的。


我照著蕭大的指導找到了工作,已經入職有一個月了,過來將我的過程分享出來,希望能有點參考價值。

先介紹下我的基本情況:211本科土木工程,大學期間學過一丁點兒C語,算是零基礎。畢業後在工地上做建築施工工作五個月,然後轉行到一個外包公司做功能測試八個月,9月中旬入職現在的公司,工作內容是用python做openstack的二次開發。


下面說下詳細過程:
最早接觸python是在《黑客與畫家》這本書中,在大學裡看閑書讀到的,其中有一篇作者特別推崇python,當時沒有去了解更多,但對python有了深刻印象。

在工地工作期間有轉行的想法時,因為深圳有騰訊,便想不如去做程序員吧。當年的C語考試將近滿分,讓我對學編程沒有畏懼心理。於是便想起了python,在知乎搜索收集了一通信息,建了個收藏夾那些幻想,當時還只是幻想,沒有開始行動。

後來下定決心轉行了,就找到了《Python簡明教程》(A Byte of Python)列印了跟著敲。

當時對於從什麼崗位干起兩眼一抹黑,機緣巧合,經一個朋友的介紹認識了一個幹了十年嵌入式的程序員,他建議我可以從測試崗位干起,工作門檻不高,而且工作相對輕鬆,有時間自學。於是投測試崗位的簡歷,順利找到一份功能測試工作,元旦後入職。公司的程序員用的是Java。

測試崗位確實比較閑,入職沒幾天,我就把《Python簡明教程》剩下的部分學完了。然後直到過年回家的一個月時間,我陷入了迷茫。Foxmail訂閱了國內的各種互聯網媒體博客等,每天了解國內外IT界的新聞就花掉幾個小時的工作時間,其他時間學一些測試的東西,沒有人帶,自己上網搜,東一榔頭西一棒子的看,覺得有用的記錄到印象筆記上

過年期間,一聲炮響,送來了蕭大的編程入門指南 (現在是1.4版本,較之前的版本有改動)。頓覺前途明亮人生有望了有沒有!!!

年後回到深圳,有了指路明燈,還不策馬狂奔?花了一周時間去codecademy上敲完python部分,然後開始聽計算機科學和Python編程導論,做課後的Problem Set,同時開始支線任務《Python核心編程》。還根據蕭大的指南做了個流程圖:(還是1.0版本的,上傳了百度網盤,需要的自取)
Visio版:鏈接:百度雲 密碼:kqtq
PDF版:鏈接:百度雲 密碼:2zk1

這樣聽課做題的簡單日子只持續到4月上旬,有一個多月效率很低。直到6月才恢復了正常的學習節奏。同時看些閑書,《大話數據結構》《編碼的奧秘》這種趣味入門書,不深究,了解個大概。這段時間還去了解了爬蟲,沒有寫出像樣的爬蟲,但是了解了一些計算機網路通信的知識。另外微信訂閱的Crossin的編程教室上出了一系列用web.py框架做小網站的教程,也跟著學了,不過好久沒有更新了。

拖拖拉拉到6月底,才學完MIT的導論課,《Python核心編程》的書還沒看完。但是那個時候對所在公司的各種制度不滿,想儘快學到能幹活的程度跳槽。於是正式開始了Flask的學習(《Flask Web開發》書老早就買了,之前零零碎碎看了點),每天下班在公司學到9點。期間有過很多蛋疼的時刻,但還是死磕過來了。到8月上旬,基本過完一遍書,將應用部署到Heroku上折騰了有一周時間。

8月中旬,在書上代碼的基礎上,自己做一些改動,並翻譯成中文界面,再重新部署下,便提了辭職做份簡歷找工作去了。由於對python的基礎掌握不牢不全面,面試期間很不順利。面了幾家後都希望渺茫,想著要不回家再學一個月再來找工作。所幸,在上家公司離職當天收到了現在公司的offer,儘管是以應屆生的待遇。

總的來看,我的學習過程分三個階段:
第一階段:python基礎語法
關鍵字:《A Byte of Python》跟著書敲,python 3.4,Windows 7,IDLE

第二階段:複習python語法,了解其他基礎知識
關鍵字:Codecademy,MIT導論課,《Python核心編程》,看書做題
# 補充:python 2.7

第三階段:Flask框架
關鍵字:《Flask Web開發》,Linux(推薦Ubuntu或CentOS),Git,QQ群請教
# 補充:python 2.7

另外,學的過程中,最好慢慢養成下列習慣:
1. 優先讀官方英文文檔,其次是別人的經驗/理解(博客、百度知道、論壇帖子這些);
2. 善用Google,最近發現AOL也還不錯(盡量不用百度,不靠譜耽誤事);
3. 你遇到的問題很有可能其他人也遇到過並解決了,Stackoverflow是個好東西;
4. 以上三步都不能解決的問題,再請教別人。
5. 將過程記錄下來,常做總結。覺得可能對他人有幫助的,分享出來。

先這樣吧,有時間再補充。

----------------------------- 加班間隙,補充點資料 ------------------------------
1. 關於QQ群,直接搜索關鍵字就可以找到很多,多加幾個,擇善保留
2. 推薦幾個微信訂閱號:
PythonCoder(Python開發者)
crossincode(前面提到的Crossin的編程教室)
LinuxHub(Linux愛好者)
3. Git推薦廖雪峰老師的教程:Git教程 - 廖雪峰的官方網站
4. 資料庫的學習,推薦《SQL必知必會》這本小冊子
5. 前端的學習,去w3school,HTML、JS、CSS做到能看懂能改

技術的學習不是一蹴而就的,但只要你的知識夠用就能找到工作。調整好心態,踏踏實實看書敲代碼去吧。

#2015-12-29更
覺得讀英文文檔有困難的童鞋,去裝個微軟的必應詞典,打開取詞。好用再來謝我~

#2016年1月8日更

好多同學在剛開始接觸Flask的時候,會遇到一些小白問題,很正常,我一開始也這樣。不過一個一個解答效率太低,所以來把我當時記錄踩坑的博客貼出來:從0到1 日拱一卒


退學轉前端,工作四個多月了,一直想來寫寫自己的答案,卻又覺得自己不夠格。剛看到R神@RednaxelaFX贊了這個問題下的一個答案,就也想來分享一下自己的經歷了。
我是大概在去年八九月份開始看flask web教程的,那個時候我還沒退學,還在實驗室做著極其不喜歡的實驗。
在本科的時候就已經對物理失去興趣了,只有在臨考前看兩天書,其他時間要麼在網吧,要麼在睡覺。當時對未來很迷茫,就想著這樣慢慢混下去吧。混著混著就畢業了,科大保研比較容易,我就保研了,想著研究生繼續混吧。
不知道哪一根筋不對了,突然覺得還是得出國才有意義,於是想研究生畢業申請出國,但是我保研的那個實驗室的導師說他組裡的學生都是要讀到博士畢業的,也就是委婉的告訴我他的組不能研究生畢業。好在他說同意讓我換導師,於是經過師兄的推薦,就換到了某院士的組裡。
小老闆要我弄一個自動調諧裝置,要用到Arduino,步進電機,python,solidworks之類東西,之前完全沒有接觸過。但是很想證明自己,就收起了本科積累了四年的懶散勁,開足馬力,在實驗室里搗騰。由於當時是暑假,我還接了個家教,每天上午都得去,所以只有下午和晚上可以做。但即便是這樣,我也按時完成了老闆給的任務。當時之所以可以這樣努力,一方面是想證明自己,另一方面就是寫代碼實在太有意思了。
我喜歡黑色的界面,花花綠綠的高亮,代碼跑通的成就感,解決問題時的思考……要是能一直寫下去該多好呀。
但是我並沒有能一直寫代碼的幸運。小老闆告訴我,這個項目做完了,組裡就不需要寫代碼的了,物理實驗室還是得做物理。可是我實在不願意做物理有關的東西,可能是腦子不開竅,我就是沒法理解量子物理裡面的各種概念。而且我在寫代碼上嘗到了甜頭,寫代碼能讓我感覺到自己的確有解決問題的能力。所以我自然是堅持要寫代碼!
後來因為這事跟導師鬧了矛盾,我就在實驗室磨洋工了。我們實驗室又特別嚴,每天都要開晨會彙報昨天的工作進度,一天得工作15個小時。我實在受不了這種坐在實驗室這麼久,又不能做自己想做的,又不想做實驗室讓做的,又得想辦法應付晨會的壓力了。
於是我就和導師說想退學了。他讓我再思考思考,讓我去西區的科大訊飛實驗室看看有沒有導師要我。我一想到自己已經換了一個導師了,又得再去換個導師,這不成了「三姓家奴」了嗎?但是心裡還是存著僥倖,萬一人家要了,我不就能名正言順地寫代碼了嗎?於是就去那找了一個教授聊了下,結果那個教授覺得我沒有模式識別之類課程的背景,培養風險太大,就沒有要我。
我就灰心喪氣了。在那種情況下,我覺得自己為人處事太失敗了,沒有教授願意收留我的。
就是在這個狀態下,我看到了知乎上的這個問題,然後知道了@蕭井陌大神對新手的建議。於是就廢寢忘食啃狗書,這段時間我跟導師說在聯繫新導師,就沒去實驗室。然後邊看書邊找實習,運氣好,很快就找到了實習。離學校也不遠,關鍵是環境特別好,公司有種藝術氛圍。
看了大半狗書,照著敲了個博客,其間還搞清楚了http,抓包什麼的。在公司還寫了幾個爬蟲,爬到了一些公司很感興趣的數據。然後技術主管看我能寫代碼,就讓我試著寫寫後台管理程序的前端,於是我就拿flask做代理伺服器,渲染模板做了前端頁面。不過當時我根本不知道什麼叫代理伺服器…只不過我只會flask,就用了flask,反正flask里有模板,也能寫前端嘛。所以當時完美避開了跨域的問題,直到後來用react全家桶做前端的時候才知道原來還有跨域限制這回事。
技術主管跟我說副總和總助很看重我,希望我留下,於是就這樣轉正了。於是就退學了。
在公司的每一天都很快樂,能做自己喜歡的事,還有人給你錢,太幸福了。
下班回家和同學開黑打兩局遊戲,寫寫程序,看看源碼,刷刷知乎,關注了很多前端大牛小牛,最喜歡的是民工叔@徐飛,還有民工叔最欣賞的R神。這樣的狀態,讓我覺得自己真正地成為了一個碼農。
多麼幸福。


對了,為了不誤導新人,我先說下,最好選定一個方向學習,我是因為工作的需要,所以前後端都學了…
=====================
我是偶然間看到這個問題,才走上了轉行的道路。
先說說個人情況,東北某末流985電子專業,學習成績中等,個人學習能力尚可,主觀上不夠努力,計算機相關的基礎:大一學的計算機基礎、c。
去年這個時候,我還在累死累活的準備考研,為什麼要考研呢?因為身邊大多數人都在準備,沒錯,我就是這麼沒主見的一個人。
今年一月份,開始閑下來,思考人生,思考自己想要的生活,思考自己究竟喜歡什麼。想到高中時自學c#挺開心,大學學c的時候也挺開心,我就想不妨現在學學編程。嗯…從python開始,看了笨辦法學python,廖雪峰的python教程,一開始總是痛苦的,經常為了某個知識點學一整天,比如oop…
學完python基礎後,開始學習flask,翻了幾頁,看不懂…這就很尷尬了,那時候剛好也過年了,就先放下了flask,開始學html css js。這樣大概學了有20天吧,感覺自己基礎的東西掌握的差不多了,又回頭看flask,還是看不懂…只好硬著頭皮把書讀了一遍,又把代碼抄了一遍,慢慢的開始理解書里的代碼。期間學了SQL語句 HTTP相關的知識。
然後就已經到3月了(過年玩的好爽…),開始考慮畢設的事,又被同學逼著去找了本專業的工作,拿了一些offer,但是這個時候已經下定決心要轉行了,於是拒了那些offer,找了個python開發的實習,一直實習到9月初…
公司用的flask+react。在去公司實習之前,我的學習效率都是非常低的,去了公司之後,每天的休息時間大概是1點到7點。看了公司的代碼,我才知道真正的項目開發不可能像狗書那樣寫代碼,jinja wtform這些東西基本是用不到了,flask僅僅提供一個介面,而且還得考慮項目結構組織。於是開始學習寫介面、單元測試,公司用的windows,自己又把自己的電腦折騰成ubuntu,開始學習linux,同時開始系統的學習MySQL、redis、celery、docker。
後來公司前端人手不足了,又花了一個月的時間學習了js es6 react redux webpack,那段時間非常痛苦,理解不了redux,我只能一遍一遍抄著redux的源碼,不過後來也算是有所收穫。
再後來,自己要單獨開發項目了,一直聽聞vue對新手友好,於是花了4天時間學了vue全家桶,開始用flask+vue做後台管理系統。
9月初開始打算辭職來北京找工作,目前面試成功率100%,也可能是因為自己要的太低了…8000,有些公司最後給的offer比我期望的要高…未來的一段時間,應該還是在北京苦逼的活著,磨鍊技術。我努力了半年,終於能看見科班生的背影了。
初學者很難入門,會走彎路,我的建議還是,如果有必要,找個培訓班學學,往往能事半功倍,不過自己得學會篩選,我覺得 @蕭井陌 就挺不錯的,如果有機會,可以報他的培訓班跟著學, @蕭井陌 在b站也有錄播的視頻,感興趣的可以去看看。


我按照蕭大的Python Flask路線學習,現在已經找到了工作。
我是一名即將畢業的非軟體專業的大四學生,在大三的時候,我就開始自學軟體開發,剛開始學習C++和C,但是由於學習沒有正反饋,所以就沒有堅持下來,後來在知乎上看到蕭大的Python Flask路線,就跟著學習了。
在這裡,我就不累述我的學習過程了,就只談一談我的學習經驗吧。
1.Python基礎:Python語法簡單,容易上手,可以選一本Python基礎書《笨方法學Python》或者《Python學習手冊》認認真真看一本書,並完成書上代碼的編寫就可以了,最重要的是,要自己動手。
2.Python Flask的學習: 新手學習Python Flask的話會遇到很多坑,在這裡我說一下我遇到的坑:
1)Python字元編碼,在Flask學習中,盡量不要用中文,因為可能因為編碼問題而出現你不能解決的bug
2)Python 編寫環境,盡量使用Linux虛擬機上的Python環境來學習Flask,因為在學習Flask的過程中會有許多第三方庫要安裝,windows這方面就很蛋疼,比如剛開始在windows上裝虛擬環境的時候,折騰了一天,但是在虛擬機上幾個指令就可以創建好虛擬環境,所以強烈推薦用虛擬機做Python開發環境。
3)在Python Flask學習過程中,最重要的是掌握Flask,千萬不要本末倒置,前端可以學習,但是花費少量的時間了解即可,不要埋頭前端止步不前,還有在遇到實在解決不了的問題的時候,可以跳過(做完回過頭來在解決),掏糞大法,重點在快。
3.找到工作後,還要充電
雖然找到了工作,但這並代表就可以一勞永逸,要想要更好地發展,還是要打好基礎,下面是蕭大推薦的基礎方面的書:
1. 《演算法導論》 數據結構與演算法
2.《csapp》 計算機系統
3. 《sicp》 軟體工程
4. 《編程珠璣》
5. 《代碼大全》

豆瓣上有人整理出來,我就不一一列舉了蕭井陌編程指南書單,當然也可以翻閱蕭大的答案,上面都有(蕭大的答案集合我都膜拜了兩遍了,感觸頗深 逃)。


貼一個讓我感觸很深的蕭大的回答,我通常會以此自勉

PS:
在找工作之前,我是看過《演算法導論》、《sicp》、《csapp》、《TCP/IP》的,看完這些書之後,我覺得受益頗深,雖然只看了一遍,不能全部理解,但是我覺得自己進步不少,在找工作時也多了很多信心。從去年到今年,從校招到社招都拿到過不少offer,java 和 Python的都拿到過(雖然我不怎麼會java),所以學好Python+Flask,工作還是很好找的。
對於時間充裕的本科生來說,強烈建議按蕭大的編程指南編程入門指南 v1.4 - 蕭井陌的專欄 - 知乎專欄來學習,打好基礎厚積薄發,如果你是985學生,從此就可以揚帆起航、贏娶白富美走向人生巔峰了。


知乎上的這個問題曾經給過我一些啟發,讓我找到了一份Python後端開發的工作,現在特地回過頭來寫一點自己的經歷。

先簡單介紹一下自己的情況。我是非科班出身的,雖然高中讀的是理科,但是進入大學學了一個文科專業,之後就再沒接觸過理工科的東西。對計算機也是一竅不通,大學才剛開始接觸電腦,打字保存文件都不會。後來有了自己的電腦,就開始瞎搗鼓,至於編程課程還是大二的時候學過一學期的VB,之後再沒接觸過。就這樣的一個背景,我是從來沒想過自己以後會從事一份編程的工作。

2015年畢業後,我和一位朋友合夥運營一個非營利性機構。那時候逛知乎的時候,不知道咋就看到了一些介紹爬蟲的文章,很有趣的樣子,我好像就突然來了興趣,想著要不就學習一門編程語言吧,也算是個業餘的愛好。之後就開始接觸Python,而且還跟一個程序員朋友一些做過一個爬蟲的項目,不過之後就不了了之了。然而,就是這次的嘗試,讓我走上了程序猿的道路。

之後,就是看書學習了。因為當時我也沒想著要找一份相關的工作,只是單純地認為有趣就學了。由於當時工作也比較忙,所以也是隔一段時間學習學習。

大概2015年8月——2016年3月左右,我什麼都比較好奇,接觸的比較雜,看了一些Python的語法,跟著一些初級的教程學了一段時間。後來想著做數據分析也不錯,就看了Numpy的一些教程。在這期間,我的朋友跟我講過說是不是可以考慮為我們的機構做一個官網來提高影響力,我還看了看一些Wordpress的東西,不過後來就放棄了。還看過一些C語言的書,當時就是啥都想看的一個狀態,屬於自己瞎樂。

之後了解到使用Python有很多的方向,也知道了有Flask這麼一個框架,發現可以用來做web應用,那正好之前朋友提過要做官網,所以就想著要不使用Flask框架做個網站吧。然後就照貓畫虎,按照教程花費了一兩個月時間,做出了一個很醜的網站。在做的過程中,我開始想不能像以前一樣那樣分散地看東西了,還是抓住一門技術深入下去吧,而且既然現在接觸web比較久了也比較順手,要不就選擇web開發的方向吧。定了方向以後,就還是想深入地學習Flask,然後逛知乎向各位大神取經,無意就碰到這個問題了。

看了 蕭井陌 的回答,說可以看Flask的源碼。那就看吧,說看就看。可是一接觸到源碼,直接看不懂啊,雖然Flask 0.1版本只有700多行代碼,但是剛接觸下來完全不懂了。看了幾天後實在看不下去了就放棄了。而且那段時間我是處於一個比較焦躁的狀態中,因為學習了那麼長時間了,之前都是當做興趣的,但是一旦覺得自己掌握一點東西後,就萌生了換工作的想法。然而我是知道轉行還是存在很大的困難的,畢竟沒啥基礎,啥都不會,所以比較當時糾結。

糾結了一段時間後,自己還是放棄了找工作的想法,可能一個比較穩定的環境中呆的太久了就不想動了。之後,反正還是把學習編程當做是一個興趣愛好,有時間就看看,沒時間了就放一放。到2016年年底的時候,我和合夥的朋友出現了一些矛盾(其實這個矛盾在我們合夥之初就已經存在了),當時雖然還沒辭職,但是心已經不在那裡了,我開始考慮換工作了。不過由於之前看東西都是東一鎚頭,西一榔頭的,完全沒有靜下心來學習,壓力還是蠻大的。不過我想自己自學問題應該還是不大,我準備給自己幾個月時間。

2016年12月31日,我正式辭職,制定了幾條計劃開始學習:

- 看Flask源碼。之前Flask的源碼看過,可惜當時看不懂,可能後來深入地了解了Python的一些基礎,所以這次看起來好像也不是很難。為了了解一個web應用在運行了經歷了哪些流程,我用debug的功能,一個請求一個請求地觀察從用戶在瀏覽器中輸入一個URL,到最後呈現一個頁面,中間到底經歷了什麼。這個學習的過程我覺得收穫很多。

- 看Werkzeug庫。由於Flask依賴於底層的Werkzeug庫,很多網路協議處理的東西都封裝在其中,這也可能是之前我看不懂源碼的原因之一吧。看了這部分的內容後,結合著WSGI的一些東西,我算是對客戶端、伺服器、WSGI、Web應用有了一個大致的認知,也明白了它們之間到底是怎樣的關係。這一個收穫我覺得很重要,因為對於web開發的整個流程而言,我目前淺薄的認知認為其實也就是處理客戶端、伺服器、網關介面、Web應用之前的關係,而我們的所使用的web框架注重於Web應用這一層面,所以只要理解了以上的一些知識,選擇哪種框架開發都是沒啥問題的。

- 簡單過了一遍TCP/IP、HTTP的知識,至少知道了它們是怎麼一回事情。

- 了解了一些Linux相關的知識。因為我想以後自己要從事後端開發,那Linux是繞不掉的。針對這一塊,學些一些Linux相關的命令是一方面,其實最重要的是我想看看網路編程的知識,所以看了一些UNIX網路編程的內容,但是由於時間比較緊,所以後來就先擱置下了。

- 重新看了Python的語法和一些基礎的庫,特別是網路編程的庫。雖然之前也看過Python的語法和一些教程,不過當時有些概念沒辦法深入理解,現在看了Flask、Werkzeug等後,覺得似乎對Python的理解加深了一些,所以又重新看了一些書籍,加深了對Python的認識。在這個過程中,還重點看了Python的一些庫,特別是網路編程的庫。

之後,時間過去了有三個多月,其實我當時心裡還是蠻焦慮的,就開始投簡歷看能否找到。當時的想法很簡單,先試試水看看自己學習的到底到哪個階段了,如果有不足的地方就可以補起來了。投了一些簡歷,由於沒啥項目經驗,很多公司直接連面試機會都不給。最後,終於有一個公司打電話邀請面試。我記得當時第一次面試面了四輪,有一個筆試不是很難,第一輪重點問了資料庫、Linux伺服器相關的知識,現在回想起來回答的真是差勁,後面第二輪問了Python相關的一些知識點,勉強答了一些,第三輪技術問題比較少,面試官了解了一些基本情況後,問了還記不記得排列組合的公式,當時我說好多年了忘記了,不過基本的原理記得,就直接現場推了一番。後來HR面試過後就讓我回去等消息。我當時其實心裡特沒底,因為就面試的總體狀況而言,我表現的不是很好。過了一周後,這家公司通知我複試,說領導要面試。複試時,我是直接懵的,因為一上來讓我做五道演算法題,我一道都不會,沒辦法了就直接寫了一些思路。當時我覺得肯定沒戲了,很絕望。

之後,又面試了一家,這家剛面試完,之前面試的公司說可以給我offer,我還是比較吃驚的,沒想到居然要我了。當時我內心還是比較激動的,但壓制住這股衝動,傲嬌地說我考慮考慮,之後再給答覆。過了幾天,第二家公司打電話過來說複試,複試結束的下午就給我說可以給offer。反正最後比較了一下,選擇了第一家公司,5月22日入職。

現在,我已經在新公司兩個多月了。新入職後,公司使用的是web.py做敏捷開發,我負責一個項目的後端。這兩個月以來,分配給我的任務還可以接受,也不是很困難。不過經過之前的面試,我還有很多不足的地方,基礎很薄弱,這些都得以後補起來,任重而道遠啊。不過轉行成功,我還是蠻開心的,要說感謝的,還是要謝謝 @蕭井陌 給出的建議。

最後,再回到題目本身說幾句。我認為蕭井陌講的Python+Flask,並不簡單地讓你去學習一下Flask框架,然後照貓畫虎會寫一些業務代碼,其實從我學習的過程來講,我覺得通過Flask這個入口,去看一看它的源碼,理解整個Web應用的流程、理解從一個請求到一個響應的整個過程才是重點。這樣,對於Web開發而言,你學會的就不僅僅是Python+Flask了,其他語言和其他框架應該也是相通的。一家之言,如有不對還請諒解。


已找到工作,坐標北京,月薪5k。持續更新

=========15/12/09========
目前還沒打算找工作,正在學習中。
只有C基礎,本科考察課水平。
15年初剛知道Python這門語言,10月末看到這個問題下決心開始學Python基礎。11月中下旬看了幾天flask,有困難,轉html,css,js至今。期間又學了git基礎。每天上班空閑時間,下班回家時間看。

最開始沒學習之前,以為只靠Python+flask就可以了。實際上當然不是。只會這些是不可能找到你期望薪資的工作的。
web開發最起碼,
你要懂點前端,所以就得學html,css,JS,學完這些,
還得懂點後端,後端就要學資料庫,資料庫又有好多類型,MySQL,mongodb,nosql...
然後不能只會flask啊,還得看看django,tornado...

學的越多,不會的越多。

你去看招聘要求,要求的更多。當然,要求越高,工資越高。

如果決心當一名程序員/碼農的話,要做好不斷學習的準備,只會幾種語言是不夠的,只是為了賺錢也是不行的,可以想像後來的悲哀。最近對全棧工程師有了更多的了解,全棧並不只是因為會的多才叫全棧,而是不僅限於編程,為了實現自己想法,不斷學習,成為一名多面手。

我也不知道到底想說些什麼,總之,想轉行做碼農,要不斷學習,從內心接受編程,喜愛編程。

=========16/01/08========
先說一下進度
這個圖片就是從上個月到現在做的web的用戶界面截圖。各位大神勿噴。

文件結構:

上次進度是開始看flask web開發這本書,現在看到12章,都是照著書里一點一點敲得。
目前用flask-sqlalchemy資料庫框架,sqlite資料庫(遠程部署還沒看到也不了解),實現了一個簡易的博客web,功能包括用戶認證(註冊、登陸、登出、郵箱認證、用戶信息、更改郵箱、更改密碼、重置密碼等)、用戶角色(角色創建、許可權控制等)、用戶資料、發布博客、用戶間相互關注等。

下一階段計劃
flask web開發這本書還有一部分沒看完,而且還不能實現一個真正的博客的創建。所以下一階段計劃是:
1.flask:看完flask web這本書、看flask源代碼、flask官方文檔。
2.資料庫:準備學習mongodb
計劃用時一個月,達到入門水平(自覺已經是奢望了)。

總結
1.學習過程:主觀上並沒有太努力,並沒有太努力,元旦3天,每周末幾乎不碰,但是每周一到周五,每天都在看,只有學的特別少的時候,沒有中斷的時候。再說學習過程,開始就干看,書+源碼,最多理解但是沒印象,沒效果。後來決定自己建一個,從頭開始敲,每個字母都是自己敲得,沒有粘貼的,於是收穫了很多。中間有好多次不懂的時候,不懂分兩種:一種是某個點不懂,於是自己琢磨想辦法解決掉;另一種是大片的不懂,整個章節理解的效果都不好,一遇到這種情況我就從頭看(建議大家也這樣做),這樣有過三四次,直到第12章涉及到深入資料庫,關係型資料庫中多對多不理解,這次只看的第5章資料庫,深刻理解主鍵外鍵關係插入,就是今天,覺得有點提升。
2.心得:沒有什麼捷徑,編程就是個種瓜得瓜,種豆得豆的過程,付出了就有收穫。所以還是要踏踏實實敲代碼,好好學習,一點點的學。

=========16/04/02========
一轉眼都三個月了。
總結:多學習,尤其是剛入門的朋友,你掌握的真是太少了,一定要多學習。網上很多開源項目,要靜下心來去看看。

再說一下三個月經過:
學習了兩個月:
一月上旬至二月末,繼續用flask做博客,看源碼、官方文檔的計劃未實現,1月20號至2月20號,過年氣氛太濃厚,荒廢了。2月20開始看mongodb,官方文檔、pymongo文檔。至3月7日開始投簡歷。投了一周。

投簡歷、面試:(沒什麼乾貨,有點啰嗦,可以直接跳到本次更新末尾總結)

找工作肯定是能力和工作要匹配了,所以先說下個人水平,學過Python、前端、flask、mongodb。一句話,很low。

投簡歷平台主要有某智聯(招聘多,回應極少),某拉勾(招聘不少,回應及時),某boss招聘(小公司多)。
原工作在瀋陽,對工作城市沒要求,北上廣深均可。

深圳的空氣出名的好,受夠瀋陽的霧霾了,所以最開始投的深圳。深圳互聯網企業本來就比北上少(個人觀點,未求證),對工作經驗要求低的就更少了。投了幾天,一二十個,放棄了。

投的過程中,逐漸認清現實和自我了,定位月薪五六千即可,能有個好的學習平台即可。

然後投北上,放低姿態、降低薪資要求。

某拉勾有私信功能,就問如果全職達不到要求的話,是否有實習崗位,是否能降低薪資聘用等等。(我急需的就是個學習的平台嘛!)

一、開始投的深圳的,當時還意氣風發的樣子,後來都把我拒了,心就涼了。有一個說我的機械功底CAD建模他們下一個產品可能用到,表示可以去面試,約好20號之前去深圳。深圳就這一個,後來12號晚在北京機場的時候打電話,當時已經面完北京這個,又考慮到距離太遠就不想去了,他也很客氣的表示可能不太需要,於是作罷。

二、1月份投過幾個簡歷,嘗試的心態,有兩個聯繫我了,然後我就打電話詢問是否能在3月12號(周六)面試,第一個說下周再聯繫他,毫不猶豫的告訴我可以周六面試,他們不太看重目前水平,主要看學習能力和態度(說的有點過於好了,我有點懷疑),另一個說他們團建,沒時間,(我覺得有團建應該很不錯)。
PS:周六正常都放假的,如果很輕鬆同意的話那他們基本周六加班的。所以讓我12號那周聯繫他的,我就沒聯繫,他們基本周末加班的。

三、新投北京的,其中一個(就是現在的公司)表示有興趣,和hr簡單聊了之後,表示CTO(所有技術人員歸他管,就是我們的老闆)想和我qq語音下,想了解一下。
然後有一天中午,和HR、CTO qq語音了四十多分鐘,了解我目前的水平,問問個人的態度,目前的工作(他們知道我在瀋陽的國企,覺得換行業、換城市代價有點大)。然後我就說我已經下定決心轉行了,做好不斷學習的準備了,一定要去北京,3月28號入職和CTO談的時候才知道,他也是轉行的,以前做財務方面的,可能這一點讓他有點共鳴吧。
然後約定好3月12號(周六)面試。他們說周六不上班,但是可以安排開發主管來面試,聽到放假我就放心了。

四、我之前在Python-flask一個qq群里請教過一個人問題,那個人科班出身,有過幾年工作經驗,開始寫Linux內核的,後來去創業公司了,在上海,總之我覺得很牛逼可以請教就是這樣子。上一個北京那個CTO問我flask遇到大型項目如何布置?我不知道,我就問這個人。這個人回答之後,說他們公司現在也招人,我當然說好啊。問我個人水平,薪資要求什麼的,第二天晚上給我打電話,他技術把關,但是老闆決定是否聘用。他們是個創業公司,初期,12個人,一個老闆,這個人帶剩下的10個人。說開始讓我做些爬蟲的工作。下午6點電話聊了20分鐘,覺得可以。約好13號周日去上海面試。

五、上海還有一家,這個當時就明確寫明招聘Python flask。他們目前是angular+flask+mongo,我就想和我做的bootstrap+flask很接近,我還看過mongodb,就覺得很有希望,待遇8k-12k,5-6k都能接受,更別說8k+了。
我發郵件、打電話,說我只有四個月自學基礎,說了下我學過的東西,HR說可以來面試,我問她有多大把握聘用我,她說你要來面試才知道。約好13號面試。
面試這個後,想罵娘。。。。

計劃:11號周五晚上瀋陽上火車,12號周六早上到北京,面一次。晚上坐飛機到上海,13號周日白天面兩個。14號周一回瀋陽。請一天假。

變化
周五晚9點正檢票上車呢,上海那個qq好友給我打電話,說不用了,老闆臨時找了個人,決定不用了。我當時肯定我屮艸芔茻啊,一肚子埋怨,但嘴上就簡單說幾句,畢竟他就是傳達,決定權在老闆。後來我想,其實總好過假裝有意招聘,讓我去面試,然後把我拒了。總要比這樣好。所以,少了一個機會。

第二天9點到北京這個公司樓里,9點15兩個開發主管到了,他倆特意周六來公司面我,人家本來放假的。兩個人都很友好,進來先給我倒杯水,氣氛一點都不嚴肅,其中一個還是微胖那種,小眼睛,一直微笑,看著就很和善。面試除了技術上的,還問了我個人情況什麼的,從我這個角度考慮了一些問題。他倆說薪資待遇要和HR談,然後問我薪資要求我就報5k到6k,沒想到後來就是這個薪資了。。。但是我還怕要高了人家不用我,就這樣吧。面試結束就12點了,過得太快了,體驗挺不錯的,很愉快。

然後去機場,下午2點多到南苑機場,晚上11點上飛機。。。此處略去8個小時。

晚上到上海浦東機場,做大巴到市區,人民廣場,已經12點多,13號了。沒預定住的地方,在百度地圖上搜附近的青旅走到附近,在一個小衚衕,上海叫弄,有個網吧,花6塊買了一碗泡麵,還好有熱水,包裡帶的煮雞蛋還剩兩個,吃了。開始下雨了,還好雨很小,不大。青旅沒床位,換第二個青旅,還是沒床位,換小賓館、旅店,要麼沒房間,要麼150+,遇到最便宜的一個120,嫌貴,繼續找,找不到,120的沒有了。幾乎全滿,已經一點多了。兩點左右,找到個網吧10塊錢兩小時,環境有點差,各種味道有點大,找到人少的位置,坐下睡了,然後四五點鐘,網吧有衛生間,洗漱,走人,這時候才想到肯德基麥當勞。。。五點多去肯德基,等到6點買了份早餐24.5,一個漢堡,一杯咖啡,真難喝。坐地鐵去面試。

8點到公司附近,約好9點半面試,剛下過雨,又是早晨,微涼。一樓有門禁,可以輸入房間號,一直沒看有人進出,9點20打了公司座機,有人接了,告訴我他們都是刷開進,不知道樓下鍵盤怎麼輸,讓我試一下,不行再下來給我從裡面開門,試了四五分鐘,開了。坐電梯上去,那人穿秋褲給我開門,一進去一條狗直往身上跳,那種短毛的,不大不小的,很普通那種狗。還不溫順直叫喚,前爪子扒在身上,可能不是太臟,但我就覺得臟啊,還不能表現很反感的樣子。

告訴我剛給HR打了電話,讓我在一個屋子裡等著,過了幾分鐘,不到9點40吧,HR來了,跟我打聲招呼,say個hi,不屌我了,去逗狗、和那個男的聊天了,當時我就懵逼了,我想那我就等吧,又過了幾分鐘,讓我填個表,又去干別的了,兩個表,一個個人信息,一個技術問題。

個人信息比國企還特么詳細,政治面貌、民族、微信、qq、學歷亂七八糟的,最後還有一條聲明,保證信息真實,如果信息虛假個人負責,還得簽字。。。另一個技術問題,只打鉤和叉,代表是否同意。第一個是否怕狗(卧槽中。。),還有一個,是否同意PHP是最好的語言(卧槽,這個太難了,這個問題可以讓全世界的程序員打起來,我要隨便打個勾或叉會不會有生命危險啊)。

過了幾分鐘HR進來了,我還沒填完。。。告訴我說,不用填了,沒填的可以直接和她說(繼續卧槽。。。)。拿起我填的表,掃了一眼放在旁邊。
然後對話,
你只做過一個項目是吧(老子之前發郵件,打電話不都說了嗎?)
你是自學是吧(持續懵逼中。。。)
最後說,我覺得你的水平有限,應該多做幾個項目練習。

我們需要具有獨立後台開發能力的人,


嗶了狗了,當場石化,為什麼不早說呢。。。

媽個雞的,某拉勾,某上海宿朴,坑爹。。。

所有面試結束,就兩個,割==============================

第一次來上海,因為面試,印象極差,周日晚上覺得來一次,還是去一下外灘吧,看了下,回到青旅,周一早上退房,坐地鐵去機場。
路上北京HR問我是否決定入職,我說決定了,談薪資,到手5k,13薪,五險個人不扣,公司交全部,沒公積金,水果不斷,一個月試用期,工資4k。3月末入職。

回瀋陽,離職,16號周三交離職申請。所在技術崗位,7000人國企,之前感覺不到國企行政方面級別有多明顯,離職時候感到了,佩服。
寫離職報告,和直系領導室主任談,他簽字,交到人力,說人力資源部部長不在,不能請示,讓我等著。周五下午人力那老頭子告訴我室主任簽字不行,要設計院(我們部門)大領導,和管設計院的集團領導簽字才行。
18號周五下午院長回家了,21號周一早上簽字,下午看公司內部通訊軟體上集團經理上線了,立馬從11樓到16樓找他簽字。送到人力,讓我等著,得請示人力的部長。周二,讓我去,說可以了,一堆表簽字,給我兩個表,一個我們院長和集團工會簽字蓋章,另一個15個部門簽字蓋章,子公司財務,集團財務,工會,黨委,管電腦的,管薪酬的,管檔案的,管房產的,管飯卡的。。。
三個樓來回跑。還算順利。

退了房子,收拾好個人物品,和同事吃飯。26號 周六晚上火車,來北京,27號周日到,當天租好房,6平米,朝北,有窗戶,一月1300,中介費1000,上班步行20分鐘。

入職後:
28,29周一周二兩天搬家,周三晚上讓我做個東西,給財務做個財務預算系統。心驚膽戰中。。。
每天干夠8小時即可,打卡時間9點到10點都行,基本都在9點半之前。下班時間基本在6點半之後。
我們是技術部,一共20人,老闆就是那個CTO貌似有兩把刷子,兩個開發主管10年經驗,360過來的,他倆對CTO評價很高。

總體還好吧,就是工資低點,適應中。。。不知道同事什麼薪資水平。感覺差距有點大。

總結:(針對像我一樣新入門的朋友,總結順序與重要程度無關)
1.學習:多學習,懂得知識真的很有限,盡量深入學,少而精。


2.思考:
a.思想準備:下定換工作的決心,做好長期的打算,深思熟慮,不要三分鐘熱血。
b.心態:不要急於追求薪資待遇,能力和薪資肯定是成正比的,這個行業流動性和平台都特別大,是你的終究是你的。
c.我覺得新人還是找個大點的平台,或者可以跟隨的團隊,有利於個人的成長發展。


3.找工作:
a.強烈極其不推薦裸辭:找到工作時間不能保證;找工作期間,很煎熬,對人的心態影響(消極)很大。
b.在校生才有實習,畢業後就不能有實習了。
c.盡量多問,多了解,不要考慮不好意思,問了會不會不合適什麼的,總比以後吃虧強。
d.薪資怎麼談我也想知道,大家知道的話可以私信告訴我。
e.如果找工作不順利的話,可以適當降低要求,不要著急,從長計議。


從我收到的反饋來看,有 10+ 通過這條路子找到了工作(當然不是說只有這幾個人,還有很多人不愛聯繫我,人之常情),當然這也是意料之中的事情,我沒有必要在這種事情上信口開河,當時給出那樣的意見也絕非隨口說說,我可是很認真的。

只是我沒想到的是他們動作都挺快的,很多人一個月就搞出來換工作了。。。

由於不少人是從嵌入式跳坑出來的,我感覺我挽救了很多生命,應該可以攢下不少積分,以後上天的時候兌個 VIP 座應該不成問題


一個人來深圳剛滿一個星期,昨天也正式確認準備入職的公司了,下周一過去辦理入職手續,薪水6k,公司在深圳離市中心較遠的一個工業園,不過公司能提供住宿這點非常不錯。雖然跟這個問題下的大部分回答相比6k算低的了,但是作為一個應屆畢業生這條件我已經很滿足了。

寫這篇回答的主要目的是分享一下自己自學的歷程,以及自學過程中的一點點思考,以及找工作的過程。希望能夠給同樣走在這條路上的同學提供一點點參考的價值,同時也算是在這個階段性 的時間點寫下這篇帖子給自己一個總結。由於,這只是我個人情況,可能並不是最"正確"的學習方法勒,僅供參考。最重要的是還要感謝下 @蕭井陌蕭大,通過他的回答以及專欄,獲得了許多指導性意見,以及提供QQ群可以和許多朋友溝通交流(當然,大部分時間群里都在吹水扯淡 :) 現在還不知道蕭大專欄編程入門指南的可以點擊這裡編程入門指南 v1.4 - 蕭井陌的專欄 - 知乎專欄

回歸正題。先介紹下背景,16級本科應屆生,畢業於武漢某非211,985普通一類大學,專業是市場營銷。未參加過培訓班,本專業自然也不會有計算機相關課程。大三開始自學,完全零基礎。關於從零基礎的自學過程,我去年也寫過一篇總結帖子對於編程零基礎,第一個語言是 Python 的人有什麼建議? - 楊晨昊的回答這篇帖子簡單總結了下我從一個純小白到踏進編程世界大門的過程,有興趣的同學可以點進去看看(若對你有幫助,歡迎點贊。。。無意間發現這篇文章有將近40收藏,堪堪11個贊,心塞。。。)

自學編程應該是一個理論(看書,看技術博客,官方文檔等)加實踐(寫項目)或並行,或交替循環的過程。新人應該實踐為主,多實實在在敲多碼代碼。另外我記得在哪看過一個比喻,把學習編程的過程看作是用水澆濕很厚很厚的紙的過程,剛開始水潑上去,只是會浸濕一點點,只要你持續不斷的對著一個位置不停澆水,很快就會把它澆透。自學編程不要老想捷徑,怕走彎路,keep coding keep thinking就行了,反正我是這麼想的。

接下來緊接著我的上一篇總結貼繼續寫寫我的自學歷程,並不是嚴格按照我的學習先後順序勒。

上篇帖子寫到我開始看sicp這本書,後來我還是把這本書硬著頭皮啃下來了,雖然只是看了前三章,前三章的習題大概做了百分之七八十的樣子。新人學這本書我的建議是看書同時一定要做習題,習題盡量做,先自己想如果你想了十幾二十分鐘還是一點頭緒都沒有無從下手的話就果然去看答案了。然後要做的就是把答案理解之後丟一邊去,自己按照理解的思路把答案給再寫一遍跑一跑,這樣學會比較好。學這本書的好處蕭大指南里說的很清楚了勒。不過純粹為了找工作的話不一定要看這本書,不過就我個人而言的話,學習這本書恰好使我後來拿到這個offer的面試過程中產生了個小插曲,這裡小小賣個關子。

然後就是Flask Web開發:基於Python的Web應用開發實戰 (豆瓣)這本書,相信看這篇帖子的大部分人都在擼或者是準備擼這本書。這本書我前前後後差不多是看了兩三遍吧,我的建議是先什麼都不管,硬著頭皮先過一遍。這時候你會發現你有很多很多東西都不懂,沒關係,想想哪些方面你不懂,這已經是邁出一大步了。從你不知道你不知道,到你知道你不知道。然後可以放下這本書開始補齊相關知識,例如

  • html css 基礎知識 bootstrap的基本概念
  • http協議基礎知識
  • 資料庫相關基礎知識

差不多這些東西,當你把這些相關知識學的差不多了就可以第二遍看這本書,這時候看的實例代碼基本都可以理解他的邏輯,你會發現相比第一遍看清楚許多,問題少很多都能看懂,同時可以在ide里敲一敲書上的代碼跑跑。第三遍就不是直接看了,而是從實際項目開始入手,先構思你要做個什麼東西什麼功能,在ide裡面直接開始上手寫代碼吧,然後思考書里相對應的功能章節是怎麼做的,去借鑒書中相應章節的代碼。當然作為新手肯定是不能好高騖遠的,從最簡單的功能開始一點點的實現就好了。雖然本質上這還是抄書上代碼的過程,但是多了自己思考的過程,體會會更深,同時你不斷加新功能,不斷出現bug,調試bug這也是一個很好的學習過程吧。(這就是我學這本書的大概的過程,比較笨,僅供參考)

上面這兩本書是我花時間花的最多的兩本書了,下面列一些部分我看過的覺得有用的書以及一些看的比較輕鬆有趣的書。

  • [Python基礎教程(第2版)]
  • Python核心編程
  • 編寫高質量代碼 改善Python程序的91個建議
  • [Python.Cookbook(第2版)中文版]
  • HTTP權威指南

有趣的書

  • 穿越計算機的迷霧
  • 浪潮之巔
  • 黑客與畫家
  • 冒號課堂

另外本著興趣驅動,同時提高自己動手碼代碼的能力,往爬蟲方向也了解過一點知識,寫過幾個小爬蟲,大概的過程是這樣的。

  1. 通過搜索引擎找找網上的爬蟲基礎教程的資料
  2. 一行代碼一行代碼的理解並抄了一個網上的糗事百科爬蟲,順利跑起來(估計很多學習爬蟲的同學都搜到過這個糗百爬蟲)
  3. 自己動手實現了一個1024圖片爬蟲(你懂的。。。"興趣"驅動! 不能多說,說多要被和諧,: ) 功能其實挺簡單的,就是爬論壇最新頁面的所有帖子的圖片抓取本地保存。當時都花了我整整三天才搞定,不過寫完之後成就感十足哈。
  4. 跟著慕課網教程寫過一個百度百科爬蟲,主要學習到了簡單面向對象風格的爬蟲代碼
  5. 自己實現了一個拉鉤網招聘信息爬蟲,也很簡單,就是將python後端開發類目下所有的招聘信息爬取到本地excel表格中查看,連登陸都沒用上

這裡我提一個最近學來的一個理念,叫做GSD原則,即Get shit done !直接上手做就好了,遇到問題,思考,google,思考,解決問題就好了。況且我們這些新手遇到的問題都是無數前人都遇到過的,不會有什麼高深的理論,要相信自己能夠解決問題勒。

然後我在學習的過程中搭建了一個個人獨立博客valar morghulis,記錄下自己的學習筆記,偶爾寫寫東西。然後我的部分項目代碼都丟在了我的yang-chenhao · GitHub,價值不大,主要是為了學學git跟github的使用。GIT和github我覺得新手還是有必要學一學。

暫時先寫到這裡,關於找工作過程,過兩天再來補充勒。說個小插曲,蕭大第一期web培訓班我都積極響應,踴躍報名了,奈何蕭大太受歡迎,報名人數太多結果我沒報上。不過現在看,暫時也不需要報咯,沒法做蕭大徒弟咯。

------------------------------------2016.10.26---------------------------------------------

抱歉啦各位,說好的過兩天補充關於找工作的下篇勒,一拖就是將近三個月,現在也是時候把這個小坑填填了。最近這幾個月算是各種小插曲,波瀾不斷,但總的情況來說的話,基本實現了相對於我大三決定自學編程,畢業決定來深圳,所期待的一些東西,目前的情況談不上有多好,但是一切都在向好的方向發展,我相信。

好了,之前我分享了一點點關於自學經歷,下面說一說大家最關心的找工作吧。還是上文中提到過的,我只能從我個人的實際情況,經驗背景,實際經歷感受出發來談,有一定的局限性,大家可以結合我上文中寫出來的背景情況參考下即可。

不存在那麼明確的一條線說ok過了線就能找工作。這也是很多同學喜歡提問的一點,包括我自己當初也會有這種考慮,想著我要學到什麼地步才能找工作勒。自學編程轉行對於大多數人包括我在內很難得一點就是學習的過程中很難受到正反饋,於此同時,對於當前階段能力的你來說眼前又看不到那麼一個清晰的目標,一個入門程序員所要求的基本能力。因此,你必須找到點編程的樂趣,不然是很難堅持下來的。同時可以參考我的情況,需要對自己有信心。

面試是一個多重因素影響的事情。提到面試,說來慚愧,其實我自身的能力也還是非常不足,演算法與數據結構的基礎還不夠好,面試臨場發揮能力也不夠好,所以我也就是從經驗出發說兩句。對於咱們著這自學轉行的同學來說的話,絕大部分人第一份工作應該都是面的一些中小公司,就我個人之前的五六場面試經驗,中小型公司面試內容是各種各樣的都有,常見的會問基礎的演算法與數據結構,有些會問到特定的一些框架,我之前基本都是投的python開發崗位,因此會問到djingo,tornado之類的框架,有些也會問一些語法細節,就python而言,最常見的就是對裝飾器的理解。有家公司面試甚至會問許多產品方面的東西。同時你的一場面試的結果,你自身面試表現是一個方面,公司自身情況也是很大的一個方面,有些公司在特定的階段可能十分的缺人,如果你了解的一點基礎知識恰恰是公司當前業務需要的,可能就會十分順利。

進入公司之後你要學的東西更多,同時效率會比你自學高的多。這也是為什麼蕭大簡單粗暴讓大家學完flask這本書就去找工作吧。吃透這本書上的內容相當於一塊敲門磚,要是能夠靠自己的自學把這本書上的內容全部吃透,是可以找到一份工作的。當然,這些知識是遠遠不夠的,找到工作不是你的目標,是學習真正開始的開始勒,是一個新的起點。同時,絕大多數情況下,作為一名轉行的應屆生(無相關經驗非應屆生)公司把你招進來都不是看在你目前會的那一點點知識,而是你對這方面的興趣,以及你的學習能力。

關於投遞簡歷。我之前是只在拉鉤這一個網站上投的,簡歷內容也都是如實填寫的,寫寫你基本掌握的知識點,你寫的小項目,當時由於沒有工作經歷,簡單寫了寫自學的過程,基本沒有誇大。就我這樣都能收到面試機會,大家要對自己有點信心: ) 另外對自己能力有信心的同學也可以去boss直聘上試試,就推薦這兩個招聘網站勒。時間比較充裕的同學好好補補演算法還是很有好處的,慚愧,自己這點上還做的不足,也要繼續加油了。至於怎麼學,大家去多翻翻蕭大 @蕭井陌 的回答吧。

最後祝大家都能找到滿意的工作。

各位看官要是覺得對你有用,收藏前能順手點個贊就極好了。 : )


===============================================

2017/09/09更新

工作半年了,四月份畢業到現在,已經轉Java開發了(目前的工作是純後端,少量web開發,大量的圖形計算類任務),之前的學習方法還是給工作留些不少後遺症的,所以來更新一下。

發現的一些問題如下:

1.編碼能力弱,前期寫代碼的速度慢,經常寫幾句就需要google,原因是這種學習方法並沒有很好的鍛煉編碼能力,也就是說,這種學習方法的重點是CS的一些概念的理解(比較表面,並沒法深入),所以說真的,我能找到工作一是運氣、二是學校學歷、三是校招沒有社招那麼嚴格、四才是我自己的能力。所以奉勸各位,這個方法的適用性是非常有限的,可能比較適合我的情況或者一部分在校學生轉CS,但對社招的參考性應該不大。

2.寫代碼不夠嚴謹,前期會出現看結果編程,就是對自己寫的代碼不是足夠的清楚為什麼這麼些,會出現看運行結果對了就認為自己代碼寫對了的情況,還沾沾自喜(這樣做很容易留坑),這種浮躁的心態和習慣非常非常的不好。非常慶幸我遇到一個很負責的師傅來review我的代碼,手把手的教我怎麼做,

3.基礎不夠紮實,比如工作中會涉及到計算機圖形學相關的任務,可我作為一個半路出家的程序員,在校期間並沒有學習過這些東西,所以很多概念都不懂。又比如涉及到代碼的重構,我給出的設計會存在比較多的問題(因為沒有學過設計模式)等等。這部分其實對於轉行的人來說,還是無法避免,我也想不到啥好的解決方法。


找到工作後的狀態:

找到工作並不是學習的結束,而是一個更艱苦的學習過程的開始。開始工作之後才會發現,以前真的有很多很多東西都不懂或者說理解的不夠透徹,要學習的東西非常非常多。

所以雖然公司不怎麼加班,但我基本沒什麼時間,上班的時候請教老員工,一般做任務一邊學習,下班了自己看書惡補,寫代碼,寫博客,基本上都沒什麼時間出去玩。剛開始還有點不適應,但我現在想清楚了,要提升自己的能力,要升職加薪(// 迎取白富美?? 不存在的( ̄▽ ̄)"),這一兩年我就準備這麼過了,學習學習再學習。

==================================================================

以下是原回答:

================================================

哈哈哈哈哈哈哈,圍觀了太久,終於輪到我來裝逼了。

回答的目錄如下:

  • 背景
  • 找工作的結果
  • 知識點以及學習過程
  • 其他

背景

先介紹以下自己的背景,本科自動化,學過一些C語言,大四學了Python玩過pandas,會一些Python的基礎語法,但是對多線程、多進程、全局解釋鎖一竅不通,Python的裝飾器、生成器也是停留在會用但不知道怎麼實現的階段,一句話,就是很菜的啦。

碩士專業集成電路設計,數字電路設計後端,形式驗證和模型檢驗方向。唯一的一個項目跟論文有關,用Python的PLY包分析Verilog HDL語言並應用謂詞抽象演算法,跟Web開發完全無關。也並不懂什麼數據結構、http、tcp/ip什麼的基礎知識。碩士二年級的時候看到蕭大的回答,開始學習Python + Flask。

找工作的結果

現在研三,校園招聘秋招快結束了,軟體方面的,互聯網公司offer拿到3個,一個爬蟲崗,一個後台開發,一個是運維管理平台開發(用Tornado)。待遇基本差不多都是13~14K/月 + 部分補貼 + 部分期權,其他的福利有差別。集成電路設計方面的公司的招聘,就不說了,跟主題無關。

知識點和學習過程

以下的基本上都是根據我在筆試和面試過程中,所考到、問到過的知識點統計出來的,其他的學得亂七八糟的、不重要的東西就省略了。

資料庫:

    1. MySQL必須學,至少要懂開發一個網站,你需要哪些表,怎麼設計外鍵,怎麼設計索引。如果要聯合查找,你要怎麼從這個表開始去查找所有的記錄。這些東西,在Flask Web開發那本書里有提到,必須要理解那本書裡面是怎麼設計那個資料庫的models的。
    2. 要能夠手寫SQL語句,知道為什麼索引不是越多越好,知道視圖、觸發器是什麼。這部分推薦一本書,MySQL入門很簡單 (豆瓣) ,認真看完2遍以上,把課後題多做幾遍,所有的SQL語句都手寫下來,然後搭建MySQL環境去練習,讓自己熟悉這些語句,最後把一些重點的概念,抄錄下來背熟,面試就基本沒啥問題。
    3. SQLAlchemy,這個我學的不多,沒看過文檔,可學可不學吧。

Python語言:

  1. 去看廖老師的教程,Python教程,特別是多線程,多進程,生成器,非同步IO,協程,Socket編程,裝飾器、生成器這些部分,面試和筆試如果想考察你Python基礎,基本上就問這些東西。
  2. 上面的部分如果覺得廖老師的教程比較粗淺的部分,google之,做筆記,把所有的細節的、重點的內容整合成筆記,理解並背熟。我用來檢查自己是否掌握的標準是:給自己一個多線程的概念,可以在白紙上寫出代碼例子,Python裡面多線程的特性,與多進程的區別等等。就是你可以把自己當成老師,給你一個多線程的的概念,你可以整理自己的思路,並通過例子等形式來想學生解釋Python里多線程的知識,把你所學過的東西用自己的語言以及代碼的形式表達出來。
  3. 第二點所說的能夠把自己懂的東西表達出來的能力,在面試裡面非常非常重要。

Web基礎:

  1. HTTP協議,這個必須學的,post、get、put、head、delete這五種HTTP方法以及它們之間的相同點和不同點;http1.0和http0.9的區別等等,推薦HTTP權威指南 (豆瓣),不需要全部看完,只需要看完第一、二、三部分,這中間的」集成點:網關、隧道及中繼 「以及緩存等等內容,可以先略過不看,同樣的方法,這本書看2遍以上,把重要的基礎概念用紙筆抄下來,整合到一起,然後背熟。
  2. TCP/IP協議,沒怎麼看,只是HTTP權威指南這本書里提到過一些,也背熟了,所以這部分我學得其實不多,但是面試夠用了。
  3. WSGI,這個基本上是Python網路開發中最重要的點,伺服器怎麼調用中間件以及應用層的代碼,你的應用怎麼利用伺服器軟體(apache之類)接收、解析HTTP請求,發送HTTP響應,這些東西都和WSGI有關。這個書上講的少,我都是google各種博文,然後自己不斷的做總結學習的。
  4. Restful API,這個現在是很火的了,書上描述的也是很少,所以google各種博文,自己總結。

數據結構:

  1. 看完數據結構與演算法:Python語言描述 (豆瓣) ,書里出現過的代碼,我不是用打字的形式練習的,而是紙和筆一行一行抄下來理解的,兩遍以後我基本上可以默寫出書上的代碼。
  2. 刷Leetcode,easy部分的題我刷了3遍,medium刷兩遍,差不多都能背下來了。hard沒碰,反正如果考到我就直接說不會,那種難度的題目也很少出現在面試筆試中。

Flask:

  1. 看完這本書,第一遍看書的時候,書裡面的代碼抄了一遍,第二遍自己重構,第三遍加了一些功能,繼續重構。
  2. 一個提醒:不要多花時間在前端上面,頁面難看就難看,無所謂的,前端太花時間了,當然你要是想轉前端,當我沒說。
  3. 看源碼,剛開始肯定看不懂,去網上搜人家看Flask源碼所做的筆記,對著理解就行。源碼我沒全部看完,就找到工作了,Oh~~~~~~~
  4. 面試過程中其實很少問Flask方面的內容,我的理解是,實際上你學了Flask,只會用Flask提供的API,一點用都沒有,隨便找個大學生,擼兩周就會了,根據書本寫個博客什麼的,其實一點技術含量都沒有。重要的是Web開發基礎知識!!!
  5. Flask的源碼,必須看,如果問Flask的內容,基本上都會扯到Flask裡面怎麼實現的,比如問你Flask裡面是怎麼把視圖函數和url聯繫在一起的,你只回答用用@app.route()裝飾器那是肯定不行的,怎麼著也要能說出Flask用了字典來存儲{url:endpoint}, {endpoint:function}這兩個映射關係,從而把url和視圖函數聯繫在一起的。

學習方法:

  1. 額,我的學習方法簡單粗暴一個字:背!
  2. 我來解釋下為啥我選擇這麼簡單粗暴的方法:因為我是零基礎啊,我必須這麼干。不背熟語法你面試的時候怎麼搞白紙編程??不背熟http方法你面試的時候百度??不背熟各種數據結構的實現,不背熟八大排序演算法你面試的時候給面試官演示怎麼從網路上抄別人的代碼???
  3. 好了,不咆哮了。正經解釋一下,因為任何行業,都是有門檻的,有些非常非常基礎的東西就是門檻,你是必須很熟悉才行的,比如學英語,你必須背熟26個字母。學編程也是這樣的,是http方法、基本的數據結構、語法這些東西構成了代碼的上層建築,你在討論設計模式、面向對象編程之前,必須對這些東西信手拈來才可以,否則你寫十行代碼還要去google找Python的語法,哪個老闆瞎了眼會給你工作??要是有,請聯繫我。。哦,你TM跟我說他是你爸??滾!!
  4. 不開玩笑,繼續解釋,為什麼科班出身的沒見他們背呢?因為他們平時耳濡目染、潛移默化之間早就背熟了這些東西啊,這跟母語環境是一樣一樣的誒寶寶們。想在一年內追上他們好多年的積累是不可能的,想加快這個積累的進程,就只能把這些東西集中到一起,去死記硬背了。
  5. 其他的沒了,這個方法只針對我自己這種特殊情況,你們背出了問題、背書背傻了別來找我。

其他:

    1. 一點點感悟,覺得自己差的還是很遠,學習過程中,越來越明白蕭大讓我們去搞懂那些基礎知識、原理的重要性。所以最近在根據蕭大專欄給出的編程學習路線進行學習,文章在這兒請戳知乎專欄。
    2. 媽的我討厭Java,但是工作要去學java,最後還是逃不了java這個坑。
    3. 我拿到的工資,不具備參考性。。我本科太原理工,渣211,碩士浙大,所以,起點還算是不錯。。一般的要是轉行很難拿到的工資。。
    4. 我找的工作是有爬蟲崗位的,是因為使用過scrapy框架爬過知乎,學習過程不多說了,就是看了幾遍scrapy的官方文檔,就開始上手做了,遇到坑就google,差不多這樣。。分散式爬蟲推薦兩個項目:https://github.com/LiuXingMing/SinaSpider,https://github.com/ResolveWang/weibospider,能搞懂其中一個項目,找工作應該沒啥問題的

哈哈,現在輪到我回答這個問題了,25歲整,暖通碩士畢業,轉行成功後入職半月。這個帖子在我轉行過程中很有激勵作用。


辭職

2016年10月24日,剛剛好25周歲整,在奔三的路上已經走了一半。同齡人很多都已結婚生子,而我卻還一事無成。後悔讀研浪費了三年青春,幾乎所有同學讀研都是為了混文憑,鮮見有真正熱愛學術的,這樣的環境怎能不懷疑教育的意義?有人說過:

畢業了,獨立賺錢生存,才能具備自己獨立的人格。

深感於此,若是早畢業三年,三年前可能便轉行了。轉行雖是人生最大的決定,但確是受到內心的感召,如瓜熟蒂落、水到渠成,沒什麼猶豫的。

(真正的粉絲,不說也懂)………一個暖通人怎麼就去搞計算機了?

接觸編程的那年

轉行IT,坦白地說,有一部分因素是基於薪資待遇及未來發展的考慮,從我上大學(09)年開始,移動互聯網開始顯露頭角,從塞班到IPHONE的橫空出世,再至安卓的異軍突起,有幸見證了人類社會從未有過之信息革命。

其實在初中時,長大編程寫厲害的軟體就已經是我的唯一夢想,程序員是我那時直至現在想像中的最有趣的職業。我對於編程是天然熱愛,98年?接觸Window95,震驚於點點滑鼠竟然可以操作電腦做這麼多神奇的事情,立志長大要學習這個。在02年六年級時第一次接觸BASIC語言,看的津津有味,感覺到編程也是挺簡單的嘛。很入迷但苦於沒有電腦,因為是農村,家庭條件一般。03年家裡才買電腦,06年時初中畢業,激動的去書店買了經典的21天教程—《21天學會C語言》開始學習,也正是這本書,讓年輕的我畏懼了編程。


年少無知的我,並不知道有一種生物叫作標題黨,天真的我以為C語言真的可以21天學會。在暑假裡我每天分出半天來學C語言和彙編,在編譯器上實戰編譯,前面幾章的概念確實很簡單,很輕鬆。直到後來接觸指針、鏈表時,便很吃力了,每天都看不完,硬啃後對概念也很疑惑其作用。 沒有互聯網搜索,也沒有老師指導。 暑期快結束時,我有些絕望了:

難道我費這麼大的努力只能在一個黑框框里printf操作嗎??? 這些代碼又怎麼能夠操作計算機去干那麼多複雜的工作?? 究竟是何等天才才能在這種枯燥的條件下體驗到樂趣,同時還能用這些寫出操作系統來?

那時候我絕望的認為,不能快速掌握是我的智力不夠。 既然這本書叫做21天學通C語言,那麼便真的有人能夠21天學會並熟練使用,編程應是少數天才做的事,我這樣的愚人沒有天分。我對學習的認識簡單到認為所有知識便該如初中的課程一樣,一看就會,努力是笨蛋做的事情。 用某句話來說,我真是TY,TS,SN~

倘若能有一位大牛在那時候指導我一下人生經驗:「年輕人,沒有人能在21天內掌握C語言,建議你從VB或Python入門」。或許,我也不會與編程失之交臂,一誤十年。 我非常羨慕知乎上那些很小接觸編程而且堅持下來的,比如 @vczh ,如果我能和他一樣從VB入門,與GUI交互,一開始便能體驗到編程的樂趣,那該多美好啊~~

認識自己

碩士畢業後,從事我的本行暖通。

說實在的,我對暖通沒什麼興趣,七年渾渾噩噩。
大學期間,我是一個同學眼中的GEEK,事實也確實如此:

大三建立大學貼吧,學校里小有名氣; 炒比特幣,LiteCoin挖礦,在虛擬貨幣中小賺一筆; 喜歡硬體、修理技術好,學院皆知; 喜歡玩數碼產品,攝影PS技術不錯; 單片機、Arduino等也略懂一二;

相比之下,我對暖通的學習僅僅淺嘗輒止,及格就好。 這種學科,一點兒也不好玩,未來工資低發展不好,努力學習沒有回報。
我甚至懷疑我是否並不適合學習,懷疑我的毅力及恆心。

畢業才四個月,懷念起校園生活已是恍如隔世。
夢裡不知身是客,一響貪歡是我畢業的感慨。
畢業之後,從事枯燥乏味的圖農工作讓我焦慮於未來發展。
與此同時,同事們想的只是過簡單的日子,下班一起打遊戲。

他們的身上,是我幾年後的影子嗎?

我這樣問自己,我想相較於養家糊口我更需要的是一份真正熱愛終身的事業。


重新接觸編程

公司部門有一個遺留的Access資料庫,用來計算空調箱的物料清單,有一些功能並不理想,我喜歡鑽研的性格又促使我想要對其進行改造分析,自費買了本Access教程,看了一個多星期發現簡直so easy,便開始改造。直到現在我特認為VBA易學易用,不區分大小寫,沒有亂七八糟的花括弧,適用性很廣。Excel AutoCad Access等,是非IT從業者最值得學習的腳本語言。接觸VB之後,我每天都在研究各種功能的實現,沉迷於此以至於廢寢忘食,甚至於夢裡也在敲代碼。

一個月很快,我弄出了新版的BOM系統,支持料號快速修改,支持表格製作,快速排版,物料統計等全新功能,尤其是物料統計,用這個統計空調箱物料的同事,沒有再漏過物料。做這個小軟體的過程中,我學習了SQL,理解了面對對象編程的概念,後面學Python上手也比較快。同時也意識到:

編程是可以很快出成果的,從需求出發去解決問題竟然如此的有趣!!!

Python入門學習

我從今年8月開始Python學習的,在此之前,我有VB、C、資料庫的基礎。起先,並沒有打算從事Web開發,更希望可以選擇數據挖掘、數據分析的崗位,加班太多,學習進度比較緩慢。

九月中旬,原工作試用期滿轉正,我憤怒但無奈地面對了一個問題:

轉正後的薪水竟然達不到招聘時的最低承諾。

與部門總監談話之後,他告訴我:部門工資都不高,新人工資上調空間有限,需要考慮部門內部平衡。他的話一點不假:

部門裡幹了五六年的主管工資才6K多!!!儘管離開了這個主管,公司會遭受巨大的損失,但是他在這家公司里沉澱多年的機械設計經驗在其他公司毫無作用。因此公司不擔心他跳槽,剝削他的剩餘價值時毫不手軟。

我立即意識到:

這家公司是一片平靜的沼澤,如果我繼續留在這兒,會越陷越深。我所有學習的經驗,當換一家暖通公司之後,便一文不值。

我對這家公司立刻不再抱有任何的期望,即使工資X2,我也絕不願將自己綁在這兒。那段時間我的腦子裡只想著如何才能快速轉行?怎麼才能逃離枯燥的工作?每一天,我覺得自己在持續貶值。

既然編程那麼有樂趣,遠甚於我的工作,為什麼不去做呢?人沒有夢想,和鹹魚有何區別?

我一改以往工作狂(七月八月時曾連續加班40天,中間沒有休息過任何一天)的表現,9月20日後我拒絕了主管與總監要求的加班,傍晚下班準時走,吃完飯後立刻回宿舍學習。隨著學習的加快,在知乎上看了很多相關文章後,我發現Web開發的門檻較低,比較適合我這種菜鳥。根據蕭井陌的教程,我選擇了從Flask入門。

這一段時間,每天都反覆的看知乎,搜尋一些轉行成功人的經驗,看了一遍又一遍,雖然愚蠢,但每個轉行之人內心想必也曾如我般彷徨迷茫吧?

9月28日,《Flask Web開發到手》,開始Flask的實戰,國慶七天在家每天痴迷編程,用一個小段子描述自己當時的狀態:

編程入魔,不能自已。
晨思暮想,晝夜交替。

入門階段內的實際操作

蕭大的 編程入門指南確實不錯,其中推薦的MIT編程導論與推薦的書籍,都是經典。美中不足的是,我覺得這份教程更適合有整片連續時間的學生學習。工作之後時間碎片化,SICP這本書在斷斷續續的時間內我真的啃不下來。

更適合我的是有反饋的學習,我的理念是:

需求驅動學習,將粗粒度的大目標細化成很多小目標,分而治之。

同時,當我在微博上表達了我轉行的目標後, @葛曉 同學在微信上分享了我一份GitBook教程, 程序員的自我修養。看完之後,我發現了最有價值的一篇好文程序員技術練級攻略,文章的實戰步驟從實際經驗出發,細化的比較詳細, @陳皓 大牛眼光也相當有前瞻性。跟著這樣的大牛走,總是沒錯的,我便決定按照這篇文章分解的小目標展開學習計劃。

在學習初至現在(11月20日)我完成的小目標:

1.入門腳本語言Python與VBA:

  • 使用Python處理本地txt與csv,讀取後逐行處理;
  • 使用Python標準庫遍曆本地文件系統,統計文件大小與修改時間;
  • 使用Python連接sqlite,讀取與寫入;
  • 使用VBA對Excel進行數據分析計算與進行格式整理;
  • 使用VBA控制Access資料庫,結合SQL進行數據統計,報表生成;
  • 使用VBA控制AutoCad,從Excel中讀取數據,自動繪製鈑金展開圖;

2.掌握純文本編輯器與IDE:

  • Vim / Notepad++,分別在Linux與Windows下使用;
  • Pycharm,用了之後發現真心好用,用IDE配置GIT、flake8、VirtualVenv;

3.掌握常見Linux Shell的命令:

  • 使用man來查看幫助;
  • 文件系統結構和基本操作 ls/chmod/chown/rm/find/cat/mkdir/scp;
  • 文本操作命令 awk/grep/less/more/cat;
  • 管理命令 ps/top/netstat/kill/;
  • 使用守護進程 crontab;
  • /etc目錄下的各種配置文章;
  • 正則表達式,使用正則表達式來查找文件內容;

4.WEB基礎學習:

  • 在W3School過了一遍HTML和CSS語法,能寫一部分;
  • 掌握Chrome動態修改網頁結構;
  • 在W3SChool過了一遍JAVASCRIPT,能看懂代碼,理解DOM;
  • 簡單的過了遍jQuery庫,理解jQuery的作用;
  • 完整的看完《圖解HTTP》,理解REST,理解HTTP的請求響應組成;
  • 使用Flask做了個簡單的個人博客網站;
  • 買了域名,用GitPages+Jekyll搭建博客網站;
  • 理解Django框架,掌握RESTful API設計;
  • 掌握Docker,虛擬環境的使用;

5.其他:

掌握GIT,掌握多人協作下衝突的解決:

  • 了解代碼規範pep8,配置代碼檢查工具flake8,了解靜態檢查工具pylint;
  • 看完(麻省理工免費課程)計算機科學和編程導論;

面試

國慶之後,迫不及待準備寫簡歷找工作,原公司過不久便會安排我出差到工地負責機電項目,這個項目一旦開始,到明年四月份截至,除了春節都不可能離開工地。10月15日左右開始投簡歷。在51JOB上投出去20份,收到3個面試機會,只試了其中一家公司,也就是現在這家。

筆試考了張簡單的試卷,基本都能答上:語法基礎、表達式、字元頻次統計、Python標準庫、MVC框架的理解,Python2與3之間的區別、最後是一道取水的智力題(回去時才發現做複雜了),面試時技術主管Y哥問了些Python數據結構、Linux操作、以及資料庫方面的知識,可能Y哥看我是哥轉行的菜鳥,並沒有為難我。

最後HR和我交流了二十分鐘,全程一直在我為什麼願意拋棄七年所學而轉行這個選擇上而提出質疑。雖然她的問題比較尖銳,但我轉行的想法是非常堅定的,並不畏懼她的質疑。我告訴她:

轉行來做開發,對我來雖是沉沒成本,卻更是及時止損,是我最明智的選擇。

WEB服務端的學習(LNMP)

工作後,接觸到了真實的生產環境,了解到實際業務的需求,懂得自己在哪方面的知識比較薄弱。因此這三個月至過年後,我將重點學習後端開發中的服務端環境。我不想花費大量寶貴的業餘精力去學會框架的旁枝末節,這並非重點,框架的東西更應該留在工作實踐中去逐漸深入了解。
買到 @董偉明 的《Python Web開發實戰》,這是一本非常適合Python後端開發人員看的實戰書籍,國內Python Web開發本來就少,找遍網路只此一本。翻了翻書,非常超值!! 我相信,啃下這本書之後,我的Python後端開發可以登堂入室,早日加薪。

從生產環境與書中的知識點出發,我羅列了以下需要重點學習的工具及知識點:

  • Web伺服器,Nginx的部署使用;
  • Linux發行版,CentOS7 Web Server的使用;
  • Docker容器的安裝打包;
  • PostgreSQL資料庫的使用(項目需要);
  • 緩存系統Memcached與Redis;
  • 進程管理組件Supervisor;
  • 應用部署工具Fabric;
  • 在項目中學習測試思路方法;
  • RESTful API的設計,Swagger的使用;
  • 消息隊列與Celery的使用;
  • Python並發編程的數個解決方案

這些方面,不求學精,僅以掌握使用為目標來說,三至四個月應該足夠了。


進階深化學習

WEB服務端的基本環境學習之後,我這種沒有計算機科班基礎的菜鳥,該好好補課了。 學習C語言並不意味著我想寫C語言。我覺得:

未來的軟體開發會越來越趨向於高級應用與演算法應用開發,移動互聯網未來會穩定發展,而機器學習與機器視覺則會加速發展,我希望能朝機器學習方向深入,但,學習這些基礎的東西永不過時。

1.C語言與Linux系統基礎:

  • 學習《深入理解計算機系統》;
  • 學習《C Primer Plus》,用C實現一下各種經典的演算法和數據結構;
  • 學習Linux系統調用,了解系統層面的東西,實現一個可以拷貝目錄樹的小程序;
  • 用fork/wait/waitpid寫一個多進程的程序
  • 用pthread寫一個多線程帶同步或互斥的程序。多線程多進程購票的程序; signal/kill/raise/alarm/pause/sigprocmask實現一個多進程間的信號量通信的程序;
  • 學會使用gcc和gdb來編程和調試程序;
  • 學會使用makefile來編譯程序;

實踐任務:如果有時間,用C實現一個解魔方的機器人,用Arduino控制板加寄存器控制8個步進電機,其中4個控制魔方旋轉,4個控制位移,用攝像頭進行顏色識別。

2.Android與GUI開發(我對移動端開發不大了解)

  • 學習Java語言;
  • 掌握Android studio的使用;
  • 學習Andorid SDK;
  • 了解一下Java這種虛擬機語言和C和Python語言在編譯和執行上的差別;

實踐任務:完成一個RSS訂閱閱讀的APP

3.Web的安全與架構:

  • 學習HTML5與CSS3;
  • 學習Web開發的安全問題;
  • 學習HTTP Server的rewrite機制,Nginx的反向代理機制,fast-cgi;
  • 學習Web的靜態頁面緩存技術;
  • 學習Web的非同步工作流處理,數據Cache,數據分區,負載均衡,水平擴展的構架;

實踐任務:使用HTML5的canvas 製作一些Web動畫,嘗試在前面開發過的那個Web應用中進行SQL注入,JS注入,以及XSS攻擊

4.學習關係型資料庫:

  • 通過MySQL來學習資料庫;
  • 學習資料庫設計範式,1NF,2NF,3NF;
  • 學習資料庫的存過,觸發器,視圖,建索引,游標等;
  • 明白表連接的各種概念;
  • 學習如何優化資料庫查詢;

實踐任務:設計一個論壇的資料庫,至少滿足3NF,使用SQL語句查詢本周,本月的最新文章,評論最多的文章最活躍用戶

總結

軟體開發的學習,是一種即時反饋性的體驗,產生的正反饋能增加學習樂趣與學習動力。 暖通的學習也有反饋,但卻是負反饋居多,因此生成了閉環系統。

將工作與興趣相結合,每天我都有一種幸福的體驗。 用一個詞來形容我現在的狀態,那便是如魚得水。 離開水我固然也能夠存活,但在水裡我會過的更好。 在我三分之一的人生已經走過了太長的彎路,才愈發覺得選擇的重要性:

努力當然重要,更重要的是要做出明智的選擇。

傳統行業,重資產,輕生產力,人更多的擔任的是操作工的角色。 在IT行業中,資產配置不是主要支出,人既是生產力,又是生產資料,重要性不言而明。 從客觀角度而言,選擇了IT行業,我的勞動稀缺度與附加值將會更高。 從主觀角度,我渴望的是一份生活與工作沒有明顯界限,有深度與上升空間的工作。 從技術角度來看,即使是十年後,我的編程水平依然糟糕,回去做暖通,我之前的知識儲備仍然不會過時。


以上的任務是我一年半內的規劃,我不知道我能夠按時完成計劃, 但我知道,只要我認真去做,那一天一定會比我預料的要提前到來。

開發的工作對我而言不是終點,而是起點。 強烈的技術焦慮症會促使著我持續深入學習~~~
路漫漫其修遠兮,吾將上下而求索

------------------------------------------------------------------------------------------------------------------------

時間又過去了七個月,現在是2017年6月,現公司資金鏈緊張,不得不離開。

這半年多,學習了一些基礎課和書籍,包括:

  • 《深入理解計算機系統(原書第2版)》
  • Coursera公開課《操作系統原理》
  • Coursera公開課《數據結構基礎》
  • 《大話數據結構》
  • 《Python演算法教程》
  • 《編碼-隱匿在計算機軟硬體背後的語言》
  • 《Effective Python-編寫高質量Python代碼的59個有效方法》
  • 《Python網路信息採集》
  • 刷掉leetcode easy

現在明白,作為Python後端工程師,不僅僅需要Python,還要求Linux基礎、GIT協同開發、消息隊列、資料庫等等,有時候也可能需要數據分析與爬蟲。這半年學到的一些框架和技術,不好意思像之前一樣菜鳥浮誇的列舉出來。有了基礎知識後,再上手這些不同的框架並不困難。對於之前的未來計劃,也有了全新的規劃,今年準備把GO也掌握了。


有幾個朋友加了我的好友,但聊天中我發現,你們的學習缺少持續性與自我驅動力,做事不夠堅定,三心二意。以別人為目標學習,整天浮躁的關注別人工資的高低毫無意義。自己不能靜下心來沉浸到技術本身獲取樂趣,以反饋的樂趣自我驅動,靠毅力堅持學習不長久。因而如果自己不能通過自學學會編程,寄希望於培訓班的老師傳授神功秘籍,可能真的不大適合走這條路。我還是匿名吧,不要加我好友了


前幾天找到了20w的工作,下周入職,畢業一年後,工資X2.5,也終於成為同學中薪資最高的一批,所以我很感謝這一行,相較於傳統行業的苦,個人的努力其實不值一提。

跳槽時技術面過程很輕鬆,準備了很多,但問來問去的問題啊,還是這麼些東西....


語言基礎、HTTP基礎

epoll、select是個啥?

gevent用過沒,咋實現的?

redis用過沒,講講怎麼用的?

高並發的解決方案?

多進程、協程如何使用?

消息隊列用過沒?

django、flask、tornado這幾個框架有啥特點?

Python有哪些數據結構?


我和他談笑風生


還不是因為你們心不正誤入歧途。

老想著為了找工作去學技術,結果只能是個堆技術棧的苦逼。蕭大要你們學原理,要你們融會貫通的教導是不是沒聽見啊艹。

就是這樣。


技能根本就無所謂。我們也招了一個只會vim和python和半吊子C語言的進來用VS和C#寫app。


-------------- 20170308 更新 ------------

私信有問資料的, 帖一個書單好了, 不過像作者說的, 沒有編程平台 (Programming Platform) 相關書籍, 不適合著急轉行的.

地址: 程序員必讀書單 1.0

---------------- 以下原文 ----------------

多圖預警!!!!

關注這個問題有 16 個月了, 在職自學斷斷續續到現在, 已經拿到一個 Python 開發的 offer, 工資不高 (後面會說為什麼), 地點深圳南山.

  • 背景

知乎末流十本 2014 年畢業, 之後在深圳一家製造業公司上班, 對, 富士康還是我們的榜樣和競爭對手.

編程經驗僅限於 2012 年自學過 Android 編程, 只能做個簡單的界面和按鈕什麼的, 完全沒有其他東西, 時間兩個多月.
當時是有個學長在創業, 想在學校招些人, 不過後來團隊搬到南京去了 (應該沒有暴露母校吧), 就沒人管我們這種野生的小朋友了.
另外一個就是當時覺得大學四年學的材料 (對, 就是知乎被黑的很慘的材料), 轉到其他行業很划不來啊, 也就放棄編程了.

  • 學習過程

這個說起來有點多, 我放幾張圖好了.
主要還是參考 @蕭井陌 的 "編程入門指南", 不過後來發現 @陳皓 的 "程序員技術練級攻略" 可操作性更強 (感謝兩位前輩), 那個 SCIP 和 CSAPP 有些地方實在啃不下來 (可能是我太蠢了).

OneNote

Project

文檔

練習

亂七八糟的寫了一大堆, 還有很多重複的, 因為第一遍是抄的, 第二遍可能是抄的 -_-||

  • 書籍推薦

我只推薦看過和能看懂的, 勿噴.

科普
計算機科學概論
Code-隱匿在計算機背後的軟硬體語言

python:
A Byte of Python
Learn Python the Hard Way
------------是不是覺得這裡少了本書--------------
編寫高質量代碼 改善Python程序的91個建議
Python Cookbook (後面幾章看不懂)

C
Programming in C
The C Programming Language

Linux
鳥哥的私房菜: 基礎學習篇

Web
Flask Web Development:Developing Web Application with Python
Flask Framework Cookbook
Java Script DOM 編程藝術

數據結構與演算法
大話數據結構

網路
圖解 HTTP

資料庫
MySQL 必知必會
Redis 入門指南
Redis 設計與實現 (這個沒看完)

另外說一本用來替換 Python核心編程(第2版) 的書: Learning Python, 核心編程的中文版實在太爛, 實在看不下去, 然後就去看的英文版了, 速度很慢, 不過好處就是查英文資料基本沒問題了.

至於知乎各位大神們說的什麼 CLRS, SCIP, CSAPP, TAOCP, 操作系統/編譯/資料庫的原理和實現, 有哪位零基礎一兩年內看完的同學, 出來讓我膜拜一下 (逃

  • 找工作的過程

花了點時間把去年 7 月份抄狗書的網站 (改了一點無關緊要的東西), 部署在 VPS 上, 一個晚上寫的簡歷, 第一天投了十來個簡歷, 第二天收到面試邀請, 第三天面試, 第四天收到入職通知, 然後就提了離職申請. 這就是找工作的全部過程.
簡歷是全部是真實的, 寫的自學了哪些東西和學習過程. 不過心裡沒有底氣, 只要了一點點工資, 也有可能是工資低才要我的.
和一朋友聊天, 才知道他也轉行寫代碼去了, 然後工資比我高 2-3K, 握草!!! 有些事情我是學不來, 具體不表了.

  • 最後的解釋

先空著, 看有沒有人想問什麼.

---------------------20170307 手機更新--------------------
私信都是問方向和待遇,統一回答好了,私信問這個的就不再回復了。
方向是後端,待遇在南山勉強能養活自己,打聽一下南山生活成本就知道了。


# EOF 20170305 by pyms


985土木狗,先佔坑


我,差不多半年,然後找到工作了。
不過我中間耗費了一點時間在pygame 上。大家可以忽略。
已經辭職,準備國慶假期完了就上班。
現在的目標是,半年之內成為python 小牛 :D
說出來,感覺就會被監督,然後就可以更加努力了~

---------
統一回復一下:這是我學習的帖子,Python+flask+SQLAlchemy 半年自學~跳槽成功~

很明顯我是和大家一樣跟著蕭大的路線走(中間還自己走到了pygame),所以後來得了空就去蕭大的論壇發帖子,大概花了幾個小時。

我個人感覺自己找工作還是很順的(我也沒想到),我的簡歷上沒有性別和照片,有兩個offer 是完全電話面試和網上機試拿到的。

我匿名是希望不會讓別人誤會我是因為長得可愛而找到工作的。
我自己覺得是因為我展現了好學的品質和坦率的態度,打動了面試官。
謝謝那些給我offer的公司,我每投一家都是經過認真選擇和確定自己喜歡才投的。我最初以為會沒有公司要我,結果是同一天拿到了三個offer。所以說,大家還是要有信息的。我很喜歡我的新公司(雖然還沒入職),對於其他被拒絕的offer我也覺得有一點愧疚但可能有緣無分。

總之,我會好好學習,努力變得更好的。


上面都是寫成功的經驗,看的多了難免覺得自己也可以。我最初(16年3,4月)看到這個問題及回答,當時也是這樣認為的,我也嘗試了,成功了一半(在北京某互聯網公司,400多人那種,實習了三個月,python後端工程師,最後也拿到了offer),後來自己選擇放棄了,找了本行業工作,如今正式上班快一周了(2017年7月10號入職),非程序員,我就寫寫自己半失敗的經驗及一些感想,也希望通過我的回答也許給你帶來不一樣的啟發。

14年12月底參加的研究生考試,報考的還是本專業能源,考研前兩個月看到知乎上這個問題,如何勸大四室友不要考計算機的研 https://www.zhihu.com/question/26667341 , 看了其中很多回答,尤其是it的高薪後,就也想當程序員了,當時甚至還想過放棄考研,但是複習了這麼久加上馬上就要考試了,不忍心放棄啊,所以複習變得懶散,考前一個月時還回家玩了3天,好在回來時在自習室那種氣氛下還是堅持了下去,加上網上填志願後,很焦慮怕考不上就把學碩改為專碩了,那年專碩數二英語二都不難,最終考了395分,來年三月中下旬通過複試順利上了中部某985專碩,兩年制。

當然心中那個相當程序員拿高薪的願望一直沒放棄,考完等成績時,參加了千峰來我學校的宣講,自己做了這麼的打算,考上了研究生就去讀,畢竟名校,期間自學計算機,校招時藉助名校這個平台找個好的互聯網公司工作,考不上就畢業後去培訓,畢竟當時千峰的宣傳還是不錯的,too yong , 我也加了宣傳人員的qq,她經常在朋友圈中發一些千峰某某班就業情況,或者學生找到工作後和她聊天的截圖,都是大幾k-十幾k。考前也碰巧認識了一個本校的計算機研究生,所以在12月底考完後,和他聯繫了一下,正好他工作室有位置,我就帶著我的筆記本去了他工作室,在他的指導下,我下載了尚矽谷的java視頻,配置好了軟體和環境開始跟著視頻敲代碼了,用不到一周就順利盲打了,哈哈。然後考研完到大四上這個學期結束,中間差不多快一個月,我就在他實驗室看視頻敲代碼,順便抽空完成畢業設計中的外文翻譯和開題報告,至於寫論文就是下個學期的事情了。放假回家後,由於家裡沒網,就提前下載了基本電子書,包括大話數據結構,第一行代碼,圖書館也借了幾本書,有java核心思想等,在家期間,由於成績還沒出來,工作也沒找,也比較害怕萬一研沒考上,秋招黃金時期也錯過了,就很焦慮,對未來也很迷茫,當時也在知乎上看了很多,如月薪2300是怎樣的一種體驗,還有就是當今傳統行業人員是不是被it金融人員給完爆了,等等,不一而論,這期間還是堅持學了點計算機,笨辦法學Python也照著敲完了。過了大概一個月成績出來了,還是在年前,一看395遠超過預想,就感覺十拿九穩了,後期也就天天happy了,也就沒怎麼學習計算機了。哈哈哈。由於過年晚,假期長,年一過,很快3月初開學,而我報考的學校往年三月中旬就複試了,在家根本沒心思複習,所以趕緊2月底趕回了學校,每天從早到晚在自習室複習,最終三月中下旬順利通過複試,考上了心目中的學校。考上後,回家玩了幾天,4月中旬吧繼續回到前面提到的認識的研究生的工作室,繼續看視頻敲代碼,當然當時心情很好,所以也沒怎麼認真學,看看視頻,敲敲代碼,刷刷知乎,一整天就這樣過去了,到了五一開始寫本科畢業論文,本科嘛,混混就過去了,於是就每天寫點論文,看看視頻,敲敲代碼,看看書,學學玩玩。就畢業了,然後呢,由於暑假家裡沒人,我就選擇和一個也考上研究生的男同學在本科學校合租,繼續去研究生同學的實驗室看計算機視頻和敲代碼,由於那個同學此時已經是研二暑假了,拿到阿里的實習offer,去阿里實習了,就沒人指導我了,我當時經濟條件也不好,就選擇上午出去家教,下午回來學習計算機,當然也是玩玩學學,期間也看來w3c學了點前端的知識,但也是學了就忘,太多標籤了,哈哈哈,然後到了9月份就到了新的學校開開心心讀研了,接下來寫讀研期間與計算機有關的事件。

讀研了,導師要安排任務了,專業是和本專業相關的,所以並沒有太多事件來學習計算機,到了10月吧,前文提到的那個研究生來我讀研所在的城市,我就喊了他一起吃飯,由於15年阿里的擁抱變化,他沒有拿到阿里的offer,當時他拿到了去哪兒和點評的offer,20w左右吧,在我看來很高了,後來他就選擇了點評,在點評實習了。我那,讀研,繼續渾渾噩噩,偶爾看看計算機的書,但當時還是很清楚自己的狀況的,項目和演算法都沒有,差的很遠,到哪裡去搞項目呢,接下來就要說到重點了。

到了16年3,4月份看到了這個問題,就彷彿找到了方向。

當時看來裡面的回答,很多都說一個月左右看完書做完項目,我算了算做完項目把他寫到簡歷里,然後在學點演算法就可以準備9月份的春招了,然後就買了python核心編程 和 flask 這兩本書,認識了一個材料學院的的學碩研究生,他本科河南某211考研過來的,當時也在搞編程,他這本書已經看了一小半了,我就在他後面跟著他,他在前面帶路,磕磕碰碰把這個項目搞完了。然後忙了一段時間的科研,暑期看了看劍指offer這本書,就殺入秋招戰場,當時吧,是看不上本專業的,覺得工資低,沒前途,it多好,哈哈哈,結果慘遭無情打臉,憑藉著研究生學校的名頭,簡歷關基本都過了,但是在線筆試或者現場筆試水的一比,不會還是不會,無情慘遭淘汰顆粒無收,正好看到一家北京互聯網公司招聘python工程師,給hr發了簡歷,視頻面了一下,讓我去實習,當時正是9月底,找工作的黃金時期,想了想這是一個進入互聯網公司的機會,再加上公司是搞雲計算的,多麼有前途啊,再次too young,就糾結了很久在10月中旬去了北京,開始了實習,一直實習到年前,給了offer,哎,待遇別提了,北京餓不死而已,呵呵噠。然後買票回家過年,年後要忙畢業設計了,研究生的不比本科生的,不好水,這次不傻了,雖然公司還想著讓我年後繼續實習,我果斷回到學校了,問問室友班上同學找本行業的都不差啊,美的13w年薪+3w政府補貼(2年),長江電力,粵電,光大環保,設計院等,這時才開始焦慮起來,自己太sb了,放棄秋招跑去實習,哎,那段時間壓力特別大,思考了很多,一邊找工作一年忙畢業論文,根本沒心思寫論文,當時還想著還是去互聯網,也參加了部分來學校互聯網公司的春招,反正經歷了種種事情,焦慮等等,最終拿到一家本行業 汽車零部件行業top級的公司的offer,在重慶,待遇還不錯,在重慶可以滋潤的過日子,比當初在北京實習時北漂蝸居的感覺強了幾百倍。且從事汽車技術行業,沒有程序員那樣那麼的年齡焦慮,也不怎麼加班,重慶消費房價也不高,公司在行業內也很知名,對未來還是充滿了希望。

下面作為一個半失敗者說說自己對過去經歷的一些反思。

1,知乎只是一個虛擬的網路世界,裡面都是各種各樣的故事,裡面程序員也比較多,大家要選擇性接收,要有自己的思考,千萬不要被知乎上面的故事啊建議啊給誤導了,我自己就是缺乏獨立思考被誤導了,比如看到很多程序員寫著收入有多高,當程序員有多好,就信以為真了。很多時候知乎上的觀點並不一定是對的,只是聽起來比較好聽,比較符合你的心意罷了。畢竟人們只願意相信它所相信的。

2,程序員也只是一個普通工作,我11年上大學,正好那時移動互聯網火了起來,到我15年畢業,那時培訓和安卓或者ios就可以拿大幾k,更多的是趕上了時代,但後續發展呢,比如現在17年你再去培訓安卓或ios,出來看你能拿多少。現在尤其是去北京實習了一次後,親自體驗後,才發覺程序員並不是知乎上說的那麼好,也有很多不好的地方,比如加班多,35歲年齡問題(個人看法謝絕撕逼),離體制太遠,還有大部分都是在一線城市,月薪過萬聽起來爽,但並不經算,假如稅前1w,到手7k多,扣去吃住3k,用1k,能存3k就算不錯了。還有就是互聯網也不是向你想像的那麼繁榮昌盛,比如貝貝網裁員,愛屋及屋裁員,一個ofo能吸引那麼多投資,到底是它的模式新穎還是現在其它創業公司沒有更好的模式,這些都是需要深思的。

3 傳統行業並沒有那麼的差,我讀研學校由於還行,是985班上沒有轉行到互聯網的,大部分都是在本行業工作,如果不去一線城市的話,收入在當地都是中上水平,尤其是去了二三線城市國企,包吃住,一個月拿6-7k,還不是美滋滋。

4 應屆生其實選擇餘地很大,好學校的話,機會很多,不一定非得轉行程序員,在知乎上看到至少兩個讀研期間選擇了退學,轉行去互聯網寫代碼了,還是名校。我對此不作評價,只說說自己學校的情況,由於讀研學校不錯,有不少省份過來定向選調,我室友就考上了他們省在面向我學校的定向選調。除了定向的選調還有非定向,這個報名人多一些,但是競爭還是比國考省考簡單不少,這是一種出路。還有就是本省省會城市在今年四月份時面向本省兩所985學校研究生作了事業單位報名考試,招聘100多個,這個機會也很好,不少崗招三個,一個人報了名,一個人進面試。學院還有20多校招去了華為當銷售,拿高薪。班上還有一個去了金融保險行業。所以校招時選擇餘地還是很大的。

以上就是我作為一個轉行半失敗者的一些看法,和上面很多轉行成功的不一樣,希望可以給大家帶來不一樣的看法,兼聽則明。


如何訓練自己的編程思路
https://zhuanlan.zhihu.com/p/20949490
Linux運維人員如何學習python編程
https://zhuanlan.zhihu.com/p/20932131


大概是2015-8-26--------------------------------------------------------------------------------------------------------------------
14年畢業,農學專業植物保護,畢業後做大學生村官,直到15年春節基本沒有計算機基礎,注意,是計算機基礎,不是編程基礎。

我是參照蕭大的,用的Python加Django,用了一個月不到,找到一份寫web application的工作。

說實話,真該學Flask的。Django的代碼量太多了,最近都看哭了…

2015-8-28
鑒於有不少人問我Django怎麼學習,我不是專家,不過我有一點個人的小小心得,分享一下。

Django documentation
Django 文檔
How to Tango with Django: A Python Django Tutorial
Tango with Django 中文文檔
編寫高質量代碼 (豆瓣)

Git教程 - 廖雪峰的官方網站

PS: 新手真的不建議直接上Django,推薦Flask,因為簡單,因為pythonic。

2016-3-5
打個廣告,自己建了一個公眾號,Python愛好者。

http://weixin.qq.com/r/iDuwqA-EClJ1rUvL926a (二維碼自動識別)


推薦閱讀:

初學 Python,有哪些 Pythonic 的源碼推薦閱讀?
Python 有哪些好的學習資料或者博客?
相比於 Django、Pylon 等 Python 框架,Ruby on Rails 是否有很大的技術優勢?
TensorFlow 如何入門?
可以用 Python 編程語言做哪些神奇好玩的事情?

TAG:Python | 編程 | 轉行 | Flask | 自學編程 |