程式開發者之萬事起頭難


接觸程式開發也已經十五年有餘,雖然不算多,但也算經歷過不少風雨。於是趕在二十五歲結束前,開始記錄起『程式開發打字工』的種種心得。之後,如同數學家的二十五歲大限,希望『程式開發打字工』將成為興趣與次要的工作,不敢說可以完全放下,但必要動手做時也會不假別人之手。

首先談到開發一個新的專案,俗話說萬事起頭難,我們馬上會碰到千頭萬緒襲來。而且我們什麼都想做,什麼都想完美,往往還沒開始就已經結束了。此時心神不定,煩燥之時若螢幕上閃過X浪或 Facebxxk 的身影,再來個香蕉動新聞,一整天馬上就過去。

寫程式很重要的的一個原則就是:『不要想一次都要做太多功能。』尤其是在初次接觸的領域。因為,光是計劃架構和細節就會先消磨掉大半熱情。甚至開始實作以後,你會因為到處要留後著而難以前進,把自己陷於無法動彈之地。一但沒有動力,也沒有前進的路,該專案將胎死腹中。

如果有足夠的時間,專案初期不斷打掉重練,是可以接受的。因為這比起日後累積太多量後,才發現不適合再打掉重練而來得好。也不會因為在錯的基礎上開發,而降低開發效率,甚至寫出問題重重的軟體。

至於『如何才叫太多功能』,這依每個人而定,經驗多寡決定了一個人能快速設計多大規模的架構,並且能在該架構下工作而不會自亂陣腳。同樣類型的程式,如果你有過去的實作經驗,這次肯定有思緒改進或是延用。反之,如果沒有過去的經驗,很難做太長遠的細節規劃,你能靠的只有『過去學會的程式技巧』和『類似經驗』,盡力設計一個勘用的架構罷了,然後經過提早發現問題提早重新來過,盡可能補完整個專案所需。

當然,除了程式技巧和相關知識,經驗是不通用的,如果碰到不熟悉的專案,還是得從頭累積經驗,從小規模的設計一步步前進。記得不要貪多,一個功能一個功能確實完成,『慢慢來,比較快』。

留言

  1. 寫的很中肯
    之前也有想法
    結果顧慮太多而做罷
    看到這篇文
    我又想再給自己一次機會了

    回覆刪除

張貼留言

這個網誌中的熱門文章

有趣的邏輯問題:是誰在說謊

Web 技術中的 Session 是什麼?

淺談 USB 通訊架構之定義(一)

淺談 USB 通訊架構之定義(二)

Reverse SSH Tunnel 反向打洞實錄