[閒聊] 兩年程式進步心得
前言
最近開始睡地板了
涼涼大大又好睡,不錯
.
結果昨天還是睡不著
雞掰
.
正文
昨天看了這部影片:
很神奇的在不才從大學到剛畢業時
還會犯下一半左右的錯誤
但現在一項都沒犯了
.
有感而發整理一下這兩年工作後寫扣能力的改變
就當做寫給自己的文章吧
.
兩年經驗差距
不才覺得這兩年的進步
手邊的side project
給了很好的解答
這份side project
的目標是寫出一個卡拉OK軟體
能夠自己編輯卡拉OK歌曲包
和其他功能
反正外面卡拉OK有的功能,這份專案都不能少
.
這是一年多前寫的,算是第一版
https://github.com/karaoke-dev/karaoke-legacy
寫到最後發現這份專案不行了
就被放置了QQ
.
然後大概放置了快一年吧?(還是一年多)
又打算重頭寫一份
https://github.com/karaoke-dev/karaoke
.
目前第二份穩定開發中
希望明年能把該有的基本功能
全都開發完成,到可以用的狀態
.
兩份專案中
有種說不出來的改變
程式語言本身有進步嗎?
不才覺得可能沒有,寫出來的程式複雜度幾乎沒變(或許還降低?)
反倒是可能沒辦法像以前那樣trace code
追了好多層還記得trace到哪
現在變成金魚腦一枚QQ
.
但在第一份專案中,犯了很多嚴重的錯誤
過度設計
開了很多interface,但很多都是沒必要的
反而還讓程式不好維護不Follow框架本身的
Coding style
這套卡拉OK是基於遊戲框架改寫的,遊戲框架有自己的coding style
但那時候不才卻完全沒在follow
總是用大學時寫視窗程式教授教的coding style開發沒有主體目標
這份專案寫了好久,甚至連支援卡拉OK譜面都沒有做到
就只是在寫看起來似乎有這一回事的元件。隨便合併未經驗證的項目
那時候還腦洞大開,想說把卡拉譜面都放在github上,\就不用開server了讚讚讚/
然後這個腦洞的項目寫到一半就合併回master,之後反而害不才不好開發閉門造車
幾乎什麼都想自己幹,當然什麼都幹不好QAQ
.
第二份專案中,那些錯誤幾乎都被修正了
還有不少算是程式本身外的成長吧
找資源
卡發OK目前是有現成的格式可以使用的
如果找到後可以省下非常多閉門造居的時間熟悉框架
比起花更多時間刻輪子和記得自己寫的扣放在哪
應該要花夠多時間記住框架本身有哪些好用的特性,元件可以使用
還有框架內設計元件的design pattern代碼一致
不才覺得在寫普通代碼的最高境界
是要連自己都沒辦法根據程式碼的coding style去分辨是不是自己寫的
如果看得出來,除非其他人都寫得有夠爛,不然就是自己寫得不夠好
簡單來說就是培養好見人說人話,見鬼說鬼話得能力善用CI/CD github
拋下人工驗證錯誤,把更多的時間都用在專案走向,品質的管理。
TDD
在寫新的元件時,順便寫單元測試進行測試
或是更好的,在寫元件的同時寫測試去把元件跑起來,設定期望input/ouput後開始設計新元件
等元件設計完後,就有單元測試能夠保證每個元件都有一定的品質了物件命名
雖然有進步但不才覺得自己還有進步的空間
使用英文
在寫文件,發issue,發pr的每一個comment都使用英文
可以更好釐清自己是不是夠清楚目前要表達,更動什麼
在需求不清楚時才會用中文,而且用中文多半也說不清楚>_>寫扣速度變慢了
以前幹的事情是用最快的速度寫扣,然後很華麗的發現設計錯誤被打掉了
現在是用比較慢得速度寫,花得更多時間是管理專案不要走錯路專案的核心價值
好吧有些玄學了,可能老了就愛說玄學話QAQ
但在寫任何專案時,都會有新點子跑出來
在開始實作那些很炫的點子之前,先想想最核心的功能有沒有完成
例如不才這份專案的核心重點就是 唱 和 做 卡拉OK歌曲
讓卡拉OK字幕顯示羅馬字酷不酷? 酷,這樣全世界的歌曲都有辦法唱了
但如果卡拉OK編輯器會閃退,製作卡拉OK歌曲的人有沒有辦法幫自己的歌曲加上羅馬字?
那這功能想再多也沒用
所以先把編輯器做好再來談
如果連做出好用的編輯器的時間都沒有了
核心價值是什麼?讓人唱到歌
所以想辦法能能夠匯入第三方卡拉OK軟體製作出來的歌
快速豐富自己的歌曲量
.
心得
工作了兩年
有在進步的東西,或是項目
其實都很抽象
抽象到甚至會懷疑是不是真得有進步
或是懷疑是不是其實一下就學會了
.
恩,就像日文
或是Python
能夠很清楚知道自己會了一樣東西
但物件命名
卻是非常抽象的進步
.
說實在
不才也不太清楚具體這兩年自己學到什麼
但現在的不才能輕易的寫出二種程式碼
而不是第一種
或許這就是進步吧?
.