跳到主要內容

發表文章

初學 Python 與 Machine Learning 心得

by Vanessa Wang    歡迎支持我的臉書專頁:【 工程師作家的轉職人生 】    就算完全沒有寫過 code 的人,一定也聽過 AI(人工智能)、Machine Learning(機器學習)、Python 等這些這幾年很夯的字眼。但你知道這些名詞是什麼意思嗎?    因為我也很好奇,於是我最近上了 Udemy 這門  Complete Python Developer in 2024: Zero to Mastery 。平時我工作用的語言是 JavaScript,但 Python 已被許多人列為當今最受歡迎的程式語言,因此我一直很有興趣知道,究竟為何愈來愈多人要學 Python?今天就是要分享我的初學心得。    我是  Complete Python Developer in 2024: Zero to Mastery  這門課的老師的常客,上過許多門他不同的課程。他的課的特色是便宜、內容豐富完整(30+ 小時的紮實課程)、用淺顯易懂的語言讓門外漢理解程式背後的邏輯理論,最重要的是非常著重實作的手把手教學。這個教學風格非常合我胃口,因為我就是一個喜歡實作的人:與其跟我說一大堆烹飪博大精深的理論,不如先教我怎麼把水煮開、煮出一顆水煮蛋吧!這篇將分享我照著課程影片用 machine learning 做出一個簡單的模型、能夠分辨三種不同的鳶尾花。這大概相當於機器學習世界的一顆水煮蛋吧!    先來說說 Machine Learning 到底是什麼。這幾天我很有興致地趕課程進度、看了許多課程影片,終於了解 Machine Learning 是什麼了:簡單地說,我從我即將兩歲的女兒學習到,嬰兒就是最好的 Machine Learning 例子。    我女兒現在很會認人:給她看我十幾年前的照片她也會叫媽媽,非常給面子。給她看她自己的照片,就算是一年前嫩嬰的樣子,她也知道是她自己。因為人人都說女兒長得像我,我就找出一些我小時候的照片給她看。我自己是覺得我小時候的模樣跟女兒真的像極了,想說魚目混珠放在她的照片裡她應該也覺得是她自己吧!但女兒很聰明,指著我的照片說「...

如何選擇職業

同事分享了這張圖:如何選擇職業?就是選「你不討厭的事」、「別人願意付你錢做的事」及「你有可能會做得不錯的事」的交集。 愈看這張圖愈覺得有道理。有些職業我是一定做不來的。例如說獸醫我就不適合當,因為我不是很喜歡動物。例如說我無法當運動員,因為我體育很爛。而我也決定暫時不當全職作家,因為賺的錢不足以養活我自己。 但除了以上落在圈圈以外的職業呢?我相信有不少工作是我做來不會太差也有人願意付我做的事情,而且我也算是 enjoy。比方說我以前當過的 technical writer、老師,都是這樣的工作。但當然每個「適合我」的工作之間還是有些不同的取捨。 轉行成為軟體工程師的其中一個考量,就是因為我覺得這是一個「別人願意付你錢做的事」的代表,至少在目前的矽谷是如此。Technical Writer 的缺可能全矽谷一週才開出幾個,但軟體工程師的缺卻非常地多。這對於換工作的難易度、面試機會等來說,都有很大的影響。 想分享這張圖,是因為很多讀者來信表示不知道自己到底喜歡什麼、真正有熱情的事情是什麼。其實 Grit (恆毅力) 這本書說,大部分的人都太過相信這世界上有那麼唯一一個「最適合」自己的職業,但事實不然。大部分找到自己 career passion 的人,其實是多方摸索、挑選出一個還算是適合自己的領域後經由不斷練習、成為專家,然後「因為成為專家」、因為有了舞台而加強了他們對此行業的熱情。 也許是電影、小說太過浪漫化「追夢」的過程,主人翁總是清楚地知道自己想當歌手、廚師、畫家... 然後就義無反顧地追求那屬於他「命中注定」的夢想。但現實生命中沒有那麼多的命中注定。我們都是從「不討厭的事情」開始探索,經由練習變得愈來愈厲害、有信心後,也許這件事情還有人願意付你錢來做,這樣一個良性循環、相互加成的效果之下,某件事就慢慢成了我們的 career passion。所以與其一直等待著找到自己「真正喜歡的事情」,不如從隨便一個自己不排斥的事情開始著手吧!如果這件事你也做得不會太差、有就業市場,這件事很有可能就會慢慢成為你的 career passion,或者這至少會是一道門,開啟你通往其他「你不討厭」、「做得不錯」、「別人也願意付你錢」的職業選擇。 by Vanessa Wang    歡迎支持我的臉書專頁...

讀者常見 Q&A(持續更新)

以下集結常見的讀者問答集,會持續更新: Q1: 如何克服自己在履歷上的career gap?找工作時能夠誠實說,我過去1年或甚至2年都沒有工作是因為簽證與懷孕生小孩的關係嗎?或者應該如何包裝或修飾呢? 我的答覆: (以下說的都是針對美國職場) 之前寫過一篇文章「如何寫出亮眼的履歷」(見下面連結),我說過求職就是把自己當一個商品賣出去。想像自己是一台車;市面上車子那麼多,為何有人要花錢買你?那肯定是你功能比別人強、有什麼過人之處、讓人貨比三家最後選擇你。 因此求職、寫履歷、面試這回事,「絕對」要誠實,但也「絕對」要修飾包裝、隱惡揚善。老闆並不在意你過去兩年生了孩子、沒簽證這種事;他在意的只是,你跟別人比起來,是不是一個更好的選擇?他要的就是一個會讓他好管理、產出高、能為公司賺錢的員工。只要你能說服面試官你比別人好,其他都不重要,所以也不需要為了自己的 career gap 感到自卑。 那要如何修飾包裝呢?我常聽很多人找工作、寫履歷時,明明過去有很豐富的經驗,卻自己覺得那些不算經驗不好意思寫出來。「因為那只是 NGO的經驗」、「因為那只是在學校實驗室幫忙」、「因為我只是做 part-time」、「因為是無薪的實習」。 那我就來說吧!不管你過去的經驗是在學校或業界、一小時拿$10000 或一小時拿 $0,只要你能證明你技術夠、能力夠、不機車、比別人好用,那又有誰在意你是在哪裡得到那些經驗的呢? 我去年底才開始自學寫程式,因此我的軟體工程相關經驗當然是零。開始投工作後,我發現沒有相關工作經驗真的會連面試機會也沒有。很多人會說只要表現「願意學習、上進」就能找到工作機會,但你會因為一台車「有變好的潛力」去買它嗎?還是你會買現在就功能齊全的車? 我得到經驗、補足履歷上空缺的方式,就是從 freelance 做起。先想辦法找到幫小企業、甚至認識的人做一個小產品吧!就算是 single-page application,那這樣面試時你至少可以說「我幫某某某做過一個網頁,我用了xxx 技術 xxx語言,他非常滿意,因為我 deliver exceed expectation,工作效率產出成長120% blah blah blah」,然後你就可以得到更大的 project,又有更多經驗可以拿來證明你的能力。 履歷上 freelance...

女性.婚姻.職場.幸福

身為一位從小熱愛理工科、寒暑假以研究數學方程式為樂的女孩,我在考上了台大土木系後,反而對「工程師」這個職業失去熱情。 原因在於我沒有找到好的 role model :身邊的學長、前輩雖然事業做得成功,但大都是男性而且我並不能感受到他們喜歡他們的生活。我聽到的都是抱怨:抱怨工時長、工作量太大,我聽到的是他們一直盼望著早日退休。在還沒有畢業前,我就失去了對工程師這個行業的憧憬。 後來我到了美國,讀了180度轉變的「創意寫作」碩士、畢業後擔任科技公司的 technical writer。在矽谷的職場上,我反而重新找回對工程的熱情。找回熱情的關鍵在於我終於找到了role models。role models 包含身邊非常多辛苦工作卻真正以工作為熱情的榜樣們;他們加班的時間不見得少,但他們以學習為樂、以創新為樂、以找到問題的答案為樂。在他們身上我看到了我想要的生活型態,激起了我努力想變成跟他們一樣的動力。因此在我的女兒一歲的那一年,我靠在家自學寫程式轉行成為一位矽谷的軟體工程師。(更多細節可以看 「如果你沒有勇氣追求夢想,先去擴展你的視野」 、 自學轉行軟體工程師 — 網路教材、工具篇 。) 由我的職涯故事可知,擁有好的人生榜樣真的很重要。榜樣就是一個效仿的對象、一個人生的憧憬。知道前方有值得我們期待、嚮往的事情,我們才有力氣向前衝。 今天寫這篇,想說的是關於身為一位「女性」這個角色所需要但嚴重缺乏的人生 role model 。 在我成長的過程中,身邊有各式各樣能讓我觀摩的女性長輩:有些是全職媽媽在家相夫教子、有些是沒有結婚的事業女強人,當然也有很多職業婦女,在家庭與職場間尋求平衡。我看來看去,一直希望能找到我未來人生效仿的對象,但始終沒有找到。我觀察到一個現象:職業婦女嫉妒全職媽媽能待在家;全職媽媽也忌妒在外上班的媽媽有自己的事業。未婚的女性總受到社會的歧視;已婚的女人卻總說要是沒有結婚就好了。因此,我不知道到底誰該是我人生的榜樣。 高中聯考前,我媽媽帶我到廟裡拜拜。她看我求菩薩求得很認真,問我是跟菩薩說我想去哪間學校嗎?我說,我請菩薩讓我上一間我能夠每天快快樂樂的學校。從那個時候,我就知道這世界上最重要、也最難的一件事,就是快樂。 在台大讀土木系讀碩士時,我的指導教授鼓勵我出國讀博士。「要是妳以後和妳媽媽一樣,當一位大學教授,那不是很...

寫 code 與寫作的相似處

                             時常覺得,這世界上所有的事物都是一脈相承的。同一個道理,放到很多不同的地方都有異曲同工之處。我以前是一位 technical writer,現在是軟體工程師兼業餘作家,最近便發現寫文章和寫 code,真的有很多相通的道理。 曾經在美國馬里蘭大學當講師,教一門大三必修課:technical writing。我叫學生看一本在我心目中是關於「寫作」最棒的一本書,叫做 On Writing Well 。 這本書的一個重點,就是寫作時要用力地砍掉贅字。舉個例子來說 "a tall skyscraper" 這個片語中,"tall" 就是多餘的,因為高樓大廈不可能是矮的。同理,電視上常聽到諸如「進行確認的動作」這種中文,其實用「確認」二字表示就可以了,其他都是贅字。 我跟學生說,寫作要盡可能達到 "simple",不要寫又臭又長的句子。我讓學生們在課堂上分組練習把一段冗長、囉嗦的文字改到最簡潔有力。 有學生反駁我的說法。「為什麼要寫 "simple" 的句子?是設定讀者是白癡,所以故意用很簡單的詞彙、句型,怕他們看不懂嗎?」 想了一下,我發現我用 "simple" 這個字確實容易引起誤會。 「我指的 simple,是指 elegant。寫作要盡可能達到優雅,而優雅的文字,常常就是最讀起來最簡潔、清爽的句子。」 透過課堂練習,學生們發現,十個句子的段落其實用六句話就能表達相同的意思。有二十個單字的句子,又能再砍掉五、六個贅字,使得句子更好懂、更有力。當然刪贅字並不是畫掉多餘的字詞那麼簡單的一件事,而是認真地去思考:整段話想要表達的到底是什麼?從而重新架構思路,以更優雅的方式呈現文字。這個「砍字」過程包含了尋找更精準的詞彙、使用更生動的動詞、將一些被動句型改成主動句等等。當然也要適可而止;如果只是「為了刪字而刪字」,把原本的文章改到沒有人看得懂,自然也是不行的。 這幾天在工作上我開始使用 React Hooks。這個 2018 年推出的 React 新語法,讓原本需要用 class 來寫的程式都變成 pure functions。同時,set ...

是不是要「很聰明」、「數學很好」才能寫 code?

在我去年開始自學寫程式之前,我常常問是軟體工程師的朋友:「寫 code 很難吧?感覺超難懂。」在我心目中,寫 code 跟「數學能力」最有關係。 有趣的是,凡軟體工程師給我的回答,幾乎都一樣:「不會呀。學寫 code 就像學英文、日文那樣,就是一個語言。」 但我不是很能夠被這個答案說服,因為我以往跟程式語言的歷史告訴我,寫 code 是很困難的。我從高一第一次接觸 C++,到後來大一上土木工程系的必修課也是修 C++,經驗都蠻慘的,因此我就宣判自己沒有寫程式語言的天份。直到去年我從零開始再次透過線上課程自學寫 code,我才終於體會朋友們說的「學 code 就像學任何一個異國語言一樣」這句話的意思。 就從我高一的時候,第一次接觸程式語言的故事說起吧!那時是我學校的物理老師鼓勵我學程式語言的。他以完全免費的方式輔導我在假日期間學 C++,大概也是看到我對理工科有興趣,想說我可以自學寫一些小程式、搞不好還能參加什麼比賽之類的。於是他給我開了書單,讓我買了兩大本比字典還厚的 C、C++ 教學工具書(這種書現在還存在嗎?)來看,並且給我出功課,要我自己研究怎麼做出一些程式。 但朽木如我,一直碰壁,步步都感到挫折。那時的我,還不知道怎麼「自己找答案」,因此我心中一直期待老師可以好好示範他到底要我做什麼,因為我連他出的功課的題目、他到底想要我做些什麼我都不了解,也不知道從何問起。現在回想起來,老師心中一定是想:「這有什麼難的?自己看書,看不懂去找答案,不就這樣嗎?實際做做看、做不出來用力想直到做出來為止,難道還要手把手教學嗎?」但要知道那時候的我,雖然很喜歡數學、物理,理工能力不差,但「電腦」對我而言,就是一個玩接龍和踩地雷的工具,因此我連怎麼按照書上的說明去設定寫程式的環境都搞不清楚。 總之,第一次學寫程式的經驗,就在我心中無限多個黑人問號中無疾而終。直到上了大一又再次遇到 C++。 這次我以為我可以學得比較好,畢竟這是我第二次跟 C++ 碰面了。我們用的課本,再次是那種厚得令我第一天就把它切割成三分的工具書。但豈知第一堂課老師也就講完差不多三分之一本課本,一下就上完一、兩百頁的進度。 「等等啊!」我心中吶喊。第一堂課我們就從 Hello World 上到 for loop,而且是雙層的 for loop, 因為要用程式語言畫出這個形狀:...

用樂高拼成的 3D 立體書!LEGO Ideas Pop-up Book 體驗文

前日去逛街走進樂高店。以前去樂高店都沒有什麼感覺,但因為女兒很愛樂高,我第一次仔細研究樂高的各種類型,發現有適合各種不同年齡層的樂高,而且年齡愈高,樂高組的片數就愈多。樂高組的主題真是千奇百樣,有冰雪奇緣的水晶宮、哈利波特的霍格華茲、還有中國過年的限量版圍爐樂高等。 我一時好奇起來,問了店員,最多片數的一組樂高是哪個?店員說是這組  LEGO Star Wars Ultimate Millennium Falcon  ,總共 7541 片,賣價 USD $800。 那時我腦中忽然恍然大悟一件事:其實樂高,不就是一個立體拼圖的概念嗎?!說來有點愚蠢,我以前從來沒有將拼圖與樂高想成是同一類型的東西,但我明明超級熱衷於平面拼圖。從小到大,我只有玩過散裝的樂高,沒有玩過有說明書、有主題的那種樂高組(除了女兒玩的那種 20 片裝的)。於是我心血來潮地決定來買人生第一組樂高組送給自己,晚上可以邊看電視邊組。 上了網站看來看去,我最後選擇的是這組有 859片的  LEGO Ideas Pop-up Book  。我是位書蟲,能夠用樂高拼出一本有有機械機關的立體書,這不是太酷了嗎?底下就來看看我拼的成果吧! 拼出來的書封面就長這樣,大小跟一般的書一樣大,可以直接擺在書架上! 樂高組的說明書寫得超級好懂,簡直就是 IKEA 的說明書!我一邊重看三生三世十里桃花,一邊組這組樂高,是相當愉快的業餘娛樂活動。 打開書,是傑克與魔豆的故事情節! 就像這樣,書是可以打開、關起來的。打開時,裏頭的場景就會站起來,就像一般的 3D 立體書一般! 有兩種故事場景可替換,底下是小紅帽的故事場景: 大野狼去應門,外婆就躺在門後的床上呀! 看見了嗎?用樂高拼出來的書完成後,放在書架上與其他的書融為一體,完全不佔家裡的空間。這對於我這種很不喜歡在家裡累積太多不需要的東西的人而言,是非常有吸引力的一點。 組樂高對於一位家裡有兩歲以下孩童的人來說,真的是比組一般的平面拼圖適合,原因是我不用擔心沒有完成的進度擺在那裡會被小孩破壞。樂高一片一片組在一起後,就一體成形了;把這塊半成品放到小孩拿不到的高處,非常容易收藏,不會像拼圖那樣,一移動就散掉。 這組...