🔥 "หากอยากจะศึกษาภาษาเขียนโปรแกรมซัก 1 ภาษา เราจะเลือกภาษาไหนดีนะ !?"
.
วันนี้แอดเอางานสำรวจจาก IEEE ที่รวบรวมรายชื่อ Programming Language ที่มาแรง เรียกได้ว่าใครอยากเข้าบริษัทระดับโลก ที่อยู่ใน Fortune 500 จะต้องรีบศึกษา !!
.
ว่าแต่จะมีอะไรบ้างนั้น มาดูไปพร้อมกันเลยย <3
.
👉 1. Python ภาษาที่ควรเรียนรู้ และ ดีที่สุดสำหรับผู้เริ่มต้นทำได้ทั้ง Web App, Desktop App, Network และ Data Science
.
👉 2. Kotlin ภาษาที่ถูกออกแบบมาใหม่ และ ลบข้อเสียของ Java เดิม ๆ รองรับการพัฒนา Android App แบบเต็มตัว
.
👉 3. Java หนึ่งในภาษาที่ได้รับความนิยมสูงสุดในโลก ทำงานบน Server-Side ได้สบาย ๆ และ เป็นภาษาที่ 90% ของบริษัทระดับโลกใน Fortune 500 เลือกใช้งาน
.
👉 4. JavaScript / NodeJS แม้ว่า NodeJS จะไม่ใช่ภาษาตรง ๆ แต่มันทำให้ JavaScript กลับมามีชีวิตชีวาอีกครั้ง ดังนั้นแล้วปัจจุบันภาษา JavaScript ถูกพูดถึงในวงการเป็นอย่างมาก ทั้งบน Server-Side และ Client-Side
.
👉 5. TypeScript หลายคนบอก JavaScript มันวุ่นวาย ดังนั้น TypeScript ตัวนี้จะมาช่วยพวกเราเอง ไม่ว่าจะเป็นการรองรับ OOP และ ทำงานกับ JS เดิมได้แบบไร้รอยต่อ
.
👉 6. Go หนึ่งในภาษาใหม่มาแรงในปัจจุบัน รองรับการเขียนแบบ Functional Programming ที่กำลังฮิต
.
👉 7. Swift ภาษาที่ถูกพัฒนาโดย Apple ที่ได้รับแรงบันดาลใจจาก Python และ Ruby ทำงานได้เร็ว ปลอดภัย แถมยังเรียนรู้ง่ายอีกตะหาก !
.
"เรียกได้ว่าภาษาเหล่านี้เหมาะจัด ๆ สำหรับใครกำลังมองหาอยู่ว่าจะเริ่มจากตรงไหนก่อนดี แต่แอดแนะนำว่า .. ถ้าพื้นฐานเราแน่นซักภาษาแล้ว การกระโดดไปภาษาอื่น ๆ ก็ไม่ใช่เรื่องยากอีกต่อไป"
.
ดังนั้นนน อย่าเรียนรู้แค่ฉาบฉวย แบบสร้างได้ แต่ไม่รู้ที่มาที่ไป เพราะมันจะทำให้เราติดกับดักในการพัฒนาสกิลได้นะคร้าบบ <3
.
#borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
functional programming js 在 小吃貨的英國生活日記 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, 可因為我一直以來都有這個東西,也導致我覺得壓力滿大的哈哈
不知道分享這些會不會讓大家也覺得壓力大
functional programming js 在 小吃貨的英國生活日記 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, 可因為我一直以來都有這個東西,也導致我覺得壓力滿大的哈哈
不知道分享這些會不會讓大家也覺得壓力大