作者cjamhe01385 (徹)
看板Soft_Job
標題[心得] 轉職工程師,自學程式失敗心得
時間Fri Jun 23 04:48:41 2017
(修改標題名稱,供之後板友們可以搜索到這篇文章)
學歷:
台科大企管系
英國電腦科學(轉職)Computer Science Conversion 一年碩士學程
工作經歷:
5年新創小公司線上行銷兼PM
Offer:
外商工程師,主要使用C++ / Java
自學失敗警惕之路:
兩年前就開始準備轉職,自學程式和念英文考IELTS,打算出國留學
出國前自以為認真地學程式,還參與公司內平台架設專案,覺得自己應該會程式
豈知等到真正出國留學後,才發現自己根本就是亂學,整個打掉重練
因此在即將畢業並順利拿到Offer的這時候,分享自己自學失敗之路
希望打算轉職或自學程式的人不要犯跟我一樣的錯誤。
錯誤1 - 過度重視功能實現,輕忽觀念建立,本末倒置
自以為能將功能實現,就代表自己會程式,豈知根本就是錯誤觀念
要實現一些功能不難,上Stack Overflow找的到很多範例
結果導致自己只會修改別人程式碼,只會複製貼上,觀念一點都不清楚
- 我用Java,完全不知道Java是Call by value
- 我用MVC Framework架網站,然後自己不會建MVC框架
- 我用API,但是看不懂官方網站上寫的API文件
- 不懂資料結構,不會寫linkedlist,只會用library提供的linkedlist
有清楚的程式概念,才能讓功能實作過程事半功倍
另外,我上過台大資工開的進修課程,但我認為他不會教你清楚觀念
所以到頭來還是只會實作,對於程式觀念非常模糊(我還是班上成績最好的)
錯誤2 - 到處東學學西學學,導致對各種語言用法都不深
我那時候自以為自己會寫PHP、會寫Javacript、還會MySQL
結果後來發現根本都是在很入門的階段
- 不知道Javascript同步異步處理
- 不知道SQL prepare statement / 正規化
- 完全忽略SQL script在搜尋時所需要的時間消耗
後來我在留學時,專心學C / C++
等到其他作業要改用Java和PHP時,我發現上手速度很快
寫之前先搞清楚語言之間的差異性和寫法,然後就可以開始寫
遇到需要標準Library所提供的API時,上官網查一下就好
我相信一定有人可以自學學得很好,但我也覺得一定有很多人跟我一樣
用錯誤的方式在學習程式,只學到程式表面功夫,卻學不到核心觀念
我很慶幸我選到一個理工科專門學校(非廣告因此不提供學校名稱)
教授師資很好很嚴,看學生作業相當仔細,會一行一行標出錯誤,還會糾正你的命名
因此在留學期間導正我錯誤的學習方式和幫我建立起基本概念
讓我在一年後可以自己實作Design pattern並順利轉職
當然我不是要鼓勵大家出去留學,而是想要提醒也是自學想轉職的人
如果你跟我以前犯的錯誤一樣,那是時候調整學習方式
希望能幫助到轉職或是自學的各位
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 137.222.114.244
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1498164525.A.CF6.html
※ 編輯: cjamhe01385 (137.222.114.241), 06/23/2017 05:07:01
推 pppoe22222: 跟你的情況滿像的,上課和自學了一段日子,但上班後發 06/23 06:43
→ pppoe22222: 現自身的不足,在考慮還要繼續下去嗎......還是回原 06/23 06:43
→ pppoe22222: 本的行業。 06/23 06:44
推 win30221: 我自己是2,都一知半解的 06/23 07:31
推 rollr: 哭著看完這一篇 06/23 07:45
推 F14A: 推,有些是連本科系的學生都會犯的錯誤 06/23 07:57
推 sppqre: 推 有些真的都是一知半解... 06/23 08:05
推 IcelFFs: 推一個 甚至多碰很多程式語言還會以為自己很強..我當初就 06/23 08:14
→ IcelFFs: 是這樣 06/23 08:14
→ Kennyq: 一知半解,有學等於沒學,能出國的錢不如拿去補習班學原理 06/23 08:20
我沒後悔去留學,如果台灣有開設轉職系所我一定去,可惜沒有
→ shvanta: 如果你真的希望幫助到轉職或是自學,提供學校名稱比較好 06/23 08:20
推 monoceros629: 英文好重要,英文學好了,才能看api文件比較不吃力 06/23 09:08
推 abc0922001: 推 06/23 09:19
推 Ekmund: java的call也不能完全怪你 說起來它並不是真的call by val 06/23 09:43
→ Ekmund: ue 06/23 09:43
推 BBSealion: 其實也並不算錯誤,切入點不同而已,先學基本也可能會 06/23 09:45
推 Ekmund: 沒有記憶體概念的前題下弄不懂很正常 你無法實踐某些資料 06/23 09:45
→ Ekmund: 結構也是同原因 寫得出來跟懂真的是兩回事 06/23 09:45
→ BBSealion: 失去興趣,先學實作則是容易變成自以為懂而不自知 06/23 09:46
推 elements: 比較像是撞牆期 不算是失敗了 06/23 09:47
→ BBSealion: 一邊實作,碰到不懂時找時間深入研究,大量看強者的 06/23 09:47
→ BBSealion: code,看不懂就代表有東西學,這樣就會持續進步了 06/23 09:47
推 WashFreeID: 推 不過我看書上也說大部分工程師不會自己去實作mvc啊 06/23 10:07
→ WashFreeID: 懂就好 06/23 10:07
我表達不清楚,是我用MVC框架,結果根本不知道他是如何運作的,當然也不會實作
推 ap954212: 實作跟觀念要並行 06/23 10:22
→ RedMapleWing: 說去補習班學原理…我很想知道那間補習班有教原理 06/23 10:24
推 Sunal: 不算失敗 應該說自學的方向太偏實作..應該要兩者並行 06/23 10:30
推 sing10407: 一開始直接實作的好處是成就感高,較不容易放棄; 06/23 10:38
→ sing10407: 反之一開始就去念你所謂的基礎,很多人應該唸不下去。 06/23 10:38
推 InfinitySA: 推 其實實作就是練習 學習任何東西都一樣 06/23 10:43
→ InfinitySA: 學會了 還是需要不斷磨練 所以要並行 06/23 10:44
謝謝幾位,我在打文章當下真的覺得我自學很失敗
實作所獲得的成就感,都在上正規課程之後消失殆盡
→ MOONY135: 語言就是語言而已...基本功能查查就有...更深的東西 06/23 10:44
→ MOONY135: 是GOOGLE找不到的 06/23 10:44
推 lovez04wj06: 別說基礎了,多的是連直接做功能都有問題的.... 06/23 10:47
→ npminstall: 台灣的職場環境就重實做應用 06/23 10:48
推 InfinitySA: 不過原po說的觀念 很多其實是程式課程沒教的 @@ 06/23 10:49
推 lovez04wj06: 然後有的時候,是公司體質問題,學基礎就算會,還不 06/23 10:49
→ lovez04wj06: 如直接拿別人輪子,只要能用別太誇張就好。 06/23 10:49
→ InfinitySA: 只學寫程式 很多東西會漏掉也不能說是你的問題 06/23 10:50
→ InfinitySA: 像提到linked list -> 資料結構 演算法 06/23 10:51
→ InfinitySA: SQL 查詢指令 -> 資料庫系統 06/23 10:51
→ InfinitySA: 每一門都是專業啊 QQ 06/23 10:52
→ InfinitySA: 能一知半解已經不錯了 XD 06/23 10:52
安慰謝謝,因為我以前自大還自認程式很快可以上手,豈知自己根本井底之蛙
推 needshe520: 感謝分享 06/23 11:04
推 s25g5d4: 明明就 call by sharing, Java 人都喜歡稱 value, 我們 C 06/23 11:09
→ s25g5d4: ++ 派的都被搞混了 06/23 11:09
→ InfinitySA: 真的 還偏偏都是類C語言 XD 06/23 11:10
→ InfinitySA: 不看還好 看了一知半解容易搞混 06/23 11:11
推 InfinitySA: 剛學會C++和Java後 在實作上也常常有問題 06/23 11:14
→ InfinitySA: java不讓我能直接對記憶體位置動作 QQ 06/23 11:14
推 nova06091: 推 根本在說我 06/23 11:17
推 thea: 還是想問問是哪間學校XD 06/23 11:24
University of bristol
推 shadow0326: 知道自己不足就強過一堆人了 06/23 11:28
推 jkln: 反過來,修過很多課懂很多會寫白板題但是實作經驗不夠的也 06/23 11:30
→ jkln: 不少。只要知道自己缺什麼,懂得改進都算是成功的開端吧 06/23 11:30
噓 panda04056: 覺得標題太灑狗血 自學過再接受正規教學才會容易發現 06/23 11:31
→ panda04056: 自己哪裡曾經搞錯 06/23 11:31
沒錯是有點誇張,但我想保留這詞,讓之後想轉職的人在搜尋時
會注意到這篇文章,以及本篇文章所有前輩們的留言
推 alog: 去學學rails吧 06/23 11:37
推 kiawe: 推 06/23 11:42
→ LinuxKernel: 學Rails是有什麼差別...。 06/23 11:54
→ LinuxKernel: 認真說,不會自己寫MVC框架倒不是太大問題,至少對 06/23 11:55
→ LinuxKernel: MVC本身甚至與其他架構的差別有所瞭解就夠了。 06/23 11:55
→ LinuxKernel: 之後再循序漸進,慢慢拆解去瞭解輪子怎麼造。 06/23 11:56
→ LinuxKernel: 看不懂API文件就有點妙,不確定是英文的問題還是? 06/23 11:57
因為只會複製貼上和修改,看不懂建構子也看不懂為什麼要這樣引入參數
推 glory5566: 話說這樣算起來你做行銷的薪水也不錯吧? 06/23 12:09
→ glory5566: 如果去英國的學費生活費都是自己存這樣算 06/23 12:09
家裡不需要我付出,同時吃住也靠家裡,因此存錢會比較快些
推 chatnoir: 你寫的linkedlist未必好過java底層提供的 06/23 12:24
→ chatnoir: 去思考要如何應用各種形式的list反而比較有重要 06/23 12:25
推 chuegou: 只重功能就是會這樣 板上經常有人說domain knowlage 06/23 12:26
→ chuegou: 我都在想 在非本科轉職板講domain knowledge是要害死誰 06/23 12:26
→ pttworld: 維護案還是可以,開發案就倒了。 06/23 13:01
推 ckp4131025: java有些list不是by value 06/23 13:27
推 leoloveivy: 我們都是站在巨人的肩膀上啊,有時候真的不用太care 06/23 13:51
→ leoloveivy: ,keep going 06/23 13:51
推 lance8537: 來問個問題,python是 call by value還是reference 06/23 14:13
→ lance8537: 還是都不是 06/23 14:13
→ WashFreeID: 不過這標題... 哪裡失敗了? 06/23 15:02
推 devilkool: 非本科轉職版XD 06/23 15:05
推 TitanEric: 回樓上問題 都不是 Python是call by object reference 06/23 15:06
推 Luos: 學習不就是這樣的東西嗎 06/23 15:22
推 QoiiwWe: 用library提供的linkedlist不自己寫 不可以嗎 06/23 16:05
→ Argos: 可以阿 但是面試你會被笑 基本上那些都是拿來面試用的 06/23 16:12
推 dm33: 能知道自己的問題 那就是解決了那個問題了 06/23 16:51
推 pobov: 覺得只是 2年前 跟 2年後 的差別 06/23 17:11
→ elements: 實務上當然不會自己寫 寫過只是知道他每一種操作的優劣 06/23 17:21
→ elements: 勢和效能分析的方法 因為你知道他裡面在做什麼 所以面 06/23 17:21
→ elements: 對沒有遇過的問題的時候你才能夠用合理的方式思考 06/23 17:21
→ elements: 喔不過也是有機會自己寫基礎資料結構啦 當你最佳化到標 06/23 17:23
→ elements: 準函式庫不能滿足你的時候 06/23 17:23
推 ahahahahah: 這樣花多少錢啊 06/23 20:16
噓 darkMood: 好書要整本讀通看完,這點能做到,就少了很多問題。 06/23 22:31
→ darkMood: 但實際上找工作程式會動就好.......... 06/23 22:32
可能我需要有觀念清楚的老師領導我學習吧,我自己看真的一知半解
→ airtsubasa: 換個想法,你用的php不也是一種工具,到時php消失了, 06/23 22:41
→ airtsubasa: 不就什麼都沒惹,所以自己要創造出一套語言?XD 06/23 22:41
→ qitisland: 真心覺得Design Pattern 要跟基礎程設一起學... 06/24 00:37
感謝以上各位前輩建議和想法
※ 編輯: cjamhe01385 (137.222.114.240), 06/24/2017 01:02:17
※ 編輯: cjamhe01385 (137.222.114.240), 06/24/2017 01:07:40
推 ACMANIAC: 這篇不錯,但自學失敗轉職成功,也是成功了 06/24 01:37
推 darkgerm: 用 library 的 linkedlist 不是壞事 06/24 01:41
→ darkgerm: 但必需要懂 linkedlist 的原理,才不會寫出效能差的code 06/24 01:42
噓 clamperni: 假鬼假怪 哪裡失敗 06/24 10:55
推 carapple: 從womentalk板來這,最後是哪間外商呢? 06/24 11:30
噓 ACEgolden: Java's objects have pointer semantics 06/24 11:51
→ ACEgolden: Which means, the "value" of an object is its addres 06/24 11:51
→ ACEgolden: s. I suggest you think about the word you use. 06/24 11:51
推 wtao: 可以考慮 換個工具或語言 有時候是 資源太多了 你不會運用 06/24 12:07
推 chrome: 推 06/24 12:11
推 descent: 沒失敗的感覺, 是個成功的轉職 06/24 12:24
→ descent: 其實還蠻想聽聽轉職失敗的經驗, 但應該沒人想寫吧! 06/24 12:25
→ descent: 成功的經驗聽到的比較多 06/24 12:25
推 silver2012: 很棒的自我反省 06/24 12:26
→ cplusplus426: 會知道自己有不足的其實都有一定程度 06/24 12:53
推 Sunal: 很多人也是複製貼上阿 但是也是要看懂了才貼 只要能work 06/24 13:33
→ Sunal: 就貼上去用 很抖的 06/24 13:33
推 DissAivent: 推 06/24 13:35
推 ggttoo: 多學是好事情,還是要有求知的慾望,不然甚麼課程都沒救 06/24 17:30
推 babypanda: 推 06/24 19:22
噓 shinmeteor: 你應該要註明。有個富家庭才能有自學失敗的可能。你以 06/25 00:08
→ shinmeteor: 為別人都跟你一樣靠家裡? 06/25 00:08
→ shinmeteor: 說穿了就是靠爸族還在假鬼假怪 06/25 00:09
我們家狀況的確沒有很糟,所以我不用給家用費,也住家裡
但我學費是自己存的(5年100和50貸),我離職隔天馬上飛去英國接上課
如果我真是富家庭我不必這麼辛苦
推 penolove: 推 不覺得假鬼假怪, 原po自我要求較高 ,家庭也是實力 06/25 04:18
→ penolove: 有資源不用才是傻子 06/25 04:18
推 zerozzz7887: 推分享 06/25 08:37
※ 編輯: cjamhe01385 (137.222.114.240), 06/25/2017 10:56:59
推 GTim: 推分享,讓我再次省思自己的學習狀況。 06/25 11:10
推 amigcamel: 推 感同身受 06/25 15:03
→ htury: 還好阿,初學本來就是功能實現,有些連功能實現都做不出來 06/25 23:19
→ htury: 之後朝功能整合,效能調教,擴充彈性..等方面持續努力 06/25 23:22
推 answermangtr: 推 我非本科 出業一年跟你狀況一樣 06/25 23:34
推 m09456010: 很不錯了 資工資管畢業不會寫程式的一堆 06/26 08:02
推 InfinitySA: 樓上 會寫程式 但只是該有的功能會動而已 優化不佳 06/26 09:11
→ InfinitySA: bug漏洞一堆的 更多 06/26 09:12
→ InfinitySA: 包括我也是 XDD 06/26 09:12
→ InfinitySA: 尤其工作後 常常會被前輩們的coding style和使用的框 06/26 09:12
→ InfinitySA: 架限制住 這時候就知道該學會的知識有多重要 QQ 06/26 09:13
推 shinmeteor: 資管畢業會寫程式的大概只有1% 06/26 11:57
噓 IhateOGC: 我不覺得你現在會寫程式 06/26 14:45
→ IhateOGC: 照你這說法,就別用print這 function 06/26 14:46
推 clarkman: 其實我覺得錯誤一的很多不是都很基本嗎...面試時都會考 06/26 20:54
推 eddy50811: 您好,想請問為何會想轉換跑道XDD 06/27 01:30
推 gust0985: 能看得懂也改得動,已經很讚了…… 06/27 08:42
→ catem: 不用給家費就不辛苦阿...... 06/27 08:48
→ lovelycateye: 不可能每個都深,人一天只有24小時,除非你天生神力 06/27 14:20
→ lovelycateye: 我也只是樣樣通樣樣鬆,但要做個東西也還是沒問題 06/27 14:21
推 APTON: 多謝分想.... 某S根本ㄏㄏ 大概是自己窮 學的辛苦就眼紅吧 06/28 11:22
→ APTON: 分享 06/28 11:23
推 argc: 推! 06/29 09:17
推 shinmeteor: 某A根本ㄎㄎ。發廢推文也這麼自high 06/30 00:54
推 Omitopho: 推 我覺得這種文章很棒 07/01 10:30
推 SeungHsu: 謝謝分享啊! 08/01 11:09
噓 nksv526: 116然人包 挫折到失敗 07/08 21:49
→ nksv526: 中文都沒學好... 07/08 21:50