文章
開Claude code的時候,半信半疑,那是3月最後一週
開Claude code的時候,半信半疑,那是3月最後一週,我在這之前,完全不想碰Claude code,我認為這是跟我完全無關的東西,我也不會沾到或碰到,所以當大家在討論的時候,我多數時候無感,可能因為也幾乎不看社群了,因此偶爾打開來看到,沒什麼感覺。
先推一下網站:https://charenix.com/alfred/
直到老闆提出一個想法之後,我在想公司沒人可以做,但如果Claude Code真的那麼厲害,是不是有現成的Opensource可以拿來直接用,只要改一改UI應該就可以了吧?很天真的想法,但卻是所有現在每個程式每個網站的起點。
我想說有空閑,主動自己來寫看看,然後花了兩天,把交易網站做出來了。我不停的測試每個功能,然後因為過去的工作常常擔當PM或是架構設計師、系統設計師的任務,所以對於整個軟體該怎麼做,腦袋裡永遠都有畫面,都知道該怎麼做,以前都是靠我手繪版面給同事看,現在經歷了Claude Code之後,突然覺得自己像是原始人。
說重點好了,如果你跟我一樣是剛從新手村走出來一個月的人的話,那我跟你分享新手村怎麼開始:
1. 你腦袋裡一定要有畫面
簡而言之,所有的程式功能,都是一個畫面接著一個畫面,所以腦袋裡面要能先想像出所有的畫面。例如會員畫面,一般來說註冊一定是用戶名、Email、Email確認、密碼、密碼確認,驗證碼。大概是這樣的組合。這是非常初階的畫面想像,因為你隨便按每一個網站的登入,都長得差不多。畫面感決定了你後面的整個程式會怎麼發展。
2. 畫面跟畫面之間的流程
大家都用過很多網站跟APP了,畫面就是按下一個按鈕後到另外一個畫面,所以前面提到畫面感要必備,這邊就是要必備流程感。白話文就是說:你從A連到B從B連到C,然後需不需要連到A,或是回到B。我常用這樣的方式問自己,3個參數丟進去想交互關係,畫面與畫面的流程跟連結就出來了,然後擴大到5個參數,流程就變多,或是從流程切出來變旁支。
3. 組織與架構
過去我們經歷太多寫程式時,都先趕緊拼一個版本上線,然後接下來就回不了頭,因為那個版本可能有問題,但是公司要賺錢要接案,所以你只好一直維護那案子,直到那個案子肥腫到每個人碰到都會說「重做比較快」。那時,你會發現「怎麼每個工程師都說一樣的話?」那是因為技術債堆疊起來的。
因此,你在想所有的畫面時,把畫面裡面的各項功能,像是排序是一個功能、搜尋是一個功能、回到最上面是一個功能、按下去會計算是一個功能、按下確定是一個功能、按下取消是一個功能,一個網頁會有好多東西在上面,要先把這些東西組織起來,畫面感的邏輯才會順,然後生出架構,在這畫面上要放什麼東西,像拼樂高一樣一樣拼。
4. 模組化思維
有些功能會重複使用,我用整合前面的方式來說「一套有流程的畫面,那套流程裡的畫面擁有許東功能,然後這些東西組合起來是一套。」接著,「好幾個一套流程畫面組合起來」那就變成模組或是工具。這麼做的好處是有些東西以後在開發的時候,就可以把那套東西拿出來用,另外就是當某一套換掉的時候,不會搞到整個網站掛掉,真的要說的那麼單純大概我想到的用語是這些。
模組化還有個好處,網站或是服務架上去的第一天,不管你有沒有公布,就是會有各種攻擊,哪怕你只是才剛掛上去幾分鐘,你會發現很多攻擊出現。而一般來說,我看過最多的攻擊都是針對網路上「現成套件」「現成opensource」的固定路徑、固定檔案進行攻擊,所以可以先自己原生的並且不要讓檔名變成很好猜。例如,我在做後台管理程式的時候AI直接吐了一段網址然後尾巴是Admin。這不擺明要讓人家來攻那不然這是什麼?
5. 不要想一步登天,但也不要只有一顆輪子
網站功能只要組織架構好,畫面的流程都有,後面要維護都很容易。維護的意思有兩種,一種是加新功能,一種是砍掉功能,至於維持正常運作就不用討論了。我因為至少設計規劃過不下50個網站,包含連P2P借貸、加密貨幣交易所、IaaS、內容平台、電商平台等,所以腦袋裡會有超多想法,可是你要做的第一件事情是:
POC:Porve of Concept,證明你的概念為優先
MVP:Minimum Viable Product,最小可行性產品
先到MVP,在這個階段可以不段反覆的做內部測試,然後看是不是符合當初的想像。如果要說追溯回源頭做出來跟想像的不一樣,那就是POC時,沒有把東西弄出到大家都理解跟接受的狀態,進入MVP時才會開始有不同聲音。但不用怕,現在AI改Code,要拔掉一個功能,換上一個新功能,「你用打字的他就『大概』懂」。
我用「大概」的原因是:AI寫程式瞻前不顧後的比例非常高,當你下一個明確指令要改什麼的時候,他不會記得這個程式動到的話,會影響其他的程式,所以定期Commit Git很重要。
6. Commit Git or BAK
當你興致勃勃寫完程式正打算公開時,最後下的指令剛好把你的網站給弄掛了。這個時候,沒有別的,一般來說叫做Fallback,但如果你沒有Fallback的檔案,那被改掉的就是改掉,此時,想要修這個Bug,會變成有可能修好一個Bug衍生出另外一個Bug,雙重攻擊下,你會發現網站要修好久才能正常使用,你火大,AI也會被你操的方向全無亂七八糟。
因此,去申請Git Hub,然後把路徑跟AI說,AI會指示你怎麼把你的程式碼放到Gut Hub裡面。在這有個好處,可以定期Commit Git,只要寫個腳本讓程式自動去幫你定期Commit就好,你開發出問題,立刻調就資料回來,要改問題可以更小心更謹慎。不想用Git Hub?可以啊,定期下個命令:「所有程式備份一份」就會產出.BAK的檔案,之後做壞掉了,叫BAK出來,又恢復原樣。
7. Readme and Handoff
以前工程師單獨寫程式的時候,註解都是寫在程式碼裡面,你說做成文件給工程師開發?蠻多時候老闆都等不及了,還在那邊等文件做好,工程師薪水又高,所以會讓工程師先做,此時工程師就會把自己寫這段程式的理由跟重點寫在上面,這會散在許多角落。
AI寫程式也會有一樣的問題,所以,你就強制要求把你寫到現在的狀況寫到Readme裡面。以後要查程式,或是要開發程式的時候先讀Readme知道規矩、知道程式架構、知道參數、函數、變數怎麼用等等,這樣你每一次用AI寫程式都可以稍微安心。然後Handoff是反向,也就是「我告訴你這件事情不能這麼做,絕對不可以這麼做。」AI常常會多事無聊多做些有的沒的,導致你的程式本來好的後來壞了,這就是要告訴他,不要手賤,要改啥,先去讀Readme,不要亂動。
9. 網站正式上線
最後,我會建議做個監控面板,監控所有到網站的每一個IP,這樣你會很清楚知道每天有多少攻擊IP,有多少是正常IP,有多少是Bot IP等等,然後這些IP都往哪裡去攻擊。很像是打靶,但如果你不是套裝,例如「wordpress」的話,檔案位置路徑都一樣,攻擊者都很清楚知道要攻擊哪裡,而原生的就沒這問題,我自己無聊還會去加密網址對應的資料夾,讓人看不出來這是對應連到哪裡。
但新手村,不需要懂這些,只要你會說話,腦袋有畫面,一如你跟AI聊天的時候,想到的是畫面,而不是跟他說我心情很不好,你可以跟他說「我今天心情很不好,可不可以幫我做個運勢抽籤?可以的話像是十二生肖啊,生辰八字啊都拿進去算。」AI會幫你完成後面一大堆「有的沒的」,那些是你不需要知道的Domain Know how,以前懂這些很值錢,現在AI都懂了,所以值錢的不是會寫程式的人。
值錢的人是懂得怎麼駕馭AI,最好有當作Product Manager,甚至是System Architecture, System Design等等,這樣你或許可以像我從新手村出來後,半天就能完成一個可以上線然後開始能用的網站。
我做的案子不大,真的很小,對於程式技術老手而言,我寫出來的東西可能跟他十年無法相比,但是現在的我不需要跟他比這十年的經驗,我只需要比現在能用就好,可以正式上架到App Store的程度即可。
這是我彙整近期三個開源專案,三個整合再一起變一套系統,有興趣的話可以讀看看我網頁的內容,望請大家多多指教與交流,我如果有什麼有趣的發現再跟大家分享。
下一篇
延伸閱讀・學習分享
- 學習分享
用一段Prompt幫女兒選文組理組
女兒上高一一段時間了,現在遇到了她人生相對重要的選擇題:「理組還是文組」。她對於這個選擇非常煩惱,我則問她「直覺上妳想選哪一個組?」她說:「我喜歡畫畫、喜歡音樂、喜歡跳舞、喜歡寫作,應該要選文組才對。」我反而問… - 學習分享
在咖啡廳用人工智慧替國中生建數學家教
前幾次來聽課的朋友,問我能不能教他的國中小孩AI,我想了想要從哪邊開始,想說先問他一些問題,但後來想想,既然是一張白紙,從哪裡開始都好吧。再問問媽媽的想法,媽媽是說小朋友數學不好,去補習花了很多時間,一直寫考卷…
學習分享就讀EMBA的一些感想與心得
不大認識我的朋友,聽到我從EMBA畢業之後,往往第一個反應是:「你好厲害!怎麼辦到的?讀書壓力很大,要唸書還要作報告,甚至畢業有論文要寫,你…
學習分享畢業了
多年前,萌生想要回校唸書的念頭,求的是多年來在職場中,因為自己專業知識不如人,想要再次大幅成長的可能,及找出能穩定發展的機會。過去,在職場之…