華文網

程式師如何利用業餘時間如何學習多門技術以及開發業餘項目

我的學習方法

在開始介紹我開發業餘專案的經驗前,

先和大家分享一下我的學習方法吧,不過我認為學習這件事情因人而異,每個人都有適合自己的學習方式,所以這是作為一個參考,希望大家也都能先找到適合自己的學習方法。

我在學習一門技術的時候,通常都是直接切入實踐,曾經我也嘗試先看各種基礎的語法或者稍微深入的一些設計模式之類的書籍,但是發現這種方式對我來說很低效。

例如 Objective-c 的學習,當初我買了幾本書,

啃了半年還是一知半解,當然另外還有一個關鍵點就是要時間連續,如果每天看幾頁的話,也是低效的一個重要原因,因為程式的語法是偏生澀的,死記硬背很難記住所有知識點。

所以後來,在有一次辭職之後,我直接接了一個 iOS 的外包,那時候我甚至還從來沒有在 xcode 上寫過 iOS 代碼,我逼自己花一個月時間,掌握並且做出一個 app 來。

在這一個月時間裡,我將大量的時間投入了 iOS 開發的學習,

並且儘量採取高效的學習路徑,我來不及看明白所有的基礎 OC 語法,就直接去看講述 iOS 程式設計的文章(蘋果官方有很多實踐入門的文檔)。

然後直接實踐,在 xcode 上敲代碼做佈局,然後運行看效果,對於不懂如何實現的功能,就直接去 google 搜索文章,快速查看別人的方法,然後實踐。

當然,這是一種比較走捷徑但是問題多多的學習方式,在這個月裡,我通宵了好幾次,

就為了解決某個細節的問題,不斷查文章不斷實驗,然後不行,就再查,如此反復,效率其實也不見得高。

但是與實踐結合的學習方式,最大的益處是對知識點的掌握更扎實更具象,不過這一個月之後,其實我對 iOS 開發仍然是一知半解,後續通過另外一些不是很緊急的項目持續的磨練,才算是正式入門。

到了後來你會發現,語法真的是一門開發技能最最基礎的東西,

對語法掌握熟悉只是踏入開發的第一步,後面還有很多知識需要不斷在實踐中總結。

包括我當初學習 node 開發,也是直接從實踐切入,因為語法其實已經沒有什麼問題了,當時我就想,我需要做一個網站出來,通過網站的不同功能模組,實踐 node 開發中的一些基礎或者是資料庫設計,部署,伺服器運維等知識。

當時第一個想法就是把自己搭建的 wordpress 博客自己用 node 實現一個,於是就說幹就幹,

後來發現博客還是過於簡單,於是就想把自己的博客搞成一個社區。

大家可以來這裡發表博客,或者是問答,還有論壇發帖等功能,整個網站的結構變得複雜了,對程式的結構設計,資料庫設計的要求也就凸顯了,通過這個網站的不斷反覆運算,我對 nodejs 的瞭解也越來越深入。

我的主要技能仍然是前端開發,這個是我的工作。然後其他開發技能基本都是在業餘時間學習與實踐的,包括其他一些軟技能,例如設計,產品,運營之類。

方法無非就是我上面講的,所以接下來講的業餘開發專案的感受,這些專案,其實最終的初衷除了創造之外,還有很重要的一個點,就是我用來學習技術的實踐,不管你的產品做成功還是失敗了,至少我的技術長進了。

所以,不要在業餘時間做一些沒有技術含量的事情,例如接一些切圖的外包或者你已經很熟悉的事情,多給自己一些挑戰自己的事情。

業餘開發專案的初衷

總體來說,在我的感覺裡,國內的環境對於業餘開發者來說其實是非常不友好的,不過作為一個開發者,一味抱怨並不會有大的改觀,能做的就是不忘初心,多做嘗試多做積累。

包括我之前也和一些朋友深入聊過類似的話題,例如“在行”上約我聊相關話題的同學,我其實是鼓勵大家勇敢的去做自由職業者或者業餘開發者,雖然環境的確不是很友好。

但是年輕時多嘗試總是沒錯的,畢竟我們還有資本去尋找更多可能性,而且我相信每個開發者其實內心都是嚮往利用自己的力量改變人們的生活方式的。

而我們通常做的事情卻總是一個大工程中的螺絲釘,時間長了失卻了創新的初衷意味,這時候離一個創造者越來越遠,自會覺得內心恐慌,我最初的熱愛去哪了?

雖然這些大工程的確在不斷改變我們的生活,但是我的初衷卻是能夠主導一場改變,即使它可能改變的只是一小群人的某個小小的生活方式。

我一直覺得程式師是一個很神奇的職業,不是說這個職業本身神奇,而是代碼賦予我們的能力神奇,我們可以憑空創建起一個虛擬的世界,可以制定這個虛擬世界的規則,可以讓這個世界按照我們的想法運作。

但是這個世界也會反過來要求你改變你,因為一個正常運作的虛擬世界需要嚴謹的規則,這就需要你有設計產品,設計合理規則,設計運作閉環的能力。

這也是我們重點要強調的業餘開發者的能力模型,你不能只是擁有 coding 的能力,不能只是 create,而是要合理的創造,探索人群的新的需求,創造真正有用的產品。

其實這是今天要探討的重要話題之一:業餘開發者如何做出一個真正的產品?

硬技能

這件事絕非看起來這樣簡單,首先在技術上,你要掌握足夠的技術來完成這個產品的各個方面,現在假設以我的上一個app睡前故事為例,完成這個產品需要有哪些方面的技術積累呢?

用戶端開發,iOS,Android,當然如果你選擇只支援某個平臺,可以只掌握其中一種,當然也可以使用一些跨平臺的技術,但是除了語言和程式設計模式,程式設計框架之外,還遠遠不夠,平臺差異,平臺特性,版本相容,自我調整,還有最麻煩的一環,你的 app 開發成功之後如何發佈到對應的平臺?如何設置內購等?特別是 iOS,發佈一個 app 的成本遠比想像的高。另外與端相關的,還有基礎的資料統計,消息推送,分享集成等,在初版的時候最好就能將這些工作做好,而這就需要你瞭解這些功能的集成開發。

前端開發,故事上傳有一個後臺,當然這個很簡單,然後故事從 app 裡分享出去之後有一個 H5頁面,這個頁面裡可以直接播放音訊,然後有一些下載 app 的引導。所以前端開發的技能也是必備的。還有就是一些平常要用的宣傳頁之類的。

服務端,所有故事都是在後臺存儲的,需要資料庫,還有服務端應用提供資料分發,以及一些資料統計之類。

資料記錄與分析,我需要在使用者的使用過程中,記錄使用者的動作和其他有用資訊到服務端,然後以這些資料分析使用者行為,以便決定後續哪些故事是最受歡迎的,以及受誰的歡迎,我可以做定向的推送或者收費服務。

設計能力,說起來這也是非常核心的需要,如果沒有基礎的設計能力,很難做出一個讓大家眼前一亮至少看著舒服的 app,特別是現在市面上的主流 app 都擁有比較高的體驗門檻,粗製濫造的 app 很難吸引用戶。在這點上,也需要做一些刻意的培養,雖然我們可能沒有受過專業的訓練,但是可以多看多想,從別人的設計風格中借鑒,慢慢培養審美,當然還有最重要的就是 設計工具當然需要熟練掌握。

除了技術之外,還需要其他一些技術之外的能力,這些能力可能是區分你與其他程式師的重要分水嶺,它決定了你可以創造產品,而不是掌握了哪些具體的技術。

軟技能

我們簡單談談:

需求分析,產品規劃。要做一個什麼產品,不是因為我掌握了什麼技術,能夠寫出什麼樣的代碼來,技術只是一個工具,要發揮其價值,必然是需要有原始的需求和基礎產品形態。所以要開始獨立開發一個應用,首先要做的可能並不是去掌握很多種技術,而是想清楚,你要做一個什麼產品。例如,我要做睡前故事的 app 的時候,我的確已經掌握了上述的技術,但這些都不是決定性的,如果我沒掌握,我可以去學習,但是為什麼要做這個 app?是因為我有資源(我老婆,講故事講得好,她是老師,身邊有一群潛在的種子用戶),有受眾(強需求,高粘性),於是我開始思考如何利用這些資源,我想一個聽故事的 app 成本應該是不高,而且容易推廣,粘性足夠高的。雖然市面上已經有很多類似的 app,但是我可以做我的特色,例如:我只有一個講故事的老師,而且講的品質很高(市面上大多數故事 app 都講的很敷衍),有很強的品牌和標籤屬性,另外我的設計能力和開發能力突出,我可以將我的 app 做的比任何一個 app 都精緻好用。

推廣和運營。大多數業餘開發者應該都為此非常發愁,我好不容易做出的應用,如何曝光給受眾?如何讓更多的人安裝我的應用?如何維持應用的活躍度留存率?這方面的能力,我推薦大家首先多去嘗試挖掘,另外就是在平常公司的工作中多多留意大家的慣用手段,多向相應職位的同事學習,另外在職場中遇到類似問題的時候也多從自身思考,如果讓你來推廣一個 app,你有什麼辦法?具體如何推廣 app,這裡也可以分享一下。首先,你要保證你的 app 是優秀的,否則你把 app 推給用戶,他不願意下載,那無論如何推廣都是無效的。然後推廣管道,可以找一些免費管道,一些 app 推薦的網站、app、公眾號,想辦法聯繫到他們的編輯。然後請他們推薦你的應用,如果你的應用足夠優秀,他們會很樂意幫忙,這種管道還是挺多的,例如最美應用、少數派、appso之類。另外一個管道就是一些垂直的論壇和社交網站,甚至是知乎之類。然後所謂的運營,最基礎的,在 app 內要有一些與用戶的互動,能夠維持用戶的使用激情,甚至幫你擴散 app 到朋友圈,具體可以是一些活動的形式(運營管用手段)。最後再說一點,適當的時候,要捨得花錢,但是要花在點子上,可以搞一些送禮物的活動,也可以做一些付費的推廣配合沖一下榜。

創新是第一生產力

當我們知道構建一個產品需要些什麼基礎技能之後,那我們如下真正的下手做一個產品出來呢?我應該做什麼類型的產品?我能想到的產品別人都做過了怎麼辦?我人手不足無法開展大型工程如何與別人競爭?我的推廣和運營能力有限沒人用怎麼辦?

有時候我也會困惑,特別是我做了一個 app 出來,然後千辛萬苦推廣的時候,要麼發現對個人來說推廣一個 app 是極其困難的,要麼就是發現當我把 app 推到用戶面前的時候,用戶並不會很興奮的接受你的產品,這時候我就會開始思考,如何突破?是尋求更多曝光管道?

還是做一些很花哨很吸引人的運營活動?感覺這些事情對我來說都沒有那麼簡單,成本也都很高,越想越頭疼,越想越會覺得自己做個事情出來真的不容易。

不過,可能我想著突破的點的方向就是錯的。業餘開發者的核心競爭力是什麼?不是你的資源,不是你花裡胡哨嘩眾取寵的玩法,而是你個人意志主導的創新能力!

用戶對於創新功能(當然首先要是合理的)的敏感度是很高的,如果你的 app 提供了一種前所未見但是又能夠解決問題的使用方式,這才是你的產品的核心競爭力,在極致情況下,可能不需要任何主動地推廣、運營,用戶會自發幫你傳播,並且保持很高的活躍度。

當然,這種創新,不是特指一項具體的技術實現,也不是指一個花裡胡哨的設計,需要自己去做理解和平衡。

環境

知道了如何獨立開發一個產品之後,我們再談些別的,例如:為什麼我說國內的環境對業餘開發者是很不友好的?為什麼很少有專職的業餘開發者?

從經濟上來說,其實一個業餘開發者要養活自己還是沒有問題的,但是現在國內的環境是,能養活自己遠遠不夠,首先你要能養活一個家庭,然後你要養房子車子,你要還貸款養銀行,你要交稅養國家,種種因素要求你,要麼有穩定的收入,要麼就有足夠硬的經濟條件。

如果你沒有很好地經濟基礎,而又沒有穩定的收入,對於家庭來說是一件很難接受的事情。

當然,這是大環境,你完全可以跳脫這些束縛,但是大環境對人的影響還是非常大的,你很難擺脫正常人的生活方式與狀態,這些都在暗示你,從事不穩定收入的自由職業獨立開發不是一個好的選擇。

還有其他一些問題,例如社保,五險一金,戶口,簽證等問題,如果你沒有正式的工作,這些事情都會變得很麻煩。

其實我非常嚮往自由職業,所以曾經有一年我沒有工作,在家裡嘗試了一年時間,除了自己的自製力問題之外,我也深知,我沒法維持“自由”這個狀態太久(除非我一夜成功,但是那時候的我,也並非“自由”了)。

因為作為一個正常人,我需要承擔很多這個社會需要我承擔但是我自己可能並不特別樂意的責任。

當然還有一點,我需要回到職場觀察學習,如何成為一個“正常人”,如何創造“大型產品”,雖然可能這並非我的初衷,但是我們並非天才,做任何事情都需要這個世界的輔助,所以我們需要很好地和這個世界溝通。

在這種大環境下,除了鼓勵更多的人參與到自由職業和獨立開發的隊伍中來之外,最好的選擇就是做部分妥協。

但是勿忘初心,利用工作之餘,拾起你對技術和產品的熱愛,慢慢打磨一個業餘的產品,通過這個打磨的過程,積累經驗(硬技能、軟技能),同時保持創造的活躍度。

時間

接下來探討的這個話題可以涵蓋好幾個問題,例如如何一個人在短時間內掌握多項相關的技能?如何維持自己業餘開發的熱情?覺得技術一直沒有長進怎麼辦?

除了 0.1% 的悟性、1%的方法之外,你能做到別人做不到的事情的最大秘訣就是:時間。

如果你真的對一個事情感興趣,那就投入 100% 的熱情和精力,例如每天下班後 7 點到晚上 2 點(當然不鼓勵熬夜)的時間,就是 7 個小時,你一天投入到工作學習的時間比別人多了 7 個小時,一個月就是 200 個小時,加上週末的時間,遠比你正式工作的時間還要長,這些時間才是人和人之間拉開差距的重點。

例如學習 iOS 開發,一天學一個知識點(加上實踐),我覺得最多一個月就可以覆蓋大部分知識點,當然這需要極大地熱情,畢竟不是所有人都捨得將大把的業餘時間投入到學習或者做項目中去。

我在做之前的個人論壇和 app 的過程中,其實狀態都是比較累的,每天大概需要付出大部分業餘時間加熬夜的時間,因為用戶回饋越來越多,我需要不斷地優化自己的產品,完善自己的想法,並且將他們實現出來。

雖然很累,但是成就感還是很強的,這些成就感會激勵我持續的投入更多的時間,形成一個自身成長的正迴圈。

不過做事情總有遇到瓶頸的時候,在遇到瓶頸的時候,我會刻意將節奏放緩,看看別的類型的書,研究下別的類型的技術,或者純粹的放鬆。

Just Do it!

講了這麼多,不知道對大家會不會有幫助,不論如何,最重要的還是開始執行,腦海裡總會冒出一些想法吧,不知道是不是合理?

那就先嘗試做,慢慢的就會發現什麼是合理的,什麼是不合理的,每個人都有這樣的一個過程。

然後多去觀察生活中出現的大大小小的問題,總有我力所能及可以用技術去解決的問題,而這可能就是一個很好的 idea。另外希望真正熱愛技術和創造的朋友可以一直保有自己的那份初心。

原文連結:http://www.techug.com/post/programmer-learn-programming-language-and-develop-side-projects.html

包括其他一些軟技能,例如設計,產品,運營之類。

方法無非就是我上面講的,所以接下來講的業餘開發專案的感受,這些專案,其實最終的初衷除了創造之外,還有很重要的一個點,就是我用來學習技術的實踐,不管你的產品做成功還是失敗了,至少我的技術長進了。

所以,不要在業餘時間做一些沒有技術含量的事情,例如接一些切圖的外包或者你已經很熟悉的事情,多給自己一些挑戰自己的事情。

業餘開發專案的初衷

總體來說,在我的感覺裡,國內的環境對於業餘開發者來說其實是非常不友好的,不過作為一個開發者,一味抱怨並不會有大的改觀,能做的就是不忘初心,多做嘗試多做積累。

包括我之前也和一些朋友深入聊過類似的話題,例如“在行”上約我聊相關話題的同學,我其實是鼓勵大家勇敢的去做自由職業者或者業餘開發者,雖然環境的確不是很友好。

但是年輕時多嘗試總是沒錯的,畢竟我們還有資本去尋找更多可能性,而且我相信每個開發者其實內心都是嚮往利用自己的力量改變人們的生活方式的。

而我們通常做的事情卻總是一個大工程中的螺絲釘,時間長了失卻了創新的初衷意味,這時候離一個創造者越來越遠,自會覺得內心恐慌,我最初的熱愛去哪了?

雖然這些大工程的確在不斷改變我們的生活,但是我的初衷卻是能夠主導一場改變,即使它可能改變的只是一小群人的某個小小的生活方式。

我一直覺得程式師是一個很神奇的職業,不是說這個職業本身神奇,而是代碼賦予我們的能力神奇,我們可以憑空創建起一個虛擬的世界,可以制定這個虛擬世界的規則,可以讓這個世界按照我們的想法運作。

但是這個世界也會反過來要求你改變你,因為一個正常運作的虛擬世界需要嚴謹的規則,這就需要你有設計產品,設計合理規則,設計運作閉環的能力。

這也是我們重點要強調的業餘開發者的能力模型,你不能只是擁有 coding 的能力,不能只是 create,而是要合理的創造,探索人群的新的需求,創造真正有用的產品。

其實這是今天要探討的重要話題之一:業餘開發者如何做出一個真正的產品?

硬技能

這件事絕非看起來這樣簡單,首先在技術上,你要掌握足夠的技術來完成這個產品的各個方面,現在假設以我的上一個app睡前故事為例,完成這個產品需要有哪些方面的技術積累呢?

用戶端開發,iOS,Android,當然如果你選擇只支援某個平臺,可以只掌握其中一種,當然也可以使用一些跨平臺的技術,但是除了語言和程式設計模式,程式設計框架之外,還遠遠不夠,平臺差異,平臺特性,版本相容,自我調整,還有最麻煩的一環,你的 app 開發成功之後如何發佈到對應的平臺?如何設置內購等?特別是 iOS,發佈一個 app 的成本遠比想像的高。另外與端相關的,還有基礎的資料統計,消息推送,分享集成等,在初版的時候最好就能將這些工作做好,而這就需要你瞭解這些功能的集成開發。

前端開發,故事上傳有一個後臺,當然這個很簡單,然後故事從 app 裡分享出去之後有一個 H5頁面,這個頁面裡可以直接播放音訊,然後有一些下載 app 的引導。所以前端開發的技能也是必備的。還有就是一些平常要用的宣傳頁之類的。

服務端,所有故事都是在後臺存儲的,需要資料庫,還有服務端應用提供資料分發,以及一些資料統計之類。

資料記錄與分析,我需要在使用者的使用過程中,記錄使用者的動作和其他有用資訊到服務端,然後以這些資料分析使用者行為,以便決定後續哪些故事是最受歡迎的,以及受誰的歡迎,我可以做定向的推送或者收費服務。

設計能力,說起來這也是非常核心的需要,如果沒有基礎的設計能力,很難做出一個讓大家眼前一亮至少看著舒服的 app,特別是現在市面上的主流 app 都擁有比較高的體驗門檻,粗製濫造的 app 很難吸引用戶。在這點上,也需要做一些刻意的培養,雖然我們可能沒有受過專業的訓練,但是可以多看多想,從別人的設計風格中借鑒,慢慢培養審美,當然還有最重要的就是 設計工具當然需要熟練掌握。

除了技術之外,還需要其他一些技術之外的能力,這些能力可能是區分你與其他程式師的重要分水嶺,它決定了你可以創造產品,而不是掌握了哪些具體的技術。

軟技能

我們簡單談談:

需求分析,產品規劃。要做一個什麼產品,不是因為我掌握了什麼技術,能夠寫出什麼樣的代碼來,技術只是一個工具,要發揮其價值,必然是需要有原始的需求和基礎產品形態。所以要開始獨立開發一個應用,首先要做的可能並不是去掌握很多種技術,而是想清楚,你要做一個什麼產品。例如,我要做睡前故事的 app 的時候,我的確已經掌握了上述的技術,但這些都不是決定性的,如果我沒掌握,我可以去學習,但是為什麼要做這個 app?是因為我有資源(我老婆,講故事講得好,她是老師,身邊有一群潛在的種子用戶),有受眾(強需求,高粘性),於是我開始思考如何利用這些資源,我想一個聽故事的 app 成本應該是不高,而且容易推廣,粘性足夠高的。雖然市面上已經有很多類似的 app,但是我可以做我的特色,例如:我只有一個講故事的老師,而且講的品質很高(市面上大多數故事 app 都講的很敷衍),有很強的品牌和標籤屬性,另外我的設計能力和開發能力突出,我可以將我的 app 做的比任何一個 app 都精緻好用。

推廣和運營。大多數業餘開發者應該都為此非常發愁,我好不容易做出的應用,如何曝光給受眾?如何讓更多的人安裝我的應用?如何維持應用的活躍度留存率?這方面的能力,我推薦大家首先多去嘗試挖掘,另外就是在平常公司的工作中多多留意大家的慣用手段,多向相應職位的同事學習,另外在職場中遇到類似問題的時候也多從自身思考,如果讓你來推廣一個 app,你有什麼辦法?具體如何推廣 app,這裡也可以分享一下。首先,你要保證你的 app 是優秀的,否則你把 app 推給用戶,他不願意下載,那無論如何推廣都是無效的。然後推廣管道,可以找一些免費管道,一些 app 推薦的網站、app、公眾號,想辦法聯繫到他們的編輯。然後請他們推薦你的應用,如果你的應用足夠優秀,他們會很樂意幫忙,這種管道還是挺多的,例如最美應用、少數派、appso之類。另外一個管道就是一些垂直的論壇和社交網站,甚至是知乎之類。然後所謂的運營,最基礎的,在 app 內要有一些與用戶的互動,能夠維持用戶的使用激情,甚至幫你擴散 app 到朋友圈,具體可以是一些活動的形式(運營管用手段)。最後再說一點,適當的時候,要捨得花錢,但是要花在點子上,可以搞一些送禮物的活動,也可以做一些付費的推廣配合沖一下榜。

創新是第一生產力

當我們知道構建一個產品需要些什麼基礎技能之後,那我們如下真正的下手做一個產品出來呢?我應該做什麼類型的產品?我能想到的產品別人都做過了怎麼辦?我人手不足無法開展大型工程如何與別人競爭?我的推廣和運營能力有限沒人用怎麼辦?

有時候我也會困惑,特別是我做了一個 app 出來,然後千辛萬苦推廣的時候,要麼發現對個人來說推廣一個 app 是極其困難的,要麼就是發現當我把 app 推到用戶面前的時候,用戶並不會很興奮的接受你的產品,這時候我就會開始思考,如何突破?是尋求更多曝光管道?

還是做一些很花哨很吸引人的運營活動?感覺這些事情對我來說都沒有那麼簡單,成本也都很高,越想越頭疼,越想越會覺得自己做個事情出來真的不容易。

不過,可能我想著突破的點的方向就是錯的。業餘開發者的核心競爭力是什麼?不是你的資源,不是你花裡胡哨嘩眾取寵的玩法,而是你個人意志主導的創新能力!

用戶對於創新功能(當然首先要是合理的)的敏感度是很高的,如果你的 app 提供了一種前所未見但是又能夠解決問題的使用方式,這才是你的產品的核心競爭力,在極致情況下,可能不需要任何主動地推廣、運營,用戶會自發幫你傳播,並且保持很高的活躍度。

當然,這種創新,不是特指一項具體的技術實現,也不是指一個花裡胡哨的設計,需要自己去做理解和平衡。

環境

知道了如何獨立開發一個產品之後,我們再談些別的,例如:為什麼我說國內的環境對業餘開發者是很不友好的?為什麼很少有專職的業餘開發者?

從經濟上來說,其實一個業餘開發者要養活自己還是沒有問題的,但是現在國內的環境是,能養活自己遠遠不夠,首先你要能養活一個家庭,然後你要養房子車子,你要還貸款養銀行,你要交稅養國家,種種因素要求你,要麼有穩定的收入,要麼就有足夠硬的經濟條件。

如果你沒有很好地經濟基礎,而又沒有穩定的收入,對於家庭來說是一件很難接受的事情。

當然,這是大環境,你完全可以跳脫這些束縛,但是大環境對人的影響還是非常大的,你很難擺脫正常人的生活方式與狀態,這些都在暗示你,從事不穩定收入的自由職業獨立開發不是一個好的選擇。

還有其他一些問題,例如社保,五險一金,戶口,簽證等問題,如果你沒有正式的工作,這些事情都會變得很麻煩。

其實我非常嚮往自由職業,所以曾經有一年我沒有工作,在家裡嘗試了一年時間,除了自己的自製力問題之外,我也深知,我沒法維持“自由”這個狀態太久(除非我一夜成功,但是那時候的我,也並非“自由”了)。

因為作為一個正常人,我需要承擔很多這個社會需要我承擔但是我自己可能並不特別樂意的責任。

當然還有一點,我需要回到職場觀察學習,如何成為一個“正常人”,如何創造“大型產品”,雖然可能這並非我的初衷,但是我們並非天才,做任何事情都需要這個世界的輔助,所以我們需要很好地和這個世界溝通。

在這種大環境下,除了鼓勵更多的人參與到自由職業和獨立開發的隊伍中來之外,最好的選擇就是做部分妥協。

但是勿忘初心,利用工作之餘,拾起你對技術和產品的熱愛,慢慢打磨一個業餘的產品,通過這個打磨的過程,積累經驗(硬技能、軟技能),同時保持創造的活躍度。

時間

接下來探討的這個話題可以涵蓋好幾個問題,例如如何一個人在短時間內掌握多項相關的技能?如何維持自己業餘開發的熱情?覺得技術一直沒有長進怎麼辦?

除了 0.1% 的悟性、1%的方法之外,你能做到別人做不到的事情的最大秘訣就是:時間。

如果你真的對一個事情感興趣,那就投入 100% 的熱情和精力,例如每天下班後 7 點到晚上 2 點(當然不鼓勵熬夜)的時間,就是 7 個小時,你一天投入到工作學習的時間比別人多了 7 個小時,一個月就是 200 個小時,加上週末的時間,遠比你正式工作的時間還要長,這些時間才是人和人之間拉開差距的重點。

例如學習 iOS 開發,一天學一個知識點(加上實踐),我覺得最多一個月就可以覆蓋大部分知識點,當然這需要極大地熱情,畢竟不是所有人都捨得將大把的業餘時間投入到學習或者做項目中去。

我在做之前的個人論壇和 app 的過程中,其實狀態都是比較累的,每天大概需要付出大部分業餘時間加熬夜的時間,因為用戶回饋越來越多,我需要不斷地優化自己的產品,完善自己的想法,並且將他們實現出來。

雖然很累,但是成就感還是很強的,這些成就感會激勵我持續的投入更多的時間,形成一個自身成長的正迴圈。

不過做事情總有遇到瓶頸的時候,在遇到瓶頸的時候,我會刻意將節奏放緩,看看別的類型的書,研究下別的類型的技術,或者純粹的放鬆。

Just Do it!

講了這麼多,不知道對大家會不會有幫助,不論如何,最重要的還是開始執行,腦海裡總會冒出一些想法吧,不知道是不是合理?

那就先嘗試做,慢慢的就會發現什麼是合理的,什麼是不合理的,每個人都有這樣的一個過程。

然後多去觀察生活中出現的大大小小的問題,總有我力所能及可以用技術去解決的問題,而這可能就是一個很好的 idea。另外希望真正熱愛技術和創造的朋友可以一直保有自己的那份初心。

原文連結:http://www.techug.com/post/programmer-learn-programming-language-and-develop-side-projects.html