我是一個完美主義者,或者,至少我喜歡這樣自居。不管怎樣,我絕對離完美主義者不遠了。
這樣本來挺好的。然而,我最近意識到,它實際上阻礙我成為一個更出色的開發者。至少,它阻礙了我的進步,並妨礙了我的學習。
像很多初級開發者和普通開發者,我有一個不完成副專案(side projects)的習慣。不是因為我懶或沒時間,出於某種原因,我似乎從來不會把事情做完。
然後就是受打擊的地方了。
在進行專案時,我一直努力追求完美,
這就是問題的所在。
怎麼定義完美?完美是什麼意思?完美真的是一個可以實現的目標嗎?
對我來說,我想交出一些了不起的東西,儘自己所能做出一些東西。
想法是好的,但作為一個初級開發者,我面對的困境是,因為我每天都在學習,我的能力在不斷增強。
這樣的話,我如何才能儘自己最大(且不斷提高的)能力,將一個專案做到最好?!
作為開發者,這是阻礙我進步的關鍵因素。我不知道要在哪裡確定一條底線。我覺得很難對自己說“夠了,可以繼續前進了”。
而有時候,情況甚至會變得有些愚蠢…
6 個月前,我寫了一個簡單的 URL 縮短器,以熟悉 Symfony 框架。我花了幾個晚上的時間,做出了一個基本的工作產品(Working Product),以及一個大的框架介紹。做得很開心?好吧,不盡然。
信不信由你,3 個月後,我仍在對這個小專案修修補補:修改樣式,用 Ajax 改進表單提交,我甚至考慮過用 Vue 或 React 來實現。
隨著我的能力和知識的不斷增加,我完全無法繼續前進。我不斷看到能夠改進的地方,並有了更好的改進方法。
這在商業環境中是好事。在產品或專案上不斷進行改進和迭代非常贊。
但是,作為一個小小的學習專案,我明顯用力過猛了,正在努力解決一個並不存在的問題。這不是嘗試給 Bitly(知名短網址服務)造一個競爭對手,我只是利用這個小專案來加強自身的學習。事實上,根本沒有人會看到這個專案!
我並不是唯一會這麼做的人,即使最有經驗的開發者,也會在某個時候遇到類似的情況。當他們回顧幾年前寫的程式碼,他們可能會羞愧難當,甚至可能會對自己幾個月前寫的程式碼感到震驚。
(伯樂線上補充配圖,Via:程式設計師的那些事)
作為開發者,無論處於什麼水平,你都在不斷學習,這是野獸的天性。而經驗告訴我們,你只有學會放手,才能繼續前進。
但說起來容易做起來難。作為一個初級的,或有抱負的開發者,“單單”繼續前進就顯得難得多了。在現實中,除非你的程式碼接受他人的審查,否則你完全不知道好與壞的標準。
我的建議是,在你學習時,要建立一些東西,直到它看起來很得體,並能正常工作,此時你需要忘掉它繼續前進。不要尋求完美,這是不存在的~ 你應該將時間花在學習並鑽研更大、更好的事情上,而不是花在類似調整無關要緊的內邊距這一類事情上。請務必相信我這個過來人的經驗之談!
我最終明白了“完成比完美更好”這句話,這也是二八定律告訴我們的道理。(原因與結果、投入與產出、努力與報酬之間的關係往往是不平衡的,結果、產出或報酬的 80% 取決於 20% 的原因、投入或努力。)
當你處於學習階段時,所有的專案都不需要做到“完美”。它們本身就是用於學習的專案,做完儘管放手讓它們去。
瞎搞瞎弄、縫縫補補、或者試圖壓縮最後 10% 的時間,這些都不是對有限時間的合理使用方式。
在 Web 開發中,完美是不存在的。
只有一種情況除外,那就是…完成,因為“完成即完美(done === perfect)”。
隨著時間的推移,你能做出更大、更好的東西!