如何完成自己的業餘專案?

2021-07-08 18:33:45 字數 2116 閱讀 5269

「讀五本書就想精通程式設計了?根本沒有這樣的書單。不管你想精通什麼技能,你都必須要常年累月地不斷練習(」do a hell lot of it」)。——zed shaw

剛聽到這個回答的時候,我有點不高興。但是我後來發現,zed並不是在跟我開玩笑,那是他的大實話。

對我而言,能夠讓自己「常年累月地不斷練習」的唯一方法,就是這件事要有趣。我們的大腦並不適合常年從事一些沒意思的工作。我們都渴望新奇和有趣的東西。要想常年堅持做一件事,我們就必須學會順從我們的天性。

gmail的發明者paul buchheit在《the two paths to success》一文中這樣說道:

我主要的策略可以總結為兩條:1. 想辦法讓一件事變得有趣;2. 如果事情沒成功,想辦法應對。

為了讓「常年累月地不斷練習」這件事變得更有層次,我會做一些業餘專案(side projects)。在包括程式設計在內的任何創意領域中,業餘專案都佔據著獨特的位置。它們的地位之所以重要,就是在於給你提供了試驗自己的創意和從錯誤中學習的機會。

在實施業餘專案時,我總是會時不時提醒自己要遵守一些準則。如果我忘記了遵守它們,那這個專案就不再有趣了,這意味著我會暫時停止這個專案。建議你在做業餘專案的時候,也牢記這些準則。

從錯誤中學習

孩提時代的我們學習速度最快。出生時,你乙個單詞都不會;到了6歲的時候,你就已經學會了1萬個單詞。這就是說,你平均每天就學會了5個新單詞!孩子和**之間的乙個關鍵區別,就是**如果沒有立即取得完美的成績,就會責怪自己。如果乙個孩子失敗了,通常也只會是孩子的家長擔心。所有的孩子都知道,失敗只會帶來暫時的疼痛。他們不會糾結於這件事。

「每乙個錯誤都是乙個絕佳的啟示,因為每個錯誤都會指出你需要特別注意思考的地方。這可以將你的思維方式,從找到正確地解決方案(困難)轉變為糾正乙個特定的問題(容易)。」 —— starbird & burger,5 elements of effective thinking。

要允許自己犯錯。業餘專案有乙個好處,就是你又可以成為一名初學者。你不會有預期。你可以犯錯誤,全心全意地去學習。只有當你犯了錯誤之後,你才會深刻地知道下次不應該做什麼。

根據布魯姆(bloom)學習分類法,通過閱讀和傾聽所學到的內容中,你只會記住20%,而你真正實踐過的事情則會記住90%。更高的參與程度以及錯誤-反饋迴圈可以讓你真正地發現乙個問題的要害。再詳細的描述,都無法完整地向你說明業餘專案中哪怕是最簡單的那一部分。只有安靜地坐下來,仔細地思考每乙個小決定,你才能真正地學會問題的真實解決方案。

業餘專案應該盡量做到有趣。做業餘專案工作的時候,什麼事情會讓你惱怒?構建環境(build environment)太差?編輯器高亮傷眼睛?部署起來麻煩痛苦?那就盡量讓這些過程自動化吧!

舉一些我自己碰到的例子:

上班路上或排隊的時候,我時不時會突然冒出一些想法。通常我會馬上記在貼紙上,想著盡快去實施。但是由於我沒有好好整理,這些貼紙總是不斷地消失,或是莫名其妙地出現在洗衣機裡。後來實在是受不了這種情況,我才開發了乙個監測自己電子郵件收件箱的程式。每當我有了乙個想法之後,我會記下來發郵件給自己,這個程式就會每天晚上自動把郵件歸類到計畫事項當中。這樣,不僅解決了讓我頭疼的問題,我還學了很多關於emacs的知識。

如果碰到最壞的情況,那就放棄。除非絕對必要,否則別這麼做。任何事情如果做起來讓自己咬牙切齒地不爽,那就說明你已經沒有了動力。長期持續做一件事,你以後再也不會再想做業餘專案了。所以你必須要讓業餘專案有趣。

要麼做大,要麼就別保持小而美

gmail是業餘專案做大的典型代表。這也是gmail專案團隊成員的決定。我在電腦裡記錄了大量的想法,建立了很多空資料夾,這些都是我突發靈感的時候建立的。要不要做某個專案,決定權在於你。如果你想把專案做大,那就去做。如果你想保持小而美,只提供給家人和朋友使用,那也沒問題。在這件事上,你就是無所不能的神。

如果哪一天你開始感到驕躁,或是不想繼續做業餘專案了,那就把它歸檔,寫一篇博文記錄下來,把相關檔案放到github上,或是揮拳宣告專案勝利,因為你已經完成了學習的目標。

你就是你自己命運的主宰。

當你實施業餘專案時,你有充足的時間選擇是否要學習新東西…你也可以對是否接受別人的反饋更加謹慎。不過,如果你真的接受了人家的意見,那肯定是因為你真的希望把這件事情做得更好。—— tobias van schneider,知名平面設計師

剛開始的時候,你可以從別人的教程、相關資料和講座中學到很多,它們可以給你提供乙個初期的框架。之後,業餘專案就會進行地越來越順暢。

程式設計師的業餘專案

程式設計師的業餘專案,我們也叫它 side project。前幾天,100offer 發起了一場活動叫 尋找實幹和堅持的技術力量 他們是這麼說的 世界在被 改變著,而我們在創造著 僅僅是因為好玩,他開發了一款作業系統,連想都沒想過,這會讓自己有一天成為開源世界的領袖級人物。只是想創造乙個很酷的東西,...

業餘專案的重要性

程式設計是一種創造過程,業餘專案允許程式設計師在沒有截止日期 或各種限制的條件下,以探索形式程式設計。業餘專案之所以重要,有以下幾個原因。探索新技術 每天都會不斷有新技術出現,而業餘專案則是最佳的試驗場。作為業餘專案,你不必為bug或者效能問題擔心,即使 崩潰也沒有問題,因為你不靠它來領薪水。從頭創...

8 個業餘專案 Python 庫

dataset 在資料庫中即時儲存資料 當我們想要在不知道最終資料庫表長什麼樣的情況下,快速收集資料並儲存到資料庫中的時候,dataset 庫將是我們的最佳選擇。dataset 庫有乙個簡單但功能強大的 api,因此我們可以很容易的把資料儲存下來,之後再進行整理。dataset 建立在 sqlalc...