看板 Soft_Job 關於我們 聯絡資訊
長期受惠於板上文章,決定將自己由去年九月中離職後, 自學網頁技術後成為Python Web Developer的心路歷程分享出來。 希望能幫助到無論是自學還是上課, 為了成為software engineer而努力著的版友們。 ----------------------------文長慎入--------------------------------- 去年八月底跟公司提離職,九月中離職後開始自學Python、Django網頁技術。 而成為Web Develope上工的時間是今年三月一號,約莫花了半年的時間。 首先我要先澄清的是,我並不鼓勵任何人跟我走一樣的路轉職。 原因無他,台灣使用Django框架以Python寫網頁的工作實在太少了。 如果真的想自學成為網頁後端工程師的話, 成功率最高的方式應該是以工作職缺數量為首要考量,選擇.NET、Node.js、 PHP,甚至是最近火紅的Rails,我想成功率都會高得多。 原PO之所以可以成功用Django轉職,運氣也佔了很大的成分。 一直以來都是很幸運的人,大學運氣好沒什麼唸書考上四大物理, 多益題本刷一刷不小心第一次就考了975分。 之所以挑出這兩件事情講,當然不是純粹想炫耀。 我個人認為如果要以自學的方式成功轉職, 最重要的有以下兩點: 第一點,邏輯以及學習能力(感謝母校物理系的學科訓練)。 第二點,英文能力。至少不能太差,你是要學程式不是學英文。 當你具備了這兩個特質,你就可以靠著國外的MOOC,快速的讓自己入門程式。 廢話不多說,正文開始。 以下會概括分為三個學習的階段,方便大家閱讀。 第一階段:Python好簡單,Coding好好玩之學語法時期 我個人是看Corsera的Python課程入門(有興趣請點 https://goo.gl/49wQIe) 共分為五門課程,前四門我都有認真的看過。教授講課幽默風趣,當你上完課, 你可以學到Python主要的語法以及資料結構,你會知道怎麼用Python爬網路上資料, 甚至會把資料存進SQlite而有了資料庫的概念。 這門課教授講的很好,我認為很適合作為無程式經驗者的入門課程。 當我看完這門課之後,利用學習到的爬蟲技巧以及SQlite資料庫, 寫了一個爬西斯版圖片的爬蟲程式,程式很簡單,主要邏輯就是設定要爬的頁數, 爬網頁版的西斯版,把圖片抓下來存在資料夾中,如果該頁有爬完過就寫進SQlite。 當然,你這個時期寫的程式絕對是那種埋了不少bug, if、else、try、except混用而成的小怪獸,不要覺得可恥, 這些程式都是你的作品,你該覺得驕傲。 而且,當時的你,應該也不知道自己寫的東西很醜(笑 第二階段:一堆東西不懂、一堆東西要學之資訊爆炸崩潰期 當你進入第二個階段,你必須開始為之後要做的求職DEMO作品做準備。 隨之而來的是大量的資訊、術語以及你要學的東西,可能有點難熬, 不過請耐著性子,紮實的把這些資訊、術語吸收進你的小腦袋瓜, 之後Google會用到的,或著說,寫程式就是要常常Google? 至少我是(汗 這個時期我主要補充了幾種知識: 1. 計算機概論: 台大于天立老師線上開放式課程,邊看邊睡還是耐著性子看完了, 有多少的幫助不清楚,不過有看有保佑,至少能讓自己對Programming更進一步了解。 2. HTML以及CSS: 主要把Codecademy上的課程刷過去,刷了就忘沒關係, 記住一些terminology,你之後寫作品的時候,Google會用到的。 3. JQuery以及Javascript: Javascript主要也是把Codecademy上面的語法刷過去,稍微做了解。 JQuery部分主要是看tuts+上的30 Days to Learn jQuery (https://goo.gl/x6t1Jz) 4.SQL 把基本的SQL語法在Codecademy刷過一次。 5. Django框架: 看了官方的tutorial、Youtube上一些Django的入門影片, 也看了The Django Book的前幾章,大致上知道Django在幹嘛但矇懞懂懂。 真正深入學習Django靠的是,Django By Example這本書。 寫程式學習最快的方式就是一直寫,當你認真的照著書上, 一行一行打出自己的程式的時候你會發現...... X!書上的code埋了很多Bug,不過你也無形中學會debug(? 總之,這本書蠻推的,如果要學Django框架的話,是一本能讓你從初學者變成, 比較不菜的新手的一本書,裡面用了許多不錯的library,甚至redis、celery等, 實務上用的到的東西,雖然你只是照著書上刻,但做出一些能run的東西也是挺開心的。 你可能會問如果想寫後端為什麼要學HTML、CSS、jQuery、Javascript等, 我才想問你不學前端怎麼做出網頁作品咧。 如果...... 你只在自學的時期能只寫後端邏輯、API, 完全不做前端呈現就可以得到滿滿的成就感,我也是醉了。 好拉,至少對我而言後端資料丟到前端在呈現出來是個比較完整而有成就感的過程。 這個階段你會接觸到大量的知識,你必須大量的學習。 可能有時候會有點挫折,不過這些東西都會成為你下個階段寫作品的墊腳石。 你可能會因為大量接觸別人的程式碼而在這個階段, 對於語法、常用的語言資料結構更為熟悉,甚至慢慢開始懂得物件導向的概念, 像是學騎腳踏車一樣,似懂非懂,看多了,就好像懂了(? 最重要的是,在這個階段,你接觸了夠多的知識,你開始知道Google怎麼下關鍵字, 你可能不小心接觸了StackOverFlow,然後順便辦個帳號(? 第三階段:準備作品面試備戰期 身為非本科系半路出家的我們,取得面試機會的方式就是你的作品。 因為Django工作並不多,我當時碰巧得知StreetVoice網站是以Django為架構, 下定決心寫出一個跟StreetVoice一樣的網站證明我也有能力當junior developer。 後來面試完,無消無息又是另一段故事了... 雖然很無腦,不過我還是很感謝有StreetVoice這個網站能讓我不用去構思網站內容, 或許這樣很不creative,不過也省下了我很多的時間,能專注讓自己技術成長。 最後的成果是仿造出了我的DEMO WORK,個人覺得跟街聲網站功能有八成像。 完成的功能有: 1. 會員註冊、登入 2.歌曲管理介面包含專輯、歌曲上傳編輯 3. 歌曲、專輯喜歡功能,following、follower系統 4. 前端刻了一個Music Player播音樂 5. 為了聽音樂不中斷,全站採用AJAX,搭配html push state改變URL 大概由十二月中開始著手製作, 過年的時候做收尾並架在heroku上完成作品,約莫花了一個半月。 其實我很早就決定要做這個題目了,因此在還沒開始寫作品前, 沒事就會開始構思網站架構以及會用到的技術,大大減少開發時間。 ---------------------------這是分隔線-------------------------------- 當你經歷了以上三個階段,你就正式入門Programming了(應該吧 雖然你還很菜,但你懂了怎麼下google關鍵字, 你也能與人用專業的術語溝通程式的內容。 或許別人講的很多術語你很多似懂非懂,但重點是,你講的術語別人聽得懂, 那你就具備了推銷自己的能力了(X)面試的能力(O) 抬起頭來,自信的拿著你心愛的作品去面試吧。 當你經過了以上三個階段,你可能擁有的面試武器: 1. 語言、框架熟練度:以Python、Django為例, 你可能知道各種基本資料結構的操作(built-in method); 知道什麼樣的資料型態是mutable、immutable; 知道set跟dictionary是以hash方式實作,in的語法速度會比list還快; 你可能知道Django的MTV架構所代表的涵意, 你大致上知道Django ORM的Query要怎麼寫, 你了解request到response在Django中的大致過程。 而這些東西可能是你自己似懂非懂悟出的, 可能是你不懂的時候google看到一些技術部落格,看多了就學起來的。 2. 完整的專案經驗 雖然你的作品可能有點簡陋、code有點醜醜的, 甚至很多寫法都是從stackoverflow或是google上找來的, 但是你有了一個完整的project經驗,你證明了自己有辦法獨立寫出作品。 3. 打死不退的熱忱 要是沒有破釜沈舟的決心,是很難走過以上三個階段的, 展現出自己的決心說服面試官用你吧! 小弟我只面試了三家公司, 很幸運的被現任主管撿走在一家新創電商寫Django,基本上前後端都會碰到。 之所以會一直強調自己很幸運是因為,要是沒有找到這份工作, 我也不知道自己現在在哪兒流落街頭,也沒辦法打這篇文章了...... 特別感謝我的女友、家人總是支持我做的決定陪在我身旁。 也感謝現在的主管、同事能夠包容非本科的我在專業知識上的缺乏以及不足。 希望這篇文章能幫助到想靠著自學轉職的勇者們!謝謝大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.218.11.14 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1497109631.A.D6F.html ※ 編輯: jly8061666 (124.218.11.14), 06/10/2017 23:53:05
babypanda: 推!06/10 23:54
goldberg123: 強者推!06/10 23:57
※ 編輯: jly8061666 (124.218.11.14), 06/11/2017 00:04:56
October29: 推06/11 00:18
abc53: 推06/11 00:21
abccbaandy: 標題後端,內文看起來根本是全端阿XD06/11 00:21
前端的東西只有摸過,沒有深入了解,學藝不精真的不好意思自稱全端。
skitty: 請問原po是離職後才開始自學的嗎06/11 00:30
基本上是,離職前有稍微看過python語法,量化的話約是花五個小時學習就能達到的程度 吧。
yotsuba1022: 新創電商+Django, 是c開頭那間嗎? 想了解一下@@~06/11 00:38
好像猜的有點準...XD
vi000246: 推06/11 00:47
hungys: 推06/11 01:18
ahahahahah: 半年!學超快06/11 01:24
gnuhcoay: 推,想問原po為什麼會想選擇Django呢?06/11 01:30
應該說我當初確信自己想寫python,評估寫web應該是短期內轉職成功率最高的路線。而 選Django而不是其他框架單純只是選擇看起來最成熟,使用者最多的框架。畢竟你在初學 的時期根本不知道框架是什麼碗糕,應該算是誤打誤撞吧。
KuanST: 感謝原PO經驗分享,我狀況差不多,正在原PO的第二階段徘徊06/11 01:32
KuanST: ,不知道能不能在退伍前幸運的找到工作06/11 01:32
加油加油! 寫出作品取得面試機會,接著就是運氣跟緣分的問題了吧XD
stosto: 會的好多06/11 01:56
其實前端的東西都沒有摸的很熟啦,大致上知道Google的方向而已...
h5904098: 也跟原po同樣是物理系哈哈 之前也是趁找工作空檔自學dja06/11 02:00
h5904098: ngo兩個月寫出一個小小購物網站 目前受不了現在工作想離06/11 02:00
h5904098: 職找軟體工作了XD 不知原po可否透露面試過得給小弟參06/11 02:00
h5904098: 考感謝XD06/11 02:00
真的很想知道歡迎站內
shiauji: 物理系推推06/11 06:22
Ekmund: 不小心975分.. 跟不小心滑了輛M2一樣的概念06/11 07:48
srxrrr: 太強了吧= = 神人06/11 08:18
※ 編輯: jly8061666 (223.140.244.244), 06/11/2017 08:25:52 ※ 編輯: jly8061666 (223.140.244.244), 06/11/2017 08:29:22
jj0321: 四大物理 能力正常發揮! 06/11 08:40
a47135: 原來是四大物理,很正常XD,所以說有些公司喜歡用學歷篩人 06/11 08:48
a47135: 也是正常的 06/11 08:48
FrAnKw: 原po自學能力高,有戰略方向、有良好資料收集能力,這都是 06/11 08:56
FrAnKw: 優良工程師的素質來源,能找到不意外,推 06/11 08:56
lukelove: 大programing時代 啟動 06/11 09:02
fortinet: 台灣學歷跟素質相關性極高,要怪公司用學歷篩選人也很06/11 09:29
fortinet: 難XD,就連我參加的open source組織裡面成員也是這種現 06/11 09:29
fortinet: 象。工作幾年後有些後段大學的也當到主管,面試一樣偏好 06/11 09:29
fortinet: 學校的人,除非你履歷有特別戰績,不然學歷其實很容易06/11 09:29
fortinet: 跟一輩子。 06/11 09:29
Avarsta: 強者我朋友06/11 10:34
CCben: Rails 職缺相較之下不多啊 06/11 11:02
的確也不多,不過相較於Django似乎好一些些
MOONY135: <-半路出家 現在在寫C++ 06/11 11:03
blackcan: 推,求西斯爬蟲XDD 06/11 11:04
pttworld: 其實在發文公開感謝,真正需要被感謝的也收不到吧。06/11 11:07
k9871108: 在七天內 嗑得完這五堂課嗎???= =06/11 11:19
我當初看課程的時候沒有七天限制,大概花一週多看完
jack123218: Django轉職+1 台灣用django的真的超級少! 06/11 12:59
vn509942: 感謝分享06/11 13:01
markbex: 推原po分享!Python確實是很棒的語言 不只是Django而已06/11 13:51
cplusplus426: python應用領域廣泛,除了韌體 os還是c其他類應用py06/11 13:56
cplusplus426: thon能勝任06/11 13:56
的確是這樣,希望自己未來也能多方涉獵。
chifangjang: 感謝分享 06/11 15:58
thund: Django比較晚出來 台灣職缺少很正常 會用的應該新創居多 06/11 16:21
ahahahahah: 為什麼沒考慮洗四大碩? 06/11 17:39
如果coding這條路走下去發現自己有學科能力上的不足,或是有想研究的方向,不排除繼 續唸碩班。當初本科系沒唸碩班單純是對竹科興致缺缺,也不想為了洗學歷硬是唸個碩班 。個人覺得每個唸理工都非得唸碩班不可蠻病態的...
bocard: 幫推~ 我也靠Python on django吃飯XD06/11 17:43
Sunal: 以後原po能力應該到處轉職都有有利,很多是拼死拼活多益才9 06/11 17:51
Sunal: 0006/11 17:51
rodion: 恭喜原po啦 也在自學Django 雖然不是為了轉職啦 06/11 18:29
Hevak: 推06/11 18:49
LinuxKernel: Django不錯,就是太大一包,有些寫寫簡單API的人可能 06/11 21:31
LinuxKernel: 會選Flask。 06/11 21:31
的確是肥了點,有空也會想玩玩其他Framework。
PeacockLiu: 原PO這些課程基礎打的不錯 :)06/11 22:48
PeacockLiu: 如果有想找Python+Django工作的可以密我,最近在找人06/11 22:49
pttuser: 我公司也用Django刻cloud services啊,竹科滿多公司用的 06/12 00:16
pttuser: ,再搭配MongoDB,Cassandra等,不過我聽web的人說要準06/12 00:16
pttuser: 備轉到golang了06/12 00:16
ttoo7936: 太勵志了 推06/12 01:38
jason91818: 推一個 06/12 08:11
pex2004: 物理系走軟體的還蠻多的。。。哈哈哈06/12 10:40
BigHeadGG: 優文 推 06/12 16:40
※ 編輯: jly8061666 (124.218.11.14), 06/12/2017 21:16:59 ※ 編輯: jly8061666 (124.218.11.14), 06/12/2017 21:19:25
lovelycateye: 聽起來是會轉轉轉的 06/13 15:47
sj1912: 推,能請教面試過程嗎 06/14 00:33
jeff12280: 推 寫程式就是要常常google 06/14 11:51
karasless: 推 感謝經驗分享 06/15 20:07
maxsho: 能順利靠自學順利轉職的終究只是少數特例 06/16 12:29
wyyoung: 讀物理比寫code難。 06/17 16:13
JustOneJFS: 強者我同學推 06/18 13:44
Timwusxt: 半年真的滿快的 06/19 12:52
wtao: 數學系 物理系好像超多轉這塊 哈哈 06/20 21:02
sheldonlord: 推一個 12/17 16:55
kaorusora: 推 12/19 09:43
uniqueufo: 一個字強 12/19 19:16