iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
0


練習程式就好像去健身房一樣,正確、持續的訓練,才會有好體態!Licensed by Adobe Stock

連續假期的週末,Meiko 提早回到大城市裡的家,看著將近一個月的 Python 程式練習,不自覺得嘴角上揚。一開始只是隨口問問,沒想到 Jason 卻開起了她的程式初體驗。Meiko 敲著鍵盤,想著雖然 Jason 已經嘗試著用情境化帶入的方式,讓她熟悉程式語言,可是當自己開始看著資料想解答,要用程式來解決,還是覺的有些差距。於是,她決定再找 Jason 問個明白...

寫程式前的先思考,畫出來勝過千言萬語

Meiko:「Jason,為什麼有時候看到問題,想用程式來解決,可是等到真的開始敲鍵盤的時候,又變成腦袋一片空白?」

Jason:「這真是個好問題,我剛開始寫程式的時候,也常常發生這樣的事。後來我就開始做一些前期的『準備』,讓自己在寫程式的時候,已經有『比較』完整的想法。」

Meiko:「舉個例子?」

Jason:「我想一下要怎麼跟你說...你有沒有發現,我們在最一開始的幾天教你範例,都是用一些比較明確的例子,來跟你說明,像買衣服價格的條件限制?像下雨天是否帶傘?」

Meiko:「有啊,因為那些例子都很生活化,而且用程式決策判斷跟我自己平常的思考方式很接近!」

Jason:「這主要是因為這些問題,都已經被我整理成容易讓你理解的樣子。但是,寫程式常會遇到問題,其實沒有那麼明確的答案。」

Meiko:「這跟你說『比較』完整的想法,有關係嗎?」

Jason:「其實是有的,你覺得當你遇到問題的時候,連問題本身都說不清楚時,有辦法解決嗎?」

Meiko:「不太可能!」

Jason:「這就對了,所以當你意識到這件事的時候,你其實可以停下手邊的工作,離開螢幕,拿出一張紙,好好想一下,現在的問題是什麼?」

Meiko:「就這樣?」

Jason:「你可以問自己幾個問題?」

  1. 我現在要處理的問題是什麼?
  2. 這個問題如果畫成一個黑盒子的話,輸入的內容會是什麼?輸出會想要怎麼呈現?(可以是被處理的資料檔案、圖檔)
  3. 打開黑盒子,進一步看,處理這個問題有哪些步驟?

Meiko:「要把這些內容都寫下來?不是很麻煩嗎?」

Jason:「蠻需要的!其實我常常也會犯這種錯,遇到問題稍微想一下,就覺得可以開始寫程式了,可是真正開始寫的時候才發現,怎麼到處碰壁!」

Meiko:「真的!我現在就是這樣!」

Jason:「當你把上面 3 點都寫下來,也整理過之後,你可能就會比較有概念。還有,別太累,如果 bug 一時解不出來,就去休息、看場電影、滑滑手機、洗個澡、睡個覺,做什麼都好,就是不要在坐在電腦前面。」

Meiko:「休息我很會,哈哈,不過如果有個東西卡在那邊,我就是很想要趕快把它解決。」

寫程式過程中的打磨,卡關的時候該怎麼辦?

Jason:「再來,即使你很清楚要處理的問題是什麼?處理問題的步驟有哪些?但你還是有可能遇到兩個狀況,第一種,寫了好幾次,還是寫不出心中想要的樣子!第二種,就是有些關鍵的步驟,以現在有限的知識還是找不到。」

Meiko:「第一種還蠻常遇到的,像我現在也會用 Google 搜尋,用關鍵字去找看有什麼可以參考的做法。也會去 StackOverflow 看一下別人怎麼解問題,可是找到很多內容,還是跟自己想要做的東西有些差距,直接套用肯定不行,但是要全部重新寫,又會覺得花很多時間。」

Jason:「我會覺得這是必經的過程,不必氣餒!如果你調整了 3 次以下,那請你繼續,如果已經重複做了 3 次類似的過程,那可能要停下腳步,問問看朋友或是去找社群求救。我想要說的就是,打磨是必經的過程,你可以想像就好比去健身房一樣,一個從不健身的人,也不可能去幾天馬上擁有健美的體魄。」

Meiko:「我知道多做幾次是正常的,可是有時候就是會變得比較沒耐心。」

Jason:「這也是正常,其實寫程式就是一種用程式語言描述事情和自己腦海中比對的一種過程。如同運動的時候,身體不一定聽你大腦使喚,更何況是那連最厲害的科學家都不一定可以解釋的大腦,所以還是需要多點耐心。」

Meiko:「那第二種?問問題之前,要先知道自己的問題在哪裡?問題就是我不知道怎麼問問題,那怎麼知道問題在哪裡?」

Jason:「哈,你講得有點繞口令耶!我舉個例子,假設有一段程式碼,然後你說,『這段程式碼出現這個錯誤資訊不知道為什麼?』和『我想要做的是一個累加的功能,可是跑到這一行程式之後就停止了,顯示了xxxx 錯誤資訊,我用的是 Python 3.8 的環境』」

Meiko:「當然是後者囉...」

Jason:「為什麼?」

Meiko:「因為能夠清楚描述要做什麼事?還有發生了什麼錯誤的資訊,以及用什麼樣的環境在工作。」

Jason:「這就對了!一個程式的問題可以包涵,
我要做什麼(How)?:達成的目標
我現在遇到了什麼狀況(What)?:錯誤狀態
目前的環境(Environment)?:程式版本(Windows/MacOS/Linux 及 Python 程式版本)
前面兩個比較容易理解,環境的部分因為每個人的電腦都有所不同,環境不一樣,要解決的問題層面就可能會有差異。」

Meiko:「可以在深入一些嗎?」

Jason:「你可以把自己遇到問題時,曾經做過的解決方式也描述一下,因為這樣可以讓其他人在開始幫你之前,先有個底,知道你已經嘗試過什麼?又或者你嘗試的過程中是否為注意到什麼?」

Meiko:「你意思是,在問別人之前,自己想過的要有辦法描述下來?說不定在描述的過程中就可以找到答案,如果還是找不到,這樣的方式也能夠讓其他人可以更快幫助到你!」

Jason:「答對了!看來你越來越有感覺了!」

我大寶寶拉~想知道怎麼問對問題,其實已經有很多大師在談論,你可以看提問的智慧或是如何有效地報告錯誤這兩篇文章,應該可以讓你更有效地問問題

從自己感興趣的主題開始,不要再想靠毅力

Meiko:「對了,以前常聽父母或是師長說,做事情要有毅力,才能持續,我一直很好奇這樣的說法?」

Jason:「我也不覺得單純靠毅力的話,自己可以寫程式寫這麼久!」

Meiko:「那你覺得到底是什麼樣的事情,讓你可以一直持續寫程式?」

Jason:「或許一直寫程式只是最後的結果,過程是因為我一直發現我感興趣的主題,然後我就會去找相關的內容出來研究,一研究不得了,又有更多的東西需要知道,就這樣像滾一個飛輪一樣,越滾越快、越滾越久。」

Meiko:「可是如果不是你的關係,我對於寫程式可能就完全沒有興趣了!」

Jason:「很多時候就只是沒有碰到,不過你提的這個問題,牽涉到不只寫程式的範疇,有些人可能就天生對周遭環境感到好奇,想要去探索吧!但有些時候,接觸並保持適當的壓力,反而會讓人變得成長!」

Meiko:「這倒是,如果沒有上班的壓力、沒有金錢的壓力,我想很多人都會宅在家滑手機吧!哈哈!」

Jason:「哈哈,對啊!所以說,還是要給自己一定的壓力,同時,找到自己感興趣的目標、主題,持續精進!」

牛刀小試

我大寶寶~拉,今天我們跟大家談自學資料分析的正確心態,主要是把大寶寶這些年來工作的心得,換一種方式來呈現,做資料分析,寫程式的過程是一種描述問題、解決問題、呈現結果的過程,雖然程式語言百百種,如果你能夠「以終為始」,先想到一個想要達到的目標,再回頭過來想要用呈現什麼樣的資訊?最後回頭看要用什麼樣的程式語言來解決?這樣就會讓你在學習程式的路上,變得輕鬆許多!

給大寶寶留言、分享、鼓勵

歡迎登入留言跟我分享你的想法唷!(登入不麻煩,點一下 FB 登入就可以留言了!)

1.喜歡這樣方式學 Python 的朋友請留言『+1』
2.如果前面的內容忘記了,趕快看一下大寶寶這一系列的看對話學 Python 資料分析,用情境故事帶你入門的列表!就能夠繼續 Happy Coding 囉!


上一篇
Day-28 用 Python 製作 PPT 投影片,一鍵搞定!(下)
下一篇
Day-30 這一系列總整理!資料分析 You Got It!
系列文
看對話學 Python 資料分析,用情境故事帶你入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言