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