#學習寫程式 #誰可以成為軟體工程師 #小吃貨轉職日記 #個人心歷路程
不知道是否還有人記得,很久以前我問了大家一個問題是,覺得什麼樣的人可以成為軟體工程師。
其實一直以來,我覺得只要會英文的人就可以學會寫程式,就可以成為軟體工程師。
為什麼會這麼覺得呢?
首先,就像是,你覺得誰學會使用電腦是一樣的道理。如果你在三十年前問大家這個問題,可能很多人會覺得,只有念相關科系的人可以學得會。
在我們還在DOS的時代,還在打指令的時代,那時只要會打字,就可以成為文書處理專業。沒錯,那個年代,文書處理是一個科系。
但現在,有誰會去大學念一個科系,只有學打字使用Microsoft Office系列。
當然,軟體工程師也並不是一個容易的職業,就像我之前提過的,這個職業也有很多利與弊,不是像外面形容的那樣,好像坐在電腦前面打打字就可以做的,或者像其他工作那樣,可能學了一技之長可以用很久,這個行業的一技之長,可能很快就過保鮮期了。
回到學習寫程式這件事情,在台灣聽很多人都說,「啊!寫程式就是要有天份啦!」「聰明的人啊!」也看過很多網路上的人在吵,資工vs 資管 vs 非本科系什麼之類的。
最近有朋友問我說,為什麼在台灣的時候學不會,可是來英國以後我就學會了,是因為來英國以後特別努力嗎?
其實你到現在問我學會了嗎?我也不會跟你說我什麼都會。但的確光是coding這點,我覺得在台灣學習跟來英國學習最大的差異還是在,學習的動力上面。
在台灣的時候,其實有點為了學而學,從來沒有思考過自己是否真的有興趣,有時候以為自己其實也滿有興趣的,因為那些東西以前沒有碰過,可是只要碰到一點瓶頸 ,就會開始退縮,覺得好煩喔!這些東西怎麼這麼難,只要上課聽不懂老師在說什麼,就會很不想繼續學。
在台灣除了去資工系修課以外,也有去台大資訊系統訓練班上過課,也有上過一些線上的課程。
幾乎都是同樣的感覺,甚至覺得,自己是不是年紀大了,感覺什麼都學不會,聽不懂,自己好像很笨。
來了英國以後,上課的第一天,老師說,我會用英語授課,而且不會為你們放慢速度,因為你們必須要去習慣。當時覺得自己更不可能聽懂,也不可能學會。
可是我們上課的狀況通常是,一天上課兩個小時,上完以後有兩個小時的實驗課,大家坐在電腦前,老師一個一個看你做的東西,從很小的東西開始學。
我覺得這個應該算是滿關鍵的,就是有沒有動手實作。然後不會的話老師也很耐心的教,此外老師還有另外的課後時間,只要我們有問題都可以去找他。
在實驗課的時候,中間只要卡住,老師也會盡量讓我們自己去思考,而不會直接告訴我們答案,例如會問我們,為什麼你想這麼做,這麼做的原因是什麼。
我記得很久以前在台灣的大學,問了老師一個問題,老師的答案是,你以後就會知道了。當下其實就讓人覺得有點反感,而且後續問老師很多問題,老師也是都這樣,這個以後就會學到了。
我自己算是一個滿會因為老師而喜歡一個科目或不喜歡一個科目的人。就像我小時候很討厭數學課,也是因為不喜歡數學老師。也不是真的不喜歡,就是有一種覺得,反正老師也不在乎我學不學的會,只在意那些學得好的人。
在台灣也聽過很多人說,啊要學會寫程式,數學就要先打好基礎,數學不好怎麼寫程式。可是真的成為工程師以後,在工作上根本沒用到什麼基礎數學啊!
其實在英國也遇過很多數學系畢業的,可是害怕寫程式的人也很多,他們這邊通常學校會有一兩堂課是寫程式,可能學個Python, 像我之前念書的學校,學不好的很多,一些很厲害的大學的數學系,也有人就乾脆放棄那門課,不學,因為覺得很複雜,他們寧願把時間拿去研究純數。
不過現在的電腦,都會幫你做好各種基本數學運算了,大部分現在的程式語言,你要跑什麼線性回歸什麼的都幫你做好了,也想不到什麼時候會用到三角函數之類的,除非你的工作是什麼data scientist 之類,可能要建立複雜的數學模型,或者quant 那類的,不然就算你要做Machine Learning這類的東西,也有很多已經現有的工具,軟體工程師大部分就是拿來跑一跑。
要是你真的是做機器學習相關的研究,人家也不要你軟體工程師,人家要的是資料科學家背景,人家至少要你有個PhD唸完再來,你要至少會讀paper, 寫paper做研究啊!!
如果是醫學相關的軟體,需要有專業技能,人家也要找醫學背景的來,如果是金融相關的,需要有非常多的金融專業技能,當然也是從金融背景的比較容易。
通常軟體工程師,普通的軟體工程師職缺,就是不太會需要太多納些相關的專業領域,他們也願意你進去了再學,你主要需要的是快速學習、適應環境的能力,還有溝通能力,這樣如果跟其他專業領域的科學家、研究員、分析師溝通之類的,至少你可以不會有太多的障礙。
當然,軟體工程師的工作也可以細分成很多領域,像是遊戲產業的軟體工程師,或者IoT產業的軟體工程師,甚至還有像是軟體架構師、軟體分析師、資料工程師之類的,他們可能需要使用到的技能也不一樣,但也不會沒事就需要叫你算個三角函數之類的.........通常你的背景還是在於你對於寫程式的熟悉程度,你會使用那些工具,你是否是個團隊合作的人,能否跟大家一起寫程式。
總之,回到前面說的,所以到底學習寫程式需要什麼,英文真的是很重要的一環,因為程式語言本來就是英文為主,在來就是網路上的資源,也幾乎都是英文為主。還有你寫程式的環境,也幾乎都是英文,像是你使用的工具,回報給你的錯誤訊息也常常可能是英文的。
來英國以後一直在思考的一點,在台灣討論到會不會寫程式,或者學不學的會,通常英文好的話,也可能在閱讀文件方面比較快,可以快速學到一些東西。
語言也不是全部,如果已經在工作的話,工作環境也很重要,學習環境也很重要,在學校如果遇到一個很好的老師,或者有一起學習的夥伴們,也會比自己一個人獨自專研來的快,不過每個人的學習方法不同,更重要的是找到自己喜歡的學習方法。
反正如果你想學的話,也不用管其他人講什麼,想學就學啊!當初我要學的時候,也很多人覺得我不可能學的會或者不可能成為軟體工程師之類的。
其實也不是因為我原本念歷史系的原因,主要就是,大家覺得,我是一個沒有邏輯,邏輯不好的人。還有覺得我是一個三分鐘熱度的人,以及數學指考考了不到30分。這些我也都寫在部落格裡面了,所以一直以來都有在看我文章的人,大概也都知道了。
當時,我大概聚集了所有身邊當工程師的朋友,都覺得不可能會成為工程師的因素吧!但現在我還是做為一個軟體工程師賺錢就是了。
有時候想做什麼就去做,反而是一件比較容易的事情。尤其是學習這種事情,網路上也有很多資源可以學習也不一定需要花錢。
在學校的時候,除了老師給予我一些自信以外,另外也是在英國認識了一些人,給予了一些鼓勵,有些素未謀面的人,也有些一面之緣的人,可能也是因為他們不認識原本的我,所以都覺得,沒有什麼是我不能找到工作或成為軟體工程師的原因。
現在想想,或許這就是初生之犢不畏虎的概念,當初沒有想太多就跑來英國,然後來了以後才開始覺得必須要努力一點才能找到工作,中間也遇到了很多困境,工作以後也曾經想過要放棄當軟體工程師,想要去當個什麼辦公室助理之類的。
也經歷了很多覺得很困惑的時期,雖然自己現在還是滿困惑的。但我覺得如果你真的想要學習或者轉職,只要做好功課(這點真的滿重要的,至少不要覺得只是看別人好像不錯,就決定要去做,至少要衡量一下利與弊),就可以去做吧!也不用管別人說你適不適合走這條路怎樣的。
每個人適合走的路也不太一樣,還沒走之前都看不到,就算你看身邊的人都怎樣,自己還是自己。
「不 學 coding 的 邏輯 思考 工程 溝通 更 容易」的推薦目錄:
不 學 coding 的 邏輯 思考 工程 溝通 更 容易 在 小吃貨的英國生活日記 Facebook 的最讚貼文
《小吃貨的英國日常》軟體工程師到底在做什麼?
很多人常會想像軟體工程師就是,在電腦前做一些什麼,然後進階一點可能會覺得就是在寫程式,偶爾聽到他們說什麼Debug, 這也是我在成為工程師前,對工程師工作日常的想像。
實際上,其實軟體工程師也分很多種,例如Web類還有分前端後端全端,手機類,還有像桌上型程式,其他也有像測試工程師,遊戲工程師,網路安全工程師,架構工程師,每一種工程師都不見得知道其他種的日常,甚至不同公司,不同產業使用不同的開發模式,像waterfall, agile, 有沒有CI/CD,DevOps,雲端,版控都差很多……
至於我到底在幹嘛……目前邁入工作的第二年,相較於第一年的菜鳥訓練生生活真的差很多,大概就是漸漸步入軌道,越來越接近一般工程師的生活。由於我們team是走DevOps, CI/CD,Agile, 基本上每天早上都要開會scrum,每個星期一有weekly planning, 要plan task。那開會在幹嘛呢?就是要報告自己昨天做了什麼?任何瓶頸?今天要做什麼? 這樣有問題可以馬上和team討論,team member 也才會知道你在幹嘛。每個禮拜一除了會run一次scrum 還會把一些任何做plan, 就是討論這個任務在做啥,怎樣task break down, 這個很重要,因為task 的size也很重要,要分幾個sub task, 要做什麼,誰要做,有任何問題? 需要再跟設計師討論? 當然因為DevOps, 我們所有meeting 設計師跟測試還有PM都會在,更方便討論。其他時候我們就自己認領task去做,做完丟給team leader review, code review 完才去測試工程師那, 然後才deploy, 所有流程都在Jira Kanban 版上,所有做了多少時間都要log work, 供PM看Team Leader 掌握進度。我目前是fullstack 全端,所以前後端都要學, 而學習主要還是自學。和其他工作很不一樣的是,工程師大多要自學,自己找資源,看影片,看文件,所以比較痛苦的大概是英文閱讀,另外是溝通,因為要一直開會,一直討論,還有要跟設計師,測試討論,這大概是因為DevOps, 所以更會這樣。這一年來我英文閱讀跟口說進步神速,而真正coding 反而沒那麼多,更多是在做AWS, 寫script, 雖然寫script 人家也會說寫程式,可是現在更像是了解computer science, 要知道很多系統,很多規格,很多Design Pattern 的東西,而前端框架也是,更多是怎樣設計,演算法別人都包好了,後端也是框架都包好了,一來不容易出錯,二來容易測試,反而跟以前所想像的工程師工作或在學校學的差很多。在工作上更重要的是Software Engineering, 怎樣寫出clean, high availability, testable, readable 的code比你想出很聰明的方法更重要。有時很efficient 的function, 可能很難測試,可能有漏洞,可能很難相容。
不知道大家會不會覺得工程師的日常好像很無聊呢~哈哈!至於工作環境,英國和台灣一樣,女生工程師很少,所以大部份的同事男生,大家可能會幻想那,英國的男生對女生都很紳士什麼的。在我公司一點也不會,反而會覺得男生工程師都講話更Aggresive,當他們覺得就是這樣,就很難改變他們意見,有時候他們講話也沒在客氣,質疑你的想法,批判你的想法都很直接。但也因為這樣,有時候一群男性工程師更容易做出太果斷的決定,通常他們就只有Yes 或No居多,所以工作環境的diversity 也很重要。當然另外,普遍男工程師也比女工程師更有自信(網路上有研究數據),可能是環境的關係,所以就更容易做出偏頗的決定,而且因為團隊中可能只有一個工程師是女生,有時也很難真的有diversity 的效果……而且當團隊80%都持意見A時,往往就不會考慮到剩下的20%,即使那可能是軟體開發很重要的一環。可能也是因為我英文不夠好又是外國人,又是團隊中唯一的女工程師,就也常常不知道何時可以發表意見或害怕講話,怕講錯話,而且英文也很難完整表達,這大概也是未來需要努力的部份吧~另外就是看文件的速度還有思考邏輯。每次我如果描述一個問題,我主管都會說,這不是工程師用語,你要用工程師的用語,像defect, tech debt, 或者不能說I don't know, 當你不知道的時候就要馬上找到原因,而不是問人,你即使問人也要說你覺得可能的問題或原因。
#覺得當工程師好難
#一有空檔就到廚房偷懶