讓ChatGPT來當你的開發助手

Joe Chang
Coding Hot Pot
Published in
Feb 3, 2024
photo by @jupp

想必大家近期在開發的時候都會搭配chatGPT吧?許多瑣碎的工作都能交給它,可以說是工程師的最佳幫手,今天想要分享我都會使用chatGPT來做哪些事情?以及我認為ChatGPT還有待加強的地方有哪些

使用技巧

先註冊一個帳號,註冊成功後點選畫面左下角的大頭貼,選擇自訂指令

這邊有點像是告訴ChatGPT你的偏好是什麼,像是我詢問程式類的問題,ChatGPT預設都會用python回應我(暗示python正夯?),這時我就必須要多下一個指令 — 「請用javaScript實作…」,假設有設定自定指令,ChatGPT就能預設使用javaScript回答了,再來就是很常看到答案裡夾雜的簡體中文,如果希望ChatGPT能以繁體中文回答也能在這邊一併做設定

清楚明暸的提問

描述的越清晰,生成的回答就會更加精準

👎 不好的提問:請幫我寫一個生成隨機亂數的function

👍 好的提問:請用python幫我寫一個生成隨機亂數的function,範圍是1–100

想知道不同觀點的答案

可以請chatGPT角色扮演,回答的內容會根據角色的背景不同有所差異,下面是一般的提問

請chatGPT扮演十年經驗的前端,會發現回答的內容比較偏向「長期的發展目標」,還蠻有趣的

當ChatGPT的回答太過艱澀難懂..

請ChatGPT來解釋javaScript中比較抽象的閉包是什麼?如果是javaScript的初學者肯定會對以下的說明一知半解

原本的解釋

覺得ChatGPT回答的問題過於艱澀,可以改用以下的問法

「如果我是五歲小孩,你會怎麼跟我解釋xxx」

ChatGPT的語氣變溫柔了!

五歲小孩的版本ChatGPT幾乎都會用玩具來做舉例,雖然有人可能覺得更加抽象😂

ChatGPT能做什麼事?

程式語言翻譯機

請ChatGPT重構程式碼,像是把以前用jQuery的code翻成Javascript,一下子就寫好了,如果想把原本是Javascript寫的程式碼轉換成其他語言ex. PHP、Java也沒問題,當然本身也必須對轉換後的語言有一定的基礎,才有辦法識別出這段轉換過的程式碼是不是有問題

jQuery轉換成Javascript

假設在做框架升級,要把React class component翻成functional component也是綽綽有餘的,還會貼心的提醒你component命名的問題

重構

以經典的Fizz Buzz面試題來舉例,題目的敘述如下

有一個function會跑迴圈判斷1~100的數字,並按照以下規則進行輸出:

  1. 如果數字是3的倍數,輸出”Fizz”。
  2. 如果數字是5的倍數,輸出”Buzz”。
  3. 如果數字同時是3和5的倍數,輸出”FizzBuzz”。
  4. 如果以上條件都不滿足,則輸出該數字本身。

相信很多人一開始都是這樣寫

for loop版本

我們可以請ChatGPT幫我們重構成可讀性更高的版本

不過,在工作實務上想要全部靠chatGPT重構是不可行的,它沒辦法知道整個codebase,所以重構出來code無法滿足我們的需求,請它重構單一個function是比較合適的,像是有些utils function我覺得自己寫的不夠漂亮,就會想看看chatGPT會怎麼寫

指令查詢

年紀大了記性就變得越來越差了,很多指令都記不住,像是我想要砍掉8080 port 的process,這時候就可以問chatGPT了

不過這裡面好多中國用詞,需要花點時間理解語意

Debug

相信大多數人會使用ChatGPT來除錯,像是餵dev tools的錯誤訊息給它,詢問原因,或是function的output不如預期,請ChatGPT debug

而我個人最常使用ChatGPT的場景是,這個bug是我從來沒遇過的,而且所有的除錯方式都試過了,但依然無法定位問題才會詢問ChatGPT(走投無路的概念

最後ChatGPT一共列了四個可能的原因給我,但有趣的是我最後找到的bug原因並不在這四個其中,其實像這樣的情況其實佔了一半左右,ChatGPT給的bug成因都沒有命中,但確實有給我一些靈感,讓我知道能往哪幾個方向去除錯,也是有所幫助

學習一門新技術的好幫手

像是最近我想學習CI CD,ChatGPT可以很快的幫我生成一段CI CD yml,並且詳細的解釋給我聽,讓我能夠快速掌握部分知識點,雖然說這個yml直接貼到Github Action的話根本不能運作 😂,接下來就是我自己的課題了,俗話說的好:『師父領進門,修行在個人』,ChatGPT僅能提供脈絡,剩下的得靠自己鑽研

解釋程式碼

假設有一段code抽象到你完全看不懂,也可以試著餵給ChatGPT試試 ,請他解釋給你聽

這是我n年前寫的,結果現在的我完全不知道這段code在幹嘛 😂

翻譯文章

雖然說ChatGPT的英文翻譯已經比google好了,但還是覺得翻成中文,辭不達意,期望之後ChatGPT的翻譯能夠更加的口語化

維基百科

我很少會用ChatGPT查專有名詞,除非我能找到的資料太少或是這個名詞相當艱澀難懂,才會求助於ChatGPT

雜事小幫手

  • 翻譯 i18n,如果翻譯內容沒有專有名詞的話,翻得還算ok
  • 亂數生成假資料
  • 生成正規表達式
  • 寫一些轉換資料格式的help function
變數居然是中文命名…

(族繁不及備載…

面試小幫手

先描述你要面試的職位,ChatGPT就能協助出題,這些問題我在面試當中還真的有被問過!

如果覺得自己的弱項是行為問題的話,也可以這麼問

ChatGPT有哪些缺點

  1. 正確率不是百分之百,ChatGPT給的答案務必要親自驗證過,我自己曾經測試請ChatGPT寫幾個helper function,看起來寫得有聲有色,但實際output出來的結果根本就是錯誤的
  2. ChatGPT3.5的資料庫只到2021 9月,因此給的回覆有時候已經是過時的了,像是有些框架或工具迭代的速度很快,api每年都有變動,這時候單仰賴ChatGPT給的資料就行不通了,不過這也有解法,只要付費升級到ChatGPT4就可以了,4支援瀏覽器查詢功能,應該能給予最新版本的答案,但因為我也沒用過ChatGPT4,不確定查詢到的結果正確率為何,若有朋友有使用過的經驗,也歡迎留言分享
  3. 範例程式碼有瑕疵,像是先前有請ChatGPT寫一個factory design patten的範例,但實際上發現有一個a變數宣告了卻從頭沒用,詢問它a變數的用途為何?它還很誠懇的道歉 😆,馬上修正一個新的版本給我

因此對於chatGPT的答案別全盤接受,ㄧ定要抱有存疑

不曉得大家有沒有發現這一小行字

結語

對於初階工程師來說,當自己沒有前輩或是同儕可以求救的狀況下,ChatGPT可以說是一根救命稻草,大大小小的問題,都能求助於ChatGPT,但也會發現一個殘酷的事實,ChatGPT只能解決你部分的問題,有些問題還是必須要仰賴自己,但ChatGPT確實可以讓你速成的有一些結果的產出

對於中高階的工程師來說,ChatGPT就是你的助理,可以請他做一些雜事,能夠提升工作效率,當然有人可能會有疑慮說,這樣會不會過度仰賴ChatGPT,而造成自身能力下降?我覺得是不會,好比說工程師是水電師傅的角色好了,ChatGPT就是工具箱的角色,會提供各式各樣的工具,水電師傅必須判斷哪個場景會用到的工具是哪些,也必須判斷出工具本身有沒有沒問題,因此對於ChatGPT的使用,我個人是開放的心態,擁抱AI,讓自己的程式開發擁有更多的可能性

--

--

Joe Chang
Coding Hot Pot

前端工程師,唯有非常努力,才能看起來毫不費力