程序員的業余項目,我們也叫它 side project。
前幾天,100offer 發起了一場活動叫 <尋找實干和堅持的技術力量>,他們是這么說的:
世界在被代碼改變著,而我們在創造著代碼。
僅僅是因為好玩,他開發了一款操作系統,連想都沒想過,這會讓自己有一天成為開源世界的領袖級人物。
只是想創造一個很酷的東西,所以他動手,堅持,因而有了讓這個世界上的每一個人都可以免費地獲取人類所有知識的百科全書。
成功者和其他人最大的區別就是,他們真正動手去做了,并且做了下去。
近些年來確實有不少 side project 不僅成功轉正,而且閃耀世界的例子,比如 Gmail、Instagram、Slack 等。甚至連 Facebook 早年也僅僅是一個學生的 side project。確實這些閃耀的例子激勵著我們去嘗試著各種各樣的 side project,但真正能做到像上述例子中那樣光彩奪目,只怕這概率也和買彩票中頭彩差不多了。那么我們堅持做 side project 的意義在哪里呢?
自從我走上職業程序員的道路后,我就一直開始在做 side project。這些業余項目,有些是把工作中真實項目碰到的問題的解決方案加以抽象、提煉做成通用的工具,以便用在將來的項目中。這樣的事情做的多了,慢慢就積累了一個自己專屬的工具箱,好多程序員想必都有自己的工具箱,里面有些自己專屬的工具。時間的推移伴隨能力和視野的成長,會發現當年做的一些小工具原來有更好的開源解決方案,哦自己又不小心干了重新發明輪子的事情。
那像我早年干的那些重新發明輪子的事情是不好的么?我認為不是。著名程序員 Nicholas C. Zakas 提到的幾個最重要的職業建議,有下面兩條
(來自 《七個對我最好的職業建議》 阮一峰翻譯):
不要別人點什么,就做什么。
自己找到道路。
我認為做 side project 對此有非常大的幫助。一個 side project 就是個產品,你不再僅僅去實現需求,因為沒人告訴你需求,除了你自己。你在主導一個產品,找到它的發展方向,做出決定,然后再去實現它。而找到道路做出決定,再去執行實現,前者比后者要困難的多。
扯遠了,回到我們文章開頭提到那場活動,我正巧看見了這個活動,而我正好也有一個 side project。這個項目開始于五年前,一開始托管在 Google Code,后來 Google 在中國沒了,GitHub 興起就轉移到上面了。這是一個名叫 Craft 系列的項目,為什么叫 Craft 呢?
關于 Craft 的起源是來自我還在讀書時玩了 10 年的兩款游戲 StarCraft(星際爭霸) 和 WarCraft(魔獸爭霸)。工作后我成為了一名職業程序員,花越來越多的時間在編程上而非游戲。我深深的懷念過去玩星際與魔獸的日子,所以使用了 Craft 來命名這個項目以紀念過去的日子。更重要的是,我希望這個項目能繼承來自這兩款游戲的精髓——追求完美,精益求精。更多關于這個項目的內容,可以參見 Craft 官網 以及托管的 GitHub 地址。
關于 Craft 這個業余項目,在 GitHub 還留下了幾萬行代碼。我記得這五年來針對它做過 7 次比較大的重構,從工具箱里扔掉的代碼比留下的多的多。每一次重構,都是對以前自己的否定,每一次否定都是一次成長。程序員們早點開始自己的業余項目吧。
后記:
Craft 也參加了 100offer 的活動,目前正在投票階段,如有緣看到這篇文章請幫忙投個票。
投票地址點這里,截止日期 2015-09-27。
下面是我自己開的一個微信公眾號 [瞬息之間],除了寫技術的文章、還有產品的、行業和人生的思考,希望能和更多走在這條路上同行者交流,有興趣可關注一下,謝謝。