是不是要「很聰明」、「數學很好」才能寫code?
文章推薦指數: 80 %
但我不是很能夠被這個答案說服,因為我以往跟程式語言的歷史告訴我,寫code 是很困難的。
我從高一第一次接觸C++,到後來大一上土木工程系的必修課也是修C ...
Skiptomaincontent
是不是要「很聰明」、「數學很好」才能寫code?
on
December09,2019
Getlink
Facebook
Twitter
Pinterest
Email
OtherApps
在我去年開始自學寫程式之前,我常常問是軟體工程師的朋友:「寫code很難吧?感覺超難懂。
」在我心目中,寫code跟「數學能力」最有關係。
有趣的是,凡軟體工程師給我的回答,幾乎都一樣:「不會呀。
學寫code就像學英文、日文那樣,就是一個語言。
」
但我不是很能夠被這個答案說服,因為我以往跟程式語言的歷史告訴我,寫code是很困難的。
我從高一第一次接觸C++,到後來大一上土木工程系的必修課也是修C++,經驗都蠻慘的,因此我就宣判自己沒有寫程式語言的天份。
直到去年我從零開始再次透過線上課程自學寫code,我才終於體會朋友們說的「學code就像學任何一個異國語言一樣」這句話的意思。
就從我高一的時候,第一次接觸程式語言的故事說起吧!那時是我學校的物理老師鼓勵我學程式語言的。
他以完全免費的方式輔導我在假日期間學C++,大概也是看到我對理工科有興趣,想說我可以自學寫一些小程式、搞不好還能參加什麼比賽之類的。
於是他給我開了書單,讓我買了兩大本比字典還厚的C、C++教學工具書(這種書現在還存在嗎?)來看,並且給我出功課,要我自己研究怎麼做出一些程式。
但朽木如我,一直碰壁,步步都感到挫折。
那時的我,還不知道怎麼「自己找答案」,因此我心中一直期待老師可以好好示範他到底要我做什麼,因為我連他出的功課的題目、他到底想要我做些什麼我都不了解,也不知道從何問起。
現在回想起來,老師心中一定是想:「這有什麼難的?自己看書,看不懂去找答案,不就這樣嗎?實際做做看、做不出來用力想直到做出來為止,難道還要手把手教學嗎?」但要知道那時候的我,雖然很喜歡數學、物理,理工能力不差,但「電腦」對我而言,就是一個玩接龍和踩地雷的工具,因此我連怎麼按照書上的說明去設定寫程式的環境都搞不清楚。
總之,第一次學寫程式的經驗,就在我心中無限多個黑人問號中無疾而終。
直到上了大一又再次遇到C++。
這次我以為我可以學得比較好,畢竟這是我第二次跟C++碰面了。
我們用的課本,再次是那種厚得令我第一天就把它切割成三分的工具書。
但豈知第一堂課老師也就講完差不多三分之一本課本,一下就上完一、兩百頁的進度。
「等等啊!」我心中吶喊。
第一堂課我們就從HelloWorld上到forloop,而且是雙層的forloop,因為要用程式語言畫出這個形狀:
*
***
*****
***
*
老師在台上說第一層forloop要iteratei,第二層forloopiteratej...但到底i跟j對應的是星星的什麼?完全沒有時間消化,課程就快速飛過去結束。
於是,我再次宣判自己不是個寫程式的料。
「多可惜呀!」我想著。
其實我對於要如何畫出那些星星,蠻有研究的興趣。
但我看見太多人理解這些概念的速度比我快多了。
好像只有我一個人還在那裡i跟j傻傻分不清楚。
「還是算了吧!」我聳肩心想。
「應該就是要天才型的人才適合寫code」。
一方面我是對自己失去了信心,另一方面,我是覺得不會code反正也沒什麼。
那時候的我,還是蠻喜歡在電腦上玩接龍跟踩地雷的。
光陰似箭,轉眼間來到了2019年,而現今的世界,真的跟以往很不一樣了。
「學寫程式」這件事,從教材、教學方法、資源、普及性、每個人的心態、業界的需求量....全部都不一樣了。
以前學寫程式遇到挫折,其實就是想辦法那門課不要被當掉就好了,反正世界上會寫code的人又有多少呢?誰知道現今的世界是連五歲的孩子自己上YouTube看一下影片就會寫code了,而隨著coding語言的演變得愈來愈直覺化、coding環境愈來愈好設定、現成的工具愈來愈多,真的是到了「人人都能code」也「人人都必須會code」的時代了。
去年我重新開始自學寫程式,發現現在學任何事情真的都比以前容易多了。
我以前從來沒有上過線上課程,但我為了找JavaScript的教學課程,看了許多YouTube影片、Udemy課程等等,發現在這個線上課程百家爭鳴的年代,真的是有好多好多品質好、價格又低的學習資源。
以前我在學習上遇到的障礙,例如覺得老師講的聽不懂、不夠清楚、太快,都可以透過線上課程解決,因為線上多的是一步一步的手把手教學,我還可以同一個片段重複看、放慢速度看、以兩倍速度看...況且選擇那麼多,我能夠輕易找到最適合我的教學style。
我找來找去,覺得對我最有用的線上課程,一個是完全免費的freeCodeCamp,一個是價格大約$18USD的CompleteWebDeveloper:ZeroToMastery。
經過我這一年從自學寫程式到成功轉行找到在矽谷的全職軟體工程師職位的經驗,我要來自問自答自己當時心中最大的疑問。
「是不是要很聰明、理工頭腦超凡的人才能寫code?」其實我現在同意我那些軟體工程師朋友們說的,寫程式與其說是在解數學難題,更像是在使用一個非母語的語言,只是溝通的對象是電腦而已。
想想你學英語的經驗吧!要了解不同的動詞變化、句型、時態,當然是要理解背後的原理,但更重要的是不斷練習、使用那個語言,最後所有的「為什麼要這樣寫這句話?」都會變成「因為聽起來比較順」、一個直覺的反射。
當然寫程式語言除了習慣它特殊的語法、詞彙之外,也還是有很多需要邏輯判斷、推理、運算的部分,這部分確實是比較像數學。
如果要我以一個半路出家人的身分來說我對於學寫code這件事的看法,我覺得它真的就是一個介於學外國語言跟算數學題目之間的神奇技能。
其實你就是在想辦法跟電腦溝通而已,但偏偏電腦聽得懂的語言很奇怪,要用一些等號跟邏輯運算來表達。
所以我不再覺得一定要天才型的人才能靠寫程式當飯碗了,但寫code確實還是要有一些些理工能力和興趣。
所幸的是現在的網路世界教學資源真的太豐富了,我再也不用抱著一本跟字典一樣厚的工具書對書興嘆、或者因為不知道去哪裡尋答案而自我放棄了。
byVanessaWang 歡迎支持我的臉書專頁:【工程師作家的轉行人生】
想要聽我完整的轉行故事嗎?我的自傳《文藝少女的矽谷進擊》博客來連結:https://reurl.cc/GdgLNW
延伸閱讀:
想學寫程式的我,是否太笨了?(探討先天條件v.s.後天努力)
九個月自學轉行軟體工程師
這麼老了轉行還來得及嘛?一歲女兒顛覆我對「時間」的理解
寫code與寫作的相似處
猶豫「我適合當工程師嘛?」
女生當工程師比較難嘛?
自學轉行軟體工程師到底有多難?
coding
女工程師
職業婦女
軟體工程師
Getlink
Facebook
Twitter
Pinterest
Email
OtherApps
Comments
TanTanLuSeptember7,2020at1:57PM結果現在TheCompleteWebDeveloperin2020:ZerotoMastery是美金99...haha但我還是會考慮^_^ReplyDeleteRepliesReplyAnonymousFebruary23,2021at6:26AM不定時有特價今天是370買的ReplyDeleteRepliesReplyAddcommentLoadmore...
PostaComment
PopularPosts
花九個月,靠自學轉行軟體工程師--我所用的網路資源
byVanessaWang 歡迎支持我的臉書專頁:【工程師作家的轉行人生】因為身邊有許多半路出家的軟體工程師,包含我老公,我一直抱持著或許某天我也要轉行當軟體工程師的想法。
但我到了成為媽媽、小孩快一歲的時候,我才開始自學寫程式。
從2018年底開始,我花了九個月的時間自學寫程式,並於2019年七月成功轉行、找到了在加州矽谷全職軟體工程師(front-endwebdevelopment)的工作。
我沒有參加bootcamp,就是在網路上找資源、自修。
我是台大土木工程碩士畢業,後來到美國讀創意寫作碩士。
成為軟體工程師之前,我沒有在職場上當過工程師,以前主要的工作以當technicalwriter寫技術文件為主。
(更多關於我轉職的動機、轉職前的履歷)這篇想整理一下我自學期間用過的教材、工具,但這些都僅供參考,畢竟每個人的狀況、目標都不一樣。
我始終相信「盡信書不如無書」。
我這九個月中學到最重要的一件事就是凡事要有自己的想法、相信自己。
像我這樣的文章網路上有很多,每個人用的方法都不太一樣。
參考別人走過的道路很好,但更重要的是規劃最適合自己的一條路,然後自信地走下去。
以下就是轉行的路上,對我最有用的網路資源、工具:一篇Medium上的文章byAndreiNeagoie 這篇文章叫做 Learntocodeinlessthan5months,gethired,andhavefunalongtheway這是我還在當technicalwriter時,某天上班無聊隨便google找到的。
那時候還不太確定自己要不要轉行軟體工程,所以常常在網路上參考他人的經驗。
我不時地都會回來看這篇文章,這篇文章可以說是貫徹我自學期間的一個中心思想。
我很欣賞他的理念,尤其是以下這段話:“Ispentthefirstmonthavoidinganytutorialsorbooks.Instead,Ispentthismonthlookingatthebestwayformetolearnandgethired.Istudiedotherpeople’sexperiences,looke
什麼是Assertiveness?你容易被情感勒索嗎?
來到美國後我才第一次聽到assertive這個單字。
美國人將assertiveness視為很高的美德,因為那代表一個人具備足夠的自信、溝通技巧、人際成熟度,以至於能夠堅定、清楚地表達自己想要的與不想要的,卻不會因此傷害他人或顯得傲慢、無禮或威脅他人。
PsychologyToday 是這樣定義assertiveness的:“Assertivenessisasocialskillthatreliesheavilyoneffectivecommunicationwhilesimultaneouslyrespectingthethoughtsandwishesofothers.Peoplewhoareassertiveclearlyandrespectfullycommunicatetheirwants,needs,positions,andboundariestoothers. Individualswhoarehighinassertivenessdon'tshyawayfromdefendingtheirpointsofvieworgoals,orfromtryingtoinfluenceotherstoseetheirside.Theyareopentobothcomplimentsandconstructivecriticism.”(「Assertiveness是一種社交技能,依靠的是在有效溝通的同時尊重他人的想法及需求。
Assertive的人能清楚且尊重他人地說明自己的需求、渴望、處境以及社交界線。
擁有assertive特質的人會積極地說服他人了解自己的觀點,也積極地爭取、辯護自己的想法。
他們對於讚美及有建設性地批評同樣地歡迎。
」)美國人如此看重、欣賞的assertiveness這個單字在中文卻似乎沒有相對應的翻譯。
Googletranslate將assertive翻成「斷言的、斷定的、過分自信的」;我覺得這些翻譯充滿負面含義且非常不正確。
生長在台灣的我,認為台灣確實沒有assertiveness的文化。
我觀察到的台灣人,普遍很少直接說出自己想要什麼;如果說出來,
自學轉行軟體工程師到底有多難?
byVanessaWang 歡迎支持我的臉書專頁:【工程師作家的轉行人生】很多人知道我想要轉行寫程式之後,都想知道這是一個怎麼樣的過程。
畢竟日常生活中(尤其在矽谷)實在太常聽到靠著自學或者上三個月的codingbootcamp轉行成功的案例了。
但在這個網路時代,成功的故事很容易被放大討論,卻鮮少聽到那些失敗的案例。
今天我以一個在七個月以前開始全職自學寫程式(在家上線上課程)、四個月前開始找工作(而還沒有找到理想職缺)的人的角度分享我不怎麼順利的歷程,做一個平衡報導。
Q:真的有人上三個月的速成班就可以成為軟體工程師?A:是的,真的有。
很多人會說這怎麼可能?那大學讀四年都讀假的嘛?但我身邊就有好幾個這樣的人,有些甚至連大學學歷都沒有就成功進Google等大公司當軟體工程師;只能說人外有人天外有天,你覺得不可能的事情換到這個時代、矽谷這個環境、這邊聚集的菁英和資源,就是有這樣的事情。
但這就像當年全世界的人來舊金山淘金一樣,有些人一夕暴富,卻有更多人空手而回。
Q:自學寫程式難嗎?誰都可以嘛?A:這是我當初決定全職自學寫程式時最常google的問題。
我甚至常常搜尋AmItoostupidtocode?在我心目中寫程式一直是一件很困難的事情。
遙想高中、大學時代學C++,我就因為覺得太難理解code而放棄學習一個我覺得很有趣的科目。
現在有點不同了。
Youtube的發達、網路社群的發達,使得學習任何東西都沒有那麼難。
再怎麼愚蠢或困難的問題,google一下就會有答案。
所以是的,我相信任何人都能夠自學寫程式。
但學寫程式就像學日文一樣;任何人都可以學,問題在於你可以學到多好的程度?可以好到拿來當吃飯的工具嘛?也許你只會幾句日文,足以讓你在日式餐廳打工;也許你會日常口語,可以當個旅遊團領隊;但如果你想當日文老師,那你就需要會複雜的文法甚至日本文學。
自學寫程式不難,但找軟體相關的工作難易不均,只能自己定義目標了。
Q:找到軟體工程師職位難嗎?A:難。
至少我覺得是很難的。
現在公司面試軟體工程師的型態大概有兩種:大公司考datastructures&algorithm,小公司考你實際作出一個app的能力。
市面上的codingbootcamps主要教的是實作手
延伸文章資訊
- 1體驗一小時玩程式
公益平台與誠致教育基金會將在2016年於全台推廣【一小時玩程式Hour of Code in Taiwan】活動,期盼從國小階段孩子即能接觸程式教育,並盼望透過「一小時玩程式」活動, ...
- 2Visual Studio Code - 程式碼編輯器 - Microsoft Azure
使用Visual Studio Code 這項功能強大的程式碼編輯器,在Azure 進行編輯、偵錯及部署。此編輯器幾乎適用於所有語言,而且可以在任何OS 上執行。
- 3Code.org | 均一教育平台
- 4一小時玩程式 - Learn
CodeCombat:逃出地城! ... CodeCombat:打造自己的遊戲! ... CodeCombat:製作街機遊戲! ... Hour of Code™是Code.org 的商標。 B...
- 5掌握5 個基本概念,讓你寫出好Code - INSIDE
我相信能建立一種心態架構,是能超越任何語言和函式庫,讓人一開始就能產生好的程式碼。這裡提出5 點概念,記住這些原則,寫出好的程式碼將非難事。