#關於成為工程師這件事 #文長慎入
如果有follow 我之前寫的種種文章,大概就知道我的一些經歷。但這邊還是來快速回顧一下。
大學的時候唸了歷史系,雖說跟分數也有關係,但一部分也是因為我對歷史很有興趣,小時候當所有人都想當老師,或醫生護士這種職業的時候,我總是想說要當那種什麼考古學家~探險家之類的,當然歷史學家跟發明家也是在考量的項目中,長大以後才發現,這好像有點不是現實中可以很容易實現的職業。
很多科目,像是歷史,或者其他社會科學相關的,在台灣畢業以後都非常難找工作,即使你認真向學,決定一路念到博士,也不見得畢業後可以找到教職或博後。即使是商學院畢業出來,在台灣可以做的也很有限,尤其當你是什麼管理學院相關的出來,也不太有機會直接躍升管理職。
台灣的產業其實比很多國家來的少,可以做的工作也有限,大部分都是科技相關,這也造就了台灣過去二三十年的榮光,到現在也一直是科技業為主流。當然科技業變成世界主流已經不是這一兩年的事情,全世界越來越多人想要擠進科技業,因為科技進步導致很多傳統產業面臨倒閉或者被迫改變。
說起來一開始除了自己想要試試看自己到底學不學得會寫程式這件情,再來就是因為不想一輩子領著低薪過著普通OL的日子,加上一直對國外有的憧憬,很想去國外看看外面的世界,體驗國外的生活,尤其是對歐美國家有著美好的想像。
要說當時為什麼做了這種倉促決定,其實大概就只是一個不甘心吧!因為在台灣沒有辦法念研究所,被各大學拒絕以後,就心想乾脆嘗試國外的大學,看有沒有人要我。其實大概就是個背水一戰的概念。
一直以來我都有點,盲目的亂衝。就是想到什麼就決定做什麼,當然有時候我也會變得很膽小,就會想太多,然後不敢前進。可是時常又覺得,應該要強迫自己前進,因為知道自己是個懶惰的人,所以不想辦法把自己帶到那個不得不的情況,自己就會一直怠惰下去。
說起來,一開始我也不是很認真的想要當工程師,也就是半推半就,覺得試試看的心態,身邊也沒有什麼人把這件事情當一回事,這都是到英國念研究所以後,才開始覺得自己可以做些什麼事情。但最近我也在反省,覺得自已以前在研究所也是很混,覺得自己第一年工作真的完全不知道在幹嘛。
最近到了新公司工作以後,發現公司很多人都是轉職的人,有人在媒體業待了十年,有人在金融業,有人從醫療產業,有人從產品經理轉職,大家都非常的認真,比我還要認真許多。
雖然我一直覺得,自己跟其他本科系畢業的人比起來,年紀很大,甚至會覺得自己轉行轉得太晚,有時候也會想說,為什麼自己國高中的時候不自己上網學寫程式,為什麼不好好念數學,這樣可以考個工程相關的科系。
可是在新公司遇到了很多他們以Graduate身份進來的轉職者,真的讓我覺得,其實自己轉的好像也不太晚。當然他們比我有毅力很多,很多人都是Bootscamp出來的,有的人甚至快要40歲了才以一個畢業生的身份進來。
我覺得在英國很好的一點是,這邊有很多公司可能願意收這種,想要轉職工程師的人。這些人有的可能甚至沒有唸過大學。
公司一個跟我一起onboard的資深工程師,他告訴我他沒有唸大學,全是靠自己學的,但網路上有很多開源專案他都是主要貢獻者。我覺得很厲害。
來英國以後我一直在反省自己,覺得有時候就是,自己會過得太安逸,就不太想努力生活,又或者覺得努力的生活好累,我幹嘛要這麼累,甚至會有一種,反正我只要表現得比其他人好就好。
因為一直以來在台灣的生活成長環境,我覺得自己的價值是被社會被周遭的人定義出來的。例如你的學歷,你的工作職稱,你的薪水,你的資產。
有時候我會覺得自己可能是個悲觀的人,又或者是其他人喜歡隱藏自已過得不好的部分?每次我看別人的部落格,或者別人敘述自己的職涯時,總是覺得別人的職涯好像都過得很順遂。
一直以來我都覺得,自己的職涯好像不是很順遂,其實跟很多人比起來好像已經不錯,畢竟有個工程師的工作,還是在國外的工作。可是實際上我都覺得,自己好像是個很差勁的工程師,為什麼自己好像寫出來的code都很爛,為什麼自己好像什麼都不會,為什麼自己好像學東西學得很慢,還有自己就是一個,很怠惰的人。我沒辦法像很多人是,可以一直去摸不同的東西,例如看到個新的東西出來,就馬上想要打開電腦去碰,我也不是那種,遇到一個解不出來的問題就想要一直去解開的人。更不是那種可以一直帶著我愛的電腦,去世界各地旅行,沒事就打開來寫code的人。
所以一直以來,我也時常在懷疑自己,自己是否適合當一個工程師。
這幾年在英國認識了一些朋友,我也一直覺得其他人都很優秀,尤其是當我一個很好的朋友說,他喜歡選擇困難的事情來做的時候,我真的覺得很愧疚,因為一直以來我都在嘗試避免困難的事情,大概也是因為這樣我開始覺得,自己是不是根本不適合當一個工程師,因為我根本不想要做有挑戰性的工作。
可是回顧自己以前在DHL做個海運OP的工作的時候,又覺得自己在那種環境下,很容易疲乏,就是那種,我該學的都已經學玩,然後每天接電話打電話發Email, 遇到的問題也都是用類似的方式去處以就可以解決。我也覺得自己沒辦法就這樣做個十年二十年。
當然那樣的生活還是有好處的,至少你不工作的時候可以全心全意的放空,也不用每天回家還要擔心deadline, 擔心code寫不出來,或者去想到底要怎麼寫,也不用整天擔心新的東西出來,沒辦法跟舊的東西相容,或者是不學新的東西,自己會很快被淘汰掉。
有時候自己也在想,乾脆逃去其他國家寫程式會不會比較好?我們公司因為是全球性的,所以可以調派到其他國家,但是公司說,假設我們去了其他國家可能是senior level, 不代表我們在英國可能一樣是senior, 因為不同國家的科技和技術能力是不同的。這代表說,工程師即使在某個國家做到一定的程度,去其他地方也不代表一樣厲害,所以自己還是要不斷的學習最新的世界趨勢,學習新的科技,不眠不休。這也是為什麼工程師很容易過勞死吧!
以前在台灣一直加班我覺得是身體勞累,但現在我覺得自己比較是心靈上的勞累。我甚至覺得自己應該要早早退休,然後開一個小店之類的,來賣便當。
不過如果現在要我轉去做其他的職業我也不知道要幹嘛。即使都是工程師,都是科技業,也分得很細,尤其在英國都喜歡分門別類。工作到現在快三年,若你要問我我的強項是什麼,其實我也說不太出來,大概就是web 相關的東西吧!所以關於職涯規劃這件事情我也一直在思考。
我認為自己應該至少要有個什麼Machine Learning 的相關知識,然後一些系統設計,或者DevOps的能力跟知識要有。當然,大部分的人可能會問到,在英國如果當工程師,當到一定的歲數會需要轉管離職嗎?其實好像不一定,很多公司的管理職跟技術職都是分開的,也就是說你走管理也不一定會領比較多錢,反正有兩條路讓你選。有的人可能做到退休都是工程師。
在英國工作到現在,其實我還是常常會覺得很不順遂,不管是技術,文化還是語言,應該說也不是不順遂,就是不自然,當然很多可能還是跟我英文不夠好有關係,我雖然可能可以理解90%的內容,可是剩下的10%如果不懂還是讓人感覺煩躁。
當然現在的情況是比剛開始工作好很多了,至少很多技術的東西已經有經驗了。我覺得剛開始轉職並且在英國工作的時候,真的讓人覺得很心累,雖然說也可能是因為我的Team剛好都是英國人,不知道為何,即使是現在的公司,公司很多元化,我被分到的Team也幾乎都是英國人QQ
反正大概就是會有一個時期,或者偶爾在聊天的時候,你覺得別人在講的某個東西,你完全不知道是什麼。你可能就跟著笑這樣。。。或者在講一些專有技術的名詞時,別人可能知道,你卻不知道,就會有一種恐慌。
我自己是覺得這方面有逐漸改善一點點,希望我在現在的公司可以做得比之前好,至少我現在比較聽得懂大家的北方口音。
至於寫程式方面,還是一樣很心累,就有一種,無底洞的感覺,不管你怎麼學都學不夠,學不完。像是跑馬拉松但是永遠到達不了終點的感覺。從我一開始學寫程式到現在還是這樣。
但如果說可以回到以前剛開始學的時候,我想我應該會希望自己看到任何不會的東西都不要跳過。我知道那樣可能會變成學得很慢,可是很多時候,像是我們想要建立一個網站,可能我們會Google,然後就會看到很多建議,例如用WP, 或者推薦你用什麼vue, react, angular, 可是問題來了,即使你會一些基本的JS, 你可以用這些框架或library建一個SPA(一個網站), 你還是不知道它實際上是怎麼運作的。他底層是怎麼跑的。這樣會有什麼問題呢?
當你自己在家裡按照教學做都可以做得很開心,可是當你要改東西,或者在工作的時候,發生了問題,你就不知道該怎麼辦,因為你不知道到底發生了什麼事情,為什麼會報錯。
另一種學習路線是,好,我要學寫程式,然後你就開始去看學習物件導向,學Java, 初學者都是,學寫一個Class, 學習那些型別,然後寫個hello world, 按下那個play 鍵,他就自己開始跑一些東西,然後build好了,你就看到下面的視窗打出hello world, 接著教學就會說,那我們來簡單的寫一些function, 然後你就會寫出一些基本的加法function, 給他int a, int b, 就會跑出a+b的結果。
更進階一點可能會有一些題目是,印星星,或印九九乘法表,或者用Apache web server, 架一個簡單的網站。學一點html, 一點CSS, 一點JS, 讓他看起來漂亮一點。
這個時候你個課程就差不多結束,你也有一個作品。
如果你想要找工作,可能會發現,工作很多考的內容你還是不會,或者你開始工作以後,發現很多東西還是不會。因為前面你做的那些事情都只是,根據指示做,就像你去IKEA買了家具按照那個指示來做,可是傢俱本身都已經切好了,零件也都配給你。今天如果要你自己去工廠買那些材料才切割才做,設計一個櫃子,你也做不出來。
所以問題來了,到底要怎麼樣學寫程式?我覺得大概就是,在做那些教學的時候,去思考,我現在做的每一步,是為什麼,如果不知道,就去Google, 不要貿然的進行。然後做完教學以後,看看自己能不能做出一個跟教學類似但不一樣的網站,最好是可以不要一直看著教學。
可以拿白板或紙,來畫一些圖,想想自己要做什麼,例如我要做一個,賣衣服的網站,我需要什麼東西,或者我要設計一款小遊戲,我要創造幾個角色,要有哪些怪獸,要有哪些關卡。
我自己是沒有去過BootsCamp, 但感覺BootsCamp的訓練都滿扎實的。英國有滿多免費的(雖然大部分是Women in Tech)的,所以想轉職的男生們可能要找付費的。
很多BootsCamp也是保證找到工作的,找不到可能會退錢。或者可以嘗試那種網路上免錢的。
當你開始工作以後,你可能要開始思考,你寫的code乾不乾淨,你有沒有寫測試,甚至你可以嘗試練習TDD(測試驅動開發),思考怎麼樣可以寫出好的程式碼,什麼叫做好的程式碼,越簡單越好,簡單易懂,白話程式碼,如果今天一個不會寫程式的人,可以經過你的解說,看得懂你的code, 那你真的就大成功了。
為什麼說要簡單易懂,因為通常工作以後你寫的code不是只有你自己要看,還有別人要看,甚至一年後的自己要看,之後你是不是還看得懂,例如命名,例如空行,例如有沒有重複的?
像是在工作以後,很多同事會用一些詞彙,例如DRY(don't repeat yourself), 或者網路上也可以找到很多文章,寫說要怎麼樣寫出乾淨的程式碼。除了乾淨以外,還要思考延展性,就像DIY的傢俱,或者書櫃,你一開始可能買了一個兩層櫃,你會希望你如果要變成三層可以加上去。或者是床,沙發,你會希望他們是可以我不佔空間,好收納,或者可以延伸。寫程式你也希望你寫的一些東西是這樣子。例如共用的程式碼,你可以寫一個可以把'2019/12/03' 轉換成 ’兩千零九年十二月三日‘ 的function, 你會希望這個function, 可以被廣為使用,可以是'20191203', '2019,12,03', 進來都會被轉換成文字的寫法這樣,那你要怎麼做?可以先去思考以要做的事情,然後寫出測試
像是在JS很多的測試是非常口語化的
describe('dateConvert', ()=>{
it('should return date using word format', ()=>{
expect(dataConvert('2019/12/03')).toEqual('兩千零
九年十二月三日');
})
})
如果有錯誤請各位糾正
反正工作以後,寫測試變成一件很重要的事情,還有要怎麼寫,因為當其他同事在看你的code的時候,如果你有寫完整的測試,同事也會比較好看得懂你的程式在做什麼
當然,沒有一個開發方法是完美的,也沒有什麼完美的code, 即使寫完了以後,也要檢查看看自己能不能把它變得更好,像是使用 TDD就可以一直加上新的測試,然後去想能不能把它變得更好,去重構。
各位如果有興趣的話也可以買一些書來看,雖然很多書已經出版很久,可是程式設計,跟軟體工程這塊,經典還是經典,可以幫助你了解,為什麼現在我們都用C語言而不是A語言,B語言,為什麼我們大眾使用物件導向來寫程式,不是使用Functional programming.
當你工作越久以後,可能會越容易遇到,你要去選擇你要用的程式語言,你要用的框架,你要用的工具。
有一天我問我的同事,到底要怎麼貢獻開源,他說不要為了貢獻而貢獻,一般都是,你因為自己在用這個開源軟體,遇到了一些問題,所以你去把它改善,或者說你需要一個工具,可是你Google很久發現都沒有,於是決定自己做一個。
雖然我覺得以目前的我來說,還很難達到這種程度,但希望我有一天可以。就像Vue.js的創辦人因為覺得Angular.js不夠好,於是決定把好的部分留下,再加上自己覺得可以讓他變得更好的部分,創造了Vue.js
其實我自己也很害怕去討論這些非常技術的東西,我很怕自己講錯誤導大家哈哈
成為工程師真的需要很強的心臟,因為需要接受很多批評,很多反饋,才可以進步。當然有時候我也很玻璃心,常常因為被其他工程師點出自己的錯誤就心情不好,可是如果都沒有人批評自己,自己大概也不會進步。我想這大概是跟其他工作最大的不同吧!
以前在做海運出口的時候,即使可能做錯也不會一直被講,除非你真的是做了很嚴重的事情,不會你每接一通點話,每寫一封信都有人來看,有人來糾正,有人來說,你Email要怎麼怎麼改,你這樣寫不行。
可是寫程式,你寫出來的每一行code都可能被品頭論足,每一行code都要確保它的質量,當然我知道不是每個公司都有code review, 可因為我一直以來都有這個東西,也導致我覺得壓力滿大的哈哈
不知道分享這些會不會讓大家也覺得壓力大
同時也有1部Youtube影片,追蹤數超過7萬的網紅在地上滾的工程師 Nic,也在其Youtube影片中提到,這次想和你聊聊,關於技術深度和廣度的想法,因應每個人的際遇與選擇不同,最終也會長出截然不同的技能樹,但最重要的是,如何一步一步檢視自己的當前是否在自己所設立的目標方向上 希望透過這支影片和你分享我的看法,也歡迎留言和我分享你的近況和想法囉 喜歡影片的話!可以幫忙點個喜歡以及分享、訂閱唷!😘 ━━...
「react vue選擇」的推薦目錄:
- 關於react vue選擇 在 小吃貨的英國生活日記 Facebook
- 關於react vue選擇 在 小吃貨的英國生活日記 Facebook
- 關於react vue選擇 在 小吃貨的英國生活日記 Facebook
- 關於react vue選擇 在 在地上滾的工程師 Nic Youtube
- 關於react vue選擇 在 CodingStartup - YouTube 的評價
- 關於react vue選擇 在 React, Vue, Angular 三大框架,初學前端該選哪個? - Dcard 的評價
- 關於react vue選擇 在 Vue、React和Angular:該選擇哪個框架? | PTT新聞 的評價
react vue選擇 在 小吃貨的英國生活日記 Facebook 八卦
#關於成為工程師這件事 #文長慎入
如果有follow 我之前寫的種種文章,大概就知道我的一些經歷。但這邊還是來快速回顧一下。
大學的時候唸了歷史系,雖說跟分數也有關係,但一部分也是因為我對歷史很有興趣,小時候當所有人都想當老師,或醫生護士這種職業的時候,我總是想說要當那種什麼考古學家~探險家之類的,當然歷史學家跟發明家也是在考量的項目中,長大以後才發現,這好像有點不是現實中可以很容易實現的職業。
很多科目,像是歷史,或者其他社會科學相關的,在台灣畢業以後都非常難找工作,即使你認真向學,決定一路念到博士,也不見得畢業後可以找到教職或博後。即使是商學院畢業出來,在台灣可以做的也很有限,尤其當你是什麼管理學院相關的出來,也不太有機會直接躍升管理職。
台灣的產業其實比很多國家來的少,可以做的工作也有限,大部分都是科技相關,這也造就了台灣過去二三十年的榮光,到現在也一直是科技業為主流。當然科技業變成世界主流已經不是這一兩年的事情,全世界越來越多人想要擠進科技業,因為科技進步導致很多傳統產業面臨倒閉或者被迫改變。
說起來一開始除了自己想要試試看自己到底學不學得會寫程式這件情,再來就是因為不想一輩子領著低薪過著普通OL的日子,加上一直對國外有的憧憬,很想去國外看看外面的世界,體驗國外的生活,尤其是對歐美國家有著美好的想像。
要說當時為什麼做了這種倉促決定,其實大概就只是一個不甘心吧!因為在台灣沒有辦法念研究所,被各大學拒絕以後,就心想乾脆嘗試國外的大學,看有沒有人要我。其實大概就是個背水一戰的概念。
一直以來我都有點,盲目的亂衝。就是想到什麼就決定做什麼,當然有時候我也會變得很膽小,就會想太多,然後不敢前進。可是時常又覺得,應該要強迫自己前進,因為知道自己是個懶惰的人,所以不想辦法把自己帶到那個不得不的情況,自己就會一直怠惰下去。
說起來,一開始我也不是很認真的想要當工程師,也就是半推半就,覺得試試看的心態,身邊也沒有什麼人把這件事情當一回事,這都是到英國念研究所以後,才開始覺得自己可以做些什麼事情。但最近我也在反省,覺得自已以前在研究所也是很混,覺得自己第一年工作真的完全不知道在幹嘛。
最近到了新公司工作以後,發現公司很多人都是轉職的人,有人在媒體業待了十年,有人在金融業,有人從醫療產業,有人從產品經理轉職,大家都非常的認真,比我還要認真許多。
雖然我一直覺得,自己跟其他本科系畢業的人比起來,年紀很大,甚至會覺得自己轉行轉得太晚,有時候也會想說,為什麼自己國高中的時候不自己上網學寫程式,為什麼不好好念數學,這樣可以考個工程相關的科系。
可是在新公司遇到了很多他們以Graduate身份進來的轉職者,真的讓我覺得,其實自己轉的好像也不太晚。當然他們比我有毅力很多,很多人都是Bootscamp出來的,有的人甚至快要40歲了才以一個畢業生的身份進來。
我覺得在英國很好的一點是,這邊有很多公司可能願意收這種,想要轉職工程師的人。這些人有的可能甚至沒有唸過大學。
公司一個跟我一起onboard的資深工程師,他告訴我他沒有唸大學,全是靠自己學的,但網路上有很多開源專案他都是主要貢獻者。我覺得很厲害。
來英國以後我一直在反省自己,覺得有時候就是,自己會過得太安逸,就不太想努力生活,又或者覺得努力的生活好累,我幹嘛要這麼累,甚至會有一種,反正我只要表現得比其他人好就好。
因為一直以來在台灣的生活成長環境,我覺得自己的價值是被社會被周遭的人定義出來的。例如你的學歷,你的工作職稱,你的薪水,你的資產。
有時候我會覺得自己可能是個悲觀的人,又或者是其他人喜歡隱藏自已過得不好的部分?每次我看別人的部落格,或者別人敘述自己的職涯時,總是覺得別人的職涯好像都過得很順遂。
一直以來我都覺得,自己的職涯好像不是很順遂,其實跟很多人比起來好像已經不錯,畢竟有個工程師的工作,還是在國外的工作。可是實際上我都覺得,自己好像是個很差勁的工程師,為什麼自己好像寫出來的code都很爛,為什麼自己好像什麼都不會,為什麼自己好像學東西學得很慢,還有自己就是一個,很怠惰的人。我沒辦法像很多人是,可以一直去摸不同的東西,例如看到個新的東西出來,就馬上想要打開電腦去碰,我也不是那種,遇到一個解不出來的問題就想要一直去解開的人。更不是那種可以一直帶著我愛的電腦,去世界各地旅行,沒事就打開來寫code的人。
所以一直以來,我也時常在懷疑自己,自己是否適合當一個工程師。
這幾年在英國認識了一些朋友,我也一直覺得其他人都很優秀,尤其是當我一個很好的朋友說,他喜歡選擇困難的事情來做的時候,我真的覺得很愧疚,因為一直以來我都在嘗試避免困難的事情,大概也是因為這樣我開始覺得,自己是不是根本不適合當一個工程師,因為我根本不想要做有挑戰性的工作。
可是回顧自己以前在DHL做個海運OP的工作的時候,又覺得自己在那種環境下,很容易疲乏,就是那種,我該學的都已經學玩,然後每天接電話打電話發Email, 遇到的問題也都是用類似的方式去處以就可以解決。我也覺得自己沒辦法就這樣做個十年二十年。
當然那樣的生活還是有好處的,至少你不工作的時候可以全心全意的放空,也不用每天回家還要擔心deadline, 擔心code寫不出來,或者去想到底要怎麼寫,也不用整天擔心新的東西出來,沒辦法跟舊的東西相容,或者是不學新的東西,自己會很快被淘汰掉。
有時候自己也在想,乾脆逃去其他國家寫程式會不會比較好?我們公司因為是全球性的,所以可以調派到其他國家,但是公司說,假設我們去了其他國家可能是senior level, 不代表我們在英國可能一樣是senior, 因為不同國家的科技和技術能力是不同的。這代表說,工程師即使在某個國家做到一定的程度,去其他地方也不代表一樣厲害,所以自己還是要不斷的學習最新的世界趨勢,學習新的科技,不眠不休。這也是為什麼工程師很容易過勞死吧!
以前在台灣一直加班我覺得是身體勞累,但現在我覺得自己比較是心靈上的勞累。我甚至覺得自己應該要早早退休,然後開一個小店之類的,來賣便當。
不過如果現在要我轉去做其他的職業我也不知道要幹嘛。即使都是工程師,都是科技業,也分得很細,尤其在英國都喜歡分門別類。工作到現在快三年,若你要問我我的強項是什麼,其實我也說不太出來,大概就是web 相關的東西吧!所以關於職涯規劃這件事情我也一直在思考。
我認為自己應該至少要有個什麼Machine Learning 的相關知識,然後一些系統設計,或者DevOps的能力跟知識要有。當然,大部分的人可能會問到,在英國如果當工程師,當到一定的歲數會需要轉管離職嗎?其實好像不一定,很多公司的管理職跟技術職都是分開的,也就是說你走管理也不一定會領比較多錢,反正有兩條路讓你選。有的人可能做到退休都是工程師。
在英國工作到現在,其實我還是常常會覺得很不順遂,不管是技術,文化還是語言,應該說也不是不順遂,就是不自然,當然很多可能還是跟我英文不夠好有關係,我雖然可能可以理解90%的內容,可是剩下的10%如果不懂還是讓人感覺煩躁。
當然現在的情況是比剛開始工作好很多了,至少很多技術的東西已經有經驗了。我覺得剛開始轉職並且在英國工作的時候,真的讓人覺得很心累,雖然說也可能是因為我的Team剛好都是英國人,不知道為何,即使是現在的公司,公司很多元化,我被分到的Team也幾乎都是英國人QQ
反正大概就是會有一個時期,或者偶爾在聊天的時候,你覺得別人在講的某個東西,你完全不知道是什麼。你可能就跟著笑這樣。。。或者在講一些專有技術的名詞時,別人可能知道,你卻不知道,就會有一種恐慌。
我自己是覺得這方面有逐漸改善一點點,希望我在現在的公司可以做得比之前好,至少我現在比較聽得懂大家的北方口音。
至於寫程式方面,還是一樣很心累,就有一種,無底洞的感覺,不管你怎麼學都學不夠,學不完。像是跑馬拉松但是永遠到達不了終點的感覺。從我一開始學寫程式到現在還是這樣。
但如果說可以回到以前剛開始學的時候,我想我應該會希望自己看到任何不會的東西都不要跳過。我知道那樣可能會變成學得很慢,可是很多時候,像是我們想要建立一個網站,可能我們會Google,然後就會看到很多建議,例如用WP, 或者推薦你用什麼vue, react, angular, 可是問題來了,即使你會一些基本的JS, 你可以用這些框架或library建一個SPA(一個網站), 你還是不知道它實際上是怎麼運作的。他底層是怎麼跑的。這樣會有什麼問題呢?
當你自己在家裡按照教學做都可以做得很開心,可是當你要改東西,或者在工作的時候,發生了問題,你就不知道該怎麼辦,因為你不知道到底發生了什麼事情,為什麼會報錯。
另一種學習路線是,好,我要學寫程式,然後你就開始去看學習物件導向,學Java, 初學者都是,學寫一個Class, 學習那些型別,然後寫個hello world, 按下那個play 鍵,他就自己開始跑一些東西,然後build好了,你就看到下面的視窗打出hello world, 接著教學就會說,那我們來簡單的寫一些function, 然後你就會寫出一些基本的加法function, 給他int a, int b, 就會跑出a+b的結果。
更進階一點可能會有一些題目是,印星星,或印九九乘法表,或者用Apache web server, 架一個簡單的網站。學一點html, 一點CSS, 一點JS, 讓他看起來漂亮一點。
這個時候你個課程就差不多結束,你也有一個作品。
如果你想要找工作,可能會發現,工作很多考的內容你還是不會,或者你開始工作以後,發現很多東西還是不會。因為前面你做的那些事情都只是,根據指示做,就像你去IKEA買了家具按照那個指示來做,可是傢俱本身都已經切好了,零件也都配給你。今天如果要你自己去工廠買那些材料才切割才做,設計一個櫃子,你也做不出來。
所以問題來了,到底要怎麼樣學寫程式?我覺得大概就是,在做那些教學的時候,去思考,我現在做的每一步,是為什麼,如果不知道,就去Google, 不要貿然的進行。然後做完教學以後,看看自己能不能做出一個跟教學類似但不一樣的網站,最好是可以不要一直看著教學。
可以拿白板或紙,來畫一些圖,想想自己要做什麼,例如我要做一個,賣衣服的網站,我需要什麼東西,或者我要設計一款小遊戲,我要創造幾個角色,要有哪些怪獸,要有哪些關卡。
我自己是沒有去過BootsCamp, 但感覺BootsCamp的訓練都滿扎實的。英國有滿多免費的(雖然大部分是Women in Tech)的,所以想轉職的男生們可能要找付費的。
很多BootsCamp也是保證找到工作的,找不到可能會退錢。或者可以嘗試那種網路上免錢的。
當你開始工作以後,你可能要開始思考,你寫的code乾不乾淨,你有沒有寫測試,甚至你可以嘗試練習TDD(測試驅動開發),思考怎麼樣可以寫出好的程式碼,什麼叫做好的程式碼,越簡單越好,簡單易懂,白話程式碼,如果今天一個不會寫程式的人,可以經過你的解說,看得懂你的code, 那你真的就大成功了。
為什麼說要簡單易懂,因為通常工作以後你寫的code不是只有你自己要看,還有別人要看,甚至一年後的自己要看,之後你是不是還看得懂,例如命名,例如空行,例如有沒有重複的?
像是在工作以後,很多同事會用一些詞彙,例如DRY(don't repeat yourself), 或者網路上也可以找到很多文章,寫說要怎麼樣寫出乾淨的程式碼。除了乾淨以外,還要思考延展性,就像DIY的傢俱,或者書櫃,你一開始可能買了一個兩層櫃,你會希望你如果要變成三層可以加上去。或者是床,沙發,你會希望他們是可以我不佔空間,好收納,或者可以延伸。寫程式你也希望你寫的一些東西是這樣子。例如共用的程式碼,你可以寫一個可以把'2019/12/03' 轉換成 ’兩千零九年十二月三日‘ 的function, 你會希望這個function, 可以被廣為使用,可以是'20191203', '2019,12,03', 進來都會被轉換成文字的寫法這樣,那你要怎麼做?可以先去思考以要做的事情,然後寫出測試
像是在JS很多的測試是非常口語化的
describe('dateConvert', ()=>{
it('should return date using word format', ()=>{
expect(dataConvert('2019/12/03')).toEqual('兩千零
九年十二月三日');
})
})
如果有錯誤請各位糾正
反正工作以後,寫測試變成一件很重要的事情,還有要怎麼寫,因為當其他同事在看你的code的時候,如果你有寫完整的測試,同事也會比較好看得懂你的程式在做什麼
當然,沒有一個開發方法是完美的,也沒有什麼完美的code, 即使寫完了以後,也要檢查看看自己能不能把它變得更好,像是使用 TDD就可以一直加上新的測試,然後去想能不能把它變得更好,去重構。
各位如果有興趣的話也可以買一些書來看,雖然很多書已經出版很久,可是程式設計,跟軟體工程這塊,經典還是經典,可以幫助你了解,為什麼現在我們都用C語言而不是A語言,B語言,為什麼我們大眾使用物件導向來寫程式,不是使用Functional programming.
當你工作越久以後,可能會越容易遇到,你要去選擇你要用的程式語言,你要用的框架,你要用的工具。
有一天我問我的同事,到底要怎麼貢獻開源,他說不要為了貢獻而貢獻,一般都是,你因為自己在用這個開源軟體,遇到了一些問題,所以你去把它改善,或者說你需要一個工具,可是你Google很久發現都沒有,於是決定自己做一個。
雖然我覺得以目前的我來說,還很難達到這種程度,但希望我有一天可以。就像Vue.js的創辦人因為覺得Angular.js不夠好,於是決定把好的部分留下,再加上自己覺得可以讓他變得更好的部分,創造了Vue.js
其實我自己也很害怕去討論這些非常技術的東西,我很怕自己講錯誤導大家哈哈
成為工程師真的需要很強的心臟,因為需要接受很多批評,很多反饋,才可以進步。當然有時候我也很玻璃心,常常因為被其他工程師點出自己的錯誤就心情不好,可是如果都沒有人批評自己,自己大概也不會進步。我想這大概是跟其他工作最大的不同吧!
以前在做海運出口的時候,即使可能做錯也不會一直被講,除非你真的是做了很嚴重的事情,不會你每接一通點話,每寫一封信都有人來看,有人來糾正,有人來說,你Email要怎麼怎麼改,你這樣寫不行。
可是寫程式,你寫出來的每一行code都可能被品頭論足,每一行code都要確保它的質量,當然我知道不是每個公司都有code review, 可因為我一直以來都有這個東西,也導致我覺得壓力滿大的哈哈
不知道分享這些會不會讓大家也覺得壓力大
react vue選擇 在 小吃貨的英國生活日記 Facebook 八卦
#軟體工程師面試 #文長慎入
面試問題好像一直以來都是一個很多人關切的環節,在各大版上也一直有人會詢問。因為之前有幫公司面試一些人,還有加上從朋友那邊搜刮來的經驗,概括分享一下。
這邊感覺可以分成幾個部分:
1. 面試的題目是否都是演算法相關題目?
2. 是為什麼實際工作內容通常都和面試考的沒有相關?
3. 我現在學的東西對找工作是否有幫助?
4. 公司招募看的到底是這個人的學經歷,能力,個性,還是什麼,為什麼有些人很感覺很厲害卻一直無法拿到offer?
其實用FB排版不太容易,但因為懶得登入部落格,想說快速地打一打,所以也請各位見諒。
#面試的題目是否都是演算法相關題目
如果是投FANG之類的,Facebook Amazon, Neflix, Google (沒記錯應該是這幾間),反正就是這些有名的大廠,除了Netflix目前沒有遇到認識的聊過,其他都是考演算法沒錯。
當然也不只有會考演算法,根據你申請的職缺,可能也會加考一些其他的東西。
那其公司是怎樣呢?其實還是有很多公司會考演算法相關的,尤其是線上面試。
雖然在疫情下全都是線上,但一般來說,還是會有分兩種,一種是沒有真人的狀況下,就是給你像是HackRank這種網站,你點開可能有六十分鐘讓你做兩題。
做完以後你提交,你也不會知道你的分數跟分析結果之類的,看公司怎麼做設定,而且除了演算法相關題目,也可以設定選擇題之類的。
另一種就是真人面試,通常電腦自動面完以後,你可能會跟真人線上面試,真人也是會給你類似所謂的白板題,就是出一個題目讓你現場解題,然後中間可能有的會要你跟他討論,當然看面試官拉!
比較加分的還是,你編寫的時候可以邊闡述自己的想法,而不是低頭默默寫完,這樣也是有點尷尬。如果你編寫邊闡述的話,或者是少有點互動,也是展現你的溝通能力以及你對於題目的掌握能力,就像是你看到一個很簡單的題目 (2+3)*5 之類的,你可以很有自信的說,喔因為2+3在括弧裡面,所以要先算,然後再乘以5,展現底是真的有理解,而不是就是背題目之類的。
有些公司也可能是給你回家作業,叫你做一個小專案之類的,看你應徵的職缺,可能是叫你做一個UI 或者叫你建一個API 也可能叫你做一整個比較完整的東西出來。如果你是面試架構師的話,可能會叫你建一個架構,或設計一個架構出來。
然後也有的公司(像我們公司)就是需要pair programming 所以在線上面試的階段就是會有,真人跟你一起寫程式這樣。
#為什麼實際工作內容通常都和面試考的沒有相關
這個部分一直以來都是一個難解的謎題。像是Google Facebook這種大公司其實不難理解,畢竟他們是比較類似General 的招募,不是一開始就決定好你就是要去某個Team然後永遠讓你待在那個Team。就他們招募的是他們覺得,有潛力的人才,這樣不管需要做什麼都可以自由移動他們,給他們training就可以變得很好用。加上他們一次招募的數量也是相當龐大,考演算法相關的話,可以快速篩選,也更有機會找到他們需要的人才。
因為像是Facebook或Google這種有自己開發框架,開發技術的公司,他們的確有很多時候需要寫演算法或者系統優化的工作。
那像是普通的中小企業或新創,說真的,其實就是跟風。因為覺得人家Google Facebook都是這樣找到優秀人才,那我們也要依樣畫葫蘆,這樣鐵定也能找到厲害的人。
可是這樣找到的人進去以後,發現公司好像也是不知道在幹嘛,最後可能也會待不下去。所以這個部分,近年來也越來越多公司開始改進,開始思考什麼樣的招募流程最適合自己公司。
像是pair programming也開始成為近年來的一個流行的面試,有的公司並不是真的pair 但就是你要跟他們一起工作,了解他們公司的文化,或者跟他們的工程師進行一些深度討論。或者會問你說,假設給你設計一個系統,你要怎麼做之類的。
當然,面試問題跟流程都是每間公司各有不同,不是說你現在準備一種就萬無一失。所以說最好還是盡可能的,提升自己的基礎能力。
如果真的就是打算以FANG為目標的話,就可以從刷題開始,像是Leetcode, Hackrank, codewars之類的都不錯。之前有看到一篇文章,他刷了幾百題,而且每題刷了三次以上,真的很有毅力。刷題的重點就是在於熟練那些題目,可是也不要硬背,你練習是要練那個速度感。可是該理解的還是要理解。
因為你進公司以後,你還是需要使用那些東西來工作,不是只是為了刷題而刷題,而且面試官可能也會考你變形題之類的,或者問你一些記憶體相關的問題,或者是系統設計的問題,或者單純想知道,你是怎麼想出解法的,所以硬背題目跟答案其實也是不太行。
目前我的了解是,大部分中小型企業或者新創,很多時候你學習新東西的能力是比演算法更重要的,尤其是新創你什麼都要會,假設公司是剛起步的新創,你就要變成公司主要的技術專家,什麼東西不太會也要馬上現學現賣,也不要期望公司可能會給你什麼Training 或者有人給你依靠,可能同事還要依靠你。
中型或者普通大型企業,假設公司已經有產品的話,大部分的時候可能是既有產品維護,除非你剛好很幸運地在新產品開發的Team,這樣就有機會學到很多東西,不然維護的話,很多時候只是在了解產品本身是否有Bug,改善code品質之類,也要看公司是否有想花成本在維護上面。如果公司就是打算一個產品,改一點東西就繼續賣錢,那樣好像也不太需要一直去migrate 或者搞新東西上去。
如果你剛好很幸運在獨角獸新創,那你不但可以學到很多東西,還可以用最新科技,可能還有機會遇到大神帶你。
所以說選公司其實也是有點重要,面試的時候,可以問問他們說,那你平常的daily work是怎麼樣的,公司有沒有走敏捷開發,公司有沒有用雲端,公司一個Team的規模之類,以及公司會不會提供訓練。
#我現在學的東西對找工作是否有幫助
其實這個就要看你的未來三年五年十年規劃。
假設你就是都在寫前端,你也覺得我要寫前端寫一輩子,那好像就可以繼續一直focus在前端。如果你擔心自己會丟飯碗,是不是要學點後端,其實也是可以學,可是學了以後,你打算學得多專精?後端的東西也是會一直更新,一直進步。可能Restful API 也可能不是,DB也有好多種DB, 後端語言也很多種,所以你是想要學個大概,還是是希望,後端也問題的時候,自己可以去看code也看得懂?
前一個專案,公司有一個前端,他就是因為自己做的ticket幾乎都會碰到後端,就乾脆把整個後端也寫一寫,就變成fullstack,雖然他主要還是算前端。但也因為是.NET 所以前端跟後端可能沒有太明顯的分界,至少我相信他本來就會寫.NET了,因為幾乎有一半以上的controller都是他寫的。
如果你是寫react SPA,就是跟後端完全分開,你就只要寫到send http request 那邊的話,那好像也不太需要去了解到後端的架構,就是大概知道後端的endpoint 長什麼樣子就好,他們需要提供的文件就是需要提供。
如果說你是怕以後失業,怕公司可能覺得請全端比較划算,那的確還是多學一點好,反正多學也是投資自己。還能順便展現自己的上進心以及學習能力。
以consultancy來說好了,感覺是什麼都要學,像是公司可能就會說,啊最近我們的客人都要求要會什麼什麼,那你就趕快學一下。當然公司也不是很壞心的就叫你要馬上學會,公司最近也是有開始提供一大堆Training 之類的,還給你錢讓你去考一些證照。
目前我使用的語言主要還是Javascript 和 C#這樣,然後公司有希望我可以好好學學Java。其實也不是不會寫Java,如果有發漏我其他文章的話就知道,其實我最一開始學的時候,第一個語言就是Java。
在台大資訊系統訓練班的時候,我就上了Java和PHP的課程,為自己來英國念研究所做準備,一年的master course也都是Java 跟PHP為主,然後有用了一點Python這樣。可是工作以後就只有使用C#和Javascript 而已,所以說,學校學了也不一定會用到。
很多東西都是工作以後才學的,然後Python是平常自己刷題的時候會用,因為覺得不錯用。
其他的話,我覺得雲端相關的東西滿實用的,像是AWS或Azure 或GCP 有機會的話是可以自己摸摸。我自己是滿幸運的在工作上一直都有用到雲端產品,主要是AWS,前一個專案有用Azure 這樣。
DB的話,就是SQL和NoSQL可以個學一個,應該就滿好用的了,目前最流行的應該就是PostgreSQL和MongoDB 。如果對於Graphic Database有興趣也可以稍微看一下像是Neo4J之類的吧!
前端框架的話,就是React, Angular, Vue.js選一個吧!學會一個以後再去學其他的也不難,這三個我是剛好工作上都有用到,我自己是覺得Vue和React應該是比較好上手的,入門門檻比較低,Angular就一定要寫Typescript.
後端框架的話,看你用什麼語言,Java就學spring boot,
C#就是.NET,JS的話應該是Express,Python就Django,PHP就Laravel 。
Mobile的話我沒有寫過也不知道。
如果是平常想要補充知識的話,可以多念一些像是security 相關的東西,或者是Oauth那類的,也可以看一下架構之類的。像是Microservices, microfrontend, Domain Driven Development 這些概念性的東西。
也可以看一些像是Clean Code相關的書,怎樣重構原本的爛Code或者TDD相關的書。
反正前一篇文章就說了,這個職業就是要一直學,活到老學到老,如果打算做到老的話。
#公司招募看的到底是這個人的什麼
其實每個公司應該都不太相同。有的公司就是要招募他們覺得最聰明的人,所以就是一直問你一些很難的東西。或者就是只要找那種名校出來的人,最好有什麼數學物理奧林匹亞的。
有些公司看的是你的個性,符不符合公司文化,或者同事喜不喜歡你之類的。
有些公司就是很缺人,看你能不能馬上上工之類的。能的話就馬上錄取你之類。但通常那個可能是很雷的缺,例如公司找人找很久都找不到,終於看到一線希望。然後為什麼找不到人,可能是薪水開的偏低,或者公司名聲不好,上Glassdoor就可以查看公司的評價。也可能是職缺本身很雷,例如看起來就是個打雜缺。或者是前人都做不久就離開,所以需要一直找人。
有些公司是看你寫的code 例如看你的code乾不乾淨,可能你寫出來的code都很乾淨,設計也很好,思路也很清晰,他們就會錄取你。
有些公司看的是你有沒有某些特定的經驗,例如公司開那個缺剛好就是要找有AWS經驗的人,所以可能就是會錄取他們覺得AWS經驗比較多的人。或者是剛好想找之前有做過Serverless架構的人,或者是有碰過Kubernetes的人,這個時候真的就是靠經驗了。
也有的公司就是,他們也懶得找人,HR給他們面試的第一個人就會錄取,這個完全靠運氣。這件事情真的發生在我第一間公司的另外一個Team,主管非常不喜歡面試人,也覺得我工作都沒時間還要面試。所以就是隨便問問之類的,然後就跟HR說好。
--------------------------------------
以上就是我目前經歷過以及別人分享給我的經驗。我覺得面試的話,運氣真的也是佔滿大的比例,尤其是遇到像第一間公司那種狀況的。
當然年輕的時候可能會比較急躁,也很擔心自己找不到工作,考量到的還有金錢跟公司名聲,所以學不學得到東西也可能是其次。
選offer的時候,也可能就是可以分析一下,自己想要的到底是什麼,是金錢,是做得開心,還是想要可以做的久(這個也要看公司可以活多久),除了看Glassdoor也可以上網看一下公司財報。
最近的疫情衝擊下,有很多新創或中小企業也開始裁員跟減薪,所以公司平常的財務狀況和經營方針也是很重要的。即使公司可能一直都有收入,也可能因為現金管理問題,導致沒有足夠現金需要裁員。
react vue選擇 在 在地上滾的工程師 Nic Youtube 的評價
這次想和你聊聊,關於技術深度和廣度的想法,因應每個人的際遇與選擇不同,最終也會長出截然不同的技能樹,但最重要的是,如何一步一步檢視自己的當前是否在自己所設立的目標方向上
希望透過這支影片和你分享我的看法,也歡迎留言和我分享你的近況和想法囉
喜歡影片的話!可以幫忙點個喜歡以及分享、訂閱唷!😘
━━━━━━━━━━━━━━━━
⭐ 蝦皮賣場: https://shopee.tw/bboyceo
⭐ instagram (生活日常): https://www.instagram.com/niclin_tw/
⭐ Facebook (資訊分享): https://www.facebook.com/niclin.dev
⭐ Blog (技術筆記): https://blog.niclin.tw
⭐ Linkedin (個人履歷): https://www.linkedin.com/in/nic-lin
⭐ Github: https://github.com/niclin
⭐ Podcast: https://anchor.fm/niclin
━━━━━━━━━━━━━━━━
🌟 任何問題或合作邀約信箱: niclin0226@gmail.com
#前端 #後端 #工程師 #software #engineer
react vue選擇 在 React, Vue, Angular 三大框架,初學前端該選哪個? - Dcard 的八卦
React, Vue, Angular 三大框架,初學前端該選哪個? ... 順便問大家我是嘉義人假如台北薪水4萬,台中薪水3萬都要租房子,大家的選擇呢. ... <看更多>
react vue選擇 在 Vue、React和Angular:該選擇哪個框架? | PTT新聞 的八卦
Vue 、React和Angular:該選擇哪個框架? 公開日: 2020-08-02. 作者| InVerita. 譯者| Sambodhi. 策劃| 蔡芳芳. 本文對三個最流行的JavaScript 框架進行了全面的 ... ... <看更多>
react vue選擇 在 CodingStartup - YouTube 的八卦
常常有朋友問說要不要學jQuery;做一些簡單的項目Vue、React 太繁重。 ... Alpine.js—Vue ... ... <看更多>