作者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://webptt.com/m.aspx?n=bbs/Soft_Job/M.1498164525.A.CF6.html
※ 編輯: cjamhe01385 (137.222.114.241), 06/23/2017 05:07:01
1F:推 pppoe22222: 跟你的情況滿像的,上課和自學了一段日子,但上班後發 06/23 06:43
2F:→ pppoe22222: 現自身的不足,在考慮還要繼續下去嗎......還是回原 06/23 06:43
3F:→ pppoe22222: 本的行業。 06/23 06:44
4F:推 win30221: 我自己是2,都一知半解的 06/23 07:31
5F:推 rollr: 哭著看完這一篇 06/23 07:45
6F:推 F14A: 推,有些是連本科系的學生都會犯的錯誤 06/23 07:57
7F:推 sppqre: 推 有些真的都是一知半解... 06/23 08:05
8F:推 IcelFFs: 推一個 甚至多碰很多程式語言還會以為自己很強..我當初就 06/23 08:14
9F:→ IcelFFs: 是這樣 06/23 08:14
10F:→ Kennyq: 一知半解,有學等於沒學,能出國的錢不如拿去補習班學原理 06/23 08:20
我沒後悔去留學,如果台灣有開設轉職系所我一定去,可惜沒有
11F:→ shvanta: 如果你真的希望幫助到轉職或是自學,提供學校名稱比較好 06/23 08:20
12F:推 monoceros629: 英文好重要,英文學好了,才能看api文件比較不吃力 06/23 09:08
13F:推 abc0922001: 推 06/23 09:19
14F:推 Ekmund: java的call也不能完全怪你 說起來它並不是真的call by val 06/23 09:43
15F:→ Ekmund: ue 06/23 09:43
16F:推 BBSealion: 其實也並不算錯誤,切入點不同而已,先學基本也可能會 06/23 09:45
17F:推 Ekmund: 沒有記憶體概念的前題下弄不懂很正常 你無法實踐某些資料 06/23 09:45
18F:→ Ekmund: 結構也是同原因 寫得出來跟懂真的是兩回事 06/23 09:45
19F:→ BBSealion: 失去興趣,先學實作則是容易變成自以為懂而不自知 06/23 09:46
20F:推 elements: 比較像是撞牆期 不算是失敗了 06/23 09:47
21F:→ BBSealion: 一邊實作,碰到不懂時找時間深入研究,大量看強者的 06/23 09:47
22F:→ BBSealion: code,看不懂就代表有東西學,這樣就會持續進步了 06/23 09:47
23F:推 WashFreeID: 推 不過我看書上也說大部分工程師不會自己去實作mvc啊 06/23 10:07
24F:→ WashFreeID: 懂就好 06/23 10:07
我表達不清楚,是我用MVC框架,結果根本不知道他是如何運作的,當然也不會實作
25F:推 ap954212: 實作跟觀念要並行 06/23 10:22
26F:→ RedMapleWing: 說去補習班學原理…我很想知道那間補習班有教原理 06/23 10:24
27F:推 Sunal: 不算失敗 應該說自學的方向太偏實作..應該要兩者並行 06/23 10:30
28F:推 sing10407: 一開始直接實作的好處是成就感高,較不容易放棄; 06/23 10:38
29F:→ sing10407: 反之一開始就去念你所謂的基礎,很多人應該唸不下去。 06/23 10:38
30F:推 InfinitySA: 推 其實實作就是練習 學習任何東西都一樣 06/23 10:43
31F:→ InfinitySA: 學會了 還是需要不斷磨練 所以要並行 06/23 10:44
謝謝幾位,我在打文章當下真的覺得我自學很失敗
實作所獲得的成就感,都在上正規課程之後消失殆盡
32F:→ MOONY135: 語言就是語言而已...基本功能查查就有...更深的東西 06/23 10:44
33F:→ MOONY135: 是GOOGLE找不到的 06/23 10:44
34F:推 lovez04wj06: 別說基礎了,多的是連直接做功能都有問題的.... 06/23 10:47
35F:→ npminstall: 台灣的職場環境就重實做應用 06/23 10:48
36F:推 InfinitySA: 不過原po說的觀念 很多其實是程式課程沒教的 @@ 06/23 10:49
37F:推 lovez04wj06: 然後有的時候,是公司體質問題,學基礎就算會,還不 06/23 10:49
38F:→ lovez04wj06: 如直接拿別人輪子,只要能用別太誇張就好。 06/23 10:49
39F:→ InfinitySA: 只學寫程式 很多東西會漏掉也不能說是你的問題 06/23 10:50
40F:→ InfinitySA: 像提到linked list -> 資料結構 演算法 06/23 10:51
41F:→ InfinitySA: SQL 查詢指令 -> 資料庫系統 06/23 10:51
42F:→ InfinitySA: 每一門都是專業啊 QQ 06/23 10:52
43F:→ InfinitySA: 能一知半解已經不錯了 XD 06/23 10:52
安慰謝謝,因為我以前自大還自認程式很快可以上手,豈知自己根本井底之蛙
44F:推 needshe520: 感謝分享 06/23 11:04
45F:推 s25g5d4: 明明就 call by sharing, Java 人都喜歡稱 value, 我們 C 06/23 11:09
46F:→ s25g5d4: ++ 派的都被搞混了 06/23 11:09
47F:→ InfinitySA: 真的 還偏偏都是類C語言 XD 06/23 11:10
48F:→ InfinitySA: 不看還好 看了一知半解容易搞混 06/23 11:11
49F:推 InfinitySA: 剛學會C++和Java後 在實作上也常常有問題 06/23 11:14
50F:→ InfinitySA: java不讓我能直接對記憶體位置動作 QQ 06/23 11:14
51F:推 nova06091: 推 根本在說我 06/23 11:17
52F:推 thea: 還是想問問是哪間學校XD 06/23 11:24
University of bristol
53F:推 shadow0326: 知道自己不足就強過一堆人了 06/23 11:28
54F:推 jkln: 反過來,修過很多課懂很多會寫白板題但是實作經驗不夠的也 06/23 11:30
55F:→ jkln: 不少。只要知道自己缺什麼,懂得改進都算是成功的開端吧 06/23 11:30
56F:噓 panda04056: 覺得標題太灑狗血 自學過再接受正規教學才會容易發現 06/23 11:31
57F:→ panda04056: 自己哪裡曾經搞錯 06/23 11:31
沒錯是有點誇張,但我想保留這詞,讓之後想轉職的人在搜尋時
會注意到這篇文章,以及本篇文章所有前輩們的留言
58F:推 alog: 去學學rails吧 06/23 11:37
59F:推 kiawe: 推 06/23 11:42
60F:→ LinuxKernel: 學Rails是有什麼差別...。 06/23 11:54
61F:→ LinuxKernel: 認真說,不會自己寫MVC框架倒不是太大問題,至少對 06/23 11:55
62F:→ LinuxKernel: MVC本身甚至與其他架構的差別有所瞭解就夠了。 06/23 11:55
63F:→ LinuxKernel: 之後再循序漸進,慢慢拆解去瞭解輪子怎麼造。 06/23 11:56
64F:→ LinuxKernel: 看不懂API文件就有點妙,不確定是英文的問題還是? 06/23 11:57
因為只會複製貼上和修改,看不懂建構子也看不懂為什麼要這樣引入參數
65F:推 glory5566: 話說這樣算起來你做行銷的薪水也不錯吧? 06/23 12:09
66F:→ glory5566: 如果去英國的學費生活費都是自己存這樣算 06/23 12:09
家裡不需要我付出,同時吃住也靠家裡,因此存錢會比較快些
67F:推 chatnoir: 你寫的linkedlist未必好過java底層提供的 06/23 12:24
68F:→ chatnoir: 去思考要如何應用各種形式的list反而比較有重要 06/23 12:25
69F:推 chuegou: 只重功能就是會這樣 板上經常有人說domain knowlage 06/23 12:26
70F:→ chuegou: 我都在想 在非本科轉職板講domain knowledge是要害死誰 06/23 12:26
71F:→ pttworld: 維護案還是可以,開發案就倒了。 06/23 13:01
72F:推 ckp4131025: java有些list不是by value 06/23 13:27
73F:推 leoloveivy: 我們都是站在巨人的肩膀上啊,有時候真的不用太care 06/23 13:51
74F:→ leoloveivy: ,keep going 06/23 13:51
75F:推 lance8537: 來問個問題,python是 call by value還是reference 06/23 14:13
76F:→ lance8537: 還是都不是 06/23 14:13
77F:→ WashFreeID: 不過這標題... 哪裡失敗了? 06/23 15:02
78F:推 devilkool: 非本科轉職版XD 06/23 15:05
79F:推 TitanEric: 回樓上問題 都不是 Python是call by object reference 06/23 15:06
80F:推 Luos: 學習不就是這樣的東西嗎 06/23 15:22
81F:推 QoiiwWe: 用library提供的linkedlist不自己寫 不可以嗎 06/23 16:05
82F:→ Argos: 可以阿 但是面試你會被笑 基本上那些都是拿來面試用的 06/23 16:12
83F:推 dm33: 能知道自己的問題 那就是解決了那個問題了 06/23 16:51
84F:推 pobov: 覺得只是 2年前 跟 2年後 的差別 06/23 17:11
85F:→ elements: 實務上當然不會自己寫 寫過只是知道他每一種操作的優劣 06/23 17:21
86F:→ elements: 勢和效能分析的方法 因為你知道他裡面在做什麼 所以面 06/23 17:21
87F:→ elements: 對沒有遇過的問題的時候你才能夠用合理的方式思考 06/23 17:21
88F:→ elements: 喔不過也是有機會自己寫基礎資料結構啦 當你最佳化到標 06/23 17:23
89F:→ elements: 準函式庫不能滿足你的時候 06/23 17:23
90F:推 ahahahahah: 這樣花多少錢啊 06/23 20:16
91F:噓 darkMood: 好書要整本讀通看完,這點能做到,就少了很多問題。 06/23 22:31
92F:→ darkMood: 但實際上找工作程式會動就好.......... 06/23 22:32
可能我需要有觀念清楚的老師領導我學習吧,我自己看真的一知半解
93F:→ airtsubasa: 換個想法,你用的php不也是一種工具,到時php消失了, 06/23 22:41
94F:→ airtsubasa: 不就什麼都沒惹,所以自己要創造出一套語言?XD 06/23 22:41
95F:→ 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
96F:推 ACMANIAC: 這篇不錯,但自學失敗轉職成功,也是成功了 06/24 01:37
97F:推 darkgerm: 用 library 的 linkedlist 不是壞事 06/24 01:41
98F:→ darkgerm: 但必需要懂 linkedlist 的原理,才不會寫出效能差的code 06/24 01:42
99F:噓 clamperni: 假鬼假怪 哪裡失敗 06/24 10:55
100F:推 carapple: 從womentalk板來這,最後是哪間外商呢? 06/24 11:30
101F:噓 ACEgolden: Java's objects have pointer semantics 06/24 11:51
102F:→ ACEgolden: Which means, the "value" of an object is its addres 06/24 11:51
103F:→ ACEgolden: s. I suggest you think about the word you use. 06/24 11:51
104F:推 wtao: 可以考慮 換個工具或語言 有時候是 資源太多了 你不會運用 06/24 12:07
105F:推 chrome: 推 06/24 12:11
106F:推 descent: 沒失敗的感覺, 是個成功的轉職 06/24 12:24
107F:→ descent: 其實還蠻想聽聽轉職失敗的經驗, 但應該沒人想寫吧! 06/24 12:25
108F:→ descent: 成功的經驗聽到的比較多 06/24 12:25
109F:推 silver2012: 很棒的自我反省 06/24 12:26
110F:→ cplusplus426: 會知道自己有不足的其實都有一定程度 06/24 12:53
111F:推 Sunal: 很多人也是複製貼上阿 但是也是要看懂了才貼 只要能work 06/24 13:33
112F:→ Sunal: 就貼上去用 很抖的 06/24 13:33
113F:推 DissAivent: 推 06/24 13:35
114F:推 ggttoo: 多學是好事情,還是要有求知的慾望,不然甚麼課程都沒救 06/24 17:30
115F:推 babypanda: 推 06/24 19:22
116F:噓 shinmeteor: 你應該要註明。有個富家庭才能有自學失敗的可能。你以 06/25 00:08
117F:→ shinmeteor: 為別人都跟你一樣靠家裡? 06/25 00:08
118F:→ shinmeteor: 說穿了就是靠爸族還在假鬼假怪 06/25 00:09
我們家狀況的確沒有很糟,所以我不用給家用費,也住家裡
但我學費是自己存的(5年100和50貸),我離職隔天馬上飛去英國接上課
如果我真是富家庭我不必這麼辛苦
119F:推 penolove: 推 不覺得假鬼假怪, 原po自我要求較高 ,家庭也是實力 06/25 04:18
120F:→ penolove: 有資源不用才是傻子 06/25 04:18
121F:推 zerozzz7887: 推分享 06/25 08:37
※ 編輯: cjamhe01385 (137.222.114.240), 06/25/2017 10:56:59
122F:推 GTim: 推分享,讓我再次省思自己的學習狀況。 06/25 11:10
123F:推 amigcamel: 推 感同身受 06/25 15:03
124F:→ htury: 還好阿,初學本來就是功能實現,有些連功能實現都做不出來 06/25 23:19
125F:→ htury: 之後朝功能整合,效能調教,擴充彈性..等方面持續努力 06/25 23:22
126F:推 answermangtr: 推 我非本科 出業一年跟你狀況一樣 06/25 23:34
127F:推 m09456010: 很不錯了 資工資管畢業不會寫程式的一堆 06/26 08:02
128F:推 InfinitySA: 樓上 會寫程式 但只是該有的功能會動而已 優化不佳 06/26 09:11
129F:→ InfinitySA: bug漏洞一堆的 更多 06/26 09:12
130F:→ InfinitySA: 包括我也是 XDD 06/26 09:12
131F:→ InfinitySA: 尤其工作後 常常會被前輩們的coding style和使用的框 06/26 09:12
132F:→ InfinitySA: 架限制住 這時候就知道該學會的知識有多重要 QQ 06/26 09:13
133F:推 shinmeteor: 資管畢業會寫程式的大概只有1% 06/26 11:57
134F:噓 IhateOGC: 我不覺得你現在會寫程式 06/26 14:45
135F:→ IhateOGC: 照你這說法,就別用print這 function 06/26 14:46
136F:推 clarkman: 其實我覺得錯誤一的很多不是都很基本嗎...面試時都會考 06/26 20:54
137F:推 eddy50811: 您好,想請問為何會想轉換跑道XDD 06/27 01:30
138F:推 gust0985: 能看得懂也改得動,已經很讚了…… 06/27 08:42
139F:→ catem: 不用給家費就不辛苦阿...... 06/27 08:48
140F:→ lovelycateye: 不可能每個都深,人一天只有24小時,除非你天生神力 06/27 14:20
141F:→ lovelycateye: 我也只是樣樣通樣樣鬆,但要做個東西也還是沒問題 06/27 14:21
142F:推 APTON: 多謝分想.... 某S根本ㄏㄏ 大概是自己窮 學的辛苦就眼紅吧 06/28 11:22
143F:→ APTON: 分享 06/28 11:23
144F:推 argc: 推! 06/29 09:17
145F:推 shinmeteor: 某A根本ㄎㄎ。發廢推文也這麼自high 06/30 00:54
146F:推 Omitopho: 推 我覺得這種文章很棒 07/01 10:30
147F:推 SeungHsu: 謝謝分享啊! 08/01 11:09
148F:噓 nksv526: 116然人包 挫折到失敗 07/08 21:49
149F:→ nksv526: 中文都沒學好... 07/08 21:50