前言

最近開始睡地板了

涼涼大大又好睡,不錯

.

結果昨天還是睡不著

雞掰

.

正文

昨天看了這部影片:

https://youtu.be/OUHVxCCH_LM

很神奇的在不才從大學到剛畢業時

還會犯下一半左右的錯誤

但現在一項都沒犯了

.

有感而發整理一下這兩年工作後寫扣能力的改變

就當做寫給自己的文章吧

.

兩年經驗差距

不才覺得這兩年的進步

手邊的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能夠很清楚知道自己會了一樣東西

物件命名卻是非常抽象的進步

.

說實在

不才也不太清楚具體這兩年自己學到什麼

但現在的不才能輕易的寫出二種程式碼

而不是第一種

或許這就是進步吧?

.