相關閱讀 |
>>> 技術話題—商業文明的嶄新時代 >>> | 簡體 傳統 |
前幾天 fork 了 Ruby China 的源碼,面對陌生的 Ruby 技術棧,一頭霧水。
我 fork 它并不單為了學習,而是要在最短的時間搭建起我腦海中的社區網站。所以我不可能針對每一門新技術都去買一本書來讀上半個月。
我在本機運行起 Ruby China,新注冊一個用戶,發現不能發帖,提示說要注冊一個月以上才可以。于是我去找相關代碼:
# 是否能發帖 def newbie? return false if self.verified == true self.created_at > 1.week.ago end
明明是一星期嘛,代碼是不會說謊的。于是把文字改掉,順便提個 pull request。
扯遠了,代碼說如果是self.verified
就不是新手了,我先去管理后臺看了一下,沒有修改這個字段的界面。于是我不得不去數據庫里更新這個字段。我大概知道 mongodb 是數據庫,但我不知道該怎么操作。
從宏觀出發
當我了解到一個新的技術名詞,不會直接陷入細節,而是從宏觀上把握它。了解它的背景,為何出現,解決什么問題,有什么同類技術,沒有它之前我們如何工作。因為有了宏觀的了解,我就能很容易把它和我熟悉的技術去建立關聯,從而更快地理解它。
實踐出真知
打開官網,發現有個非常棒的 Try it out,先花 10 分鐘玩一下,對其玩法有個大概了解,然后再來解決實際的問題。
從前面的 Try it out 中我知道了help
命令,于是便通過 help 知道了show dbs
,use ruby_china_dev
。根據使用 SQL 的經驗,我想當然地認為更新一條記錄的一個字段應該是這樣:
db.users.update ({"_id":3}, {verified: true})
但我悲劇地發現,整條記錄被替換了,好吧,這就是文檔型數據庫。于是放狗搜索:
How to update specific field in mongodb
很快便找到了答案。
db.myCollection.update ({condField: 'condValue'}, { $set: { dateField: new Date (2011, 0, 1)}}, false, true);
對應我這里的需求就是:
db.users.update ({_id:3}, {$set:{verified:true}}, false, true)
問題解決了。
隨著接觸的越來越深,遇到的問題就會越來越多。我會把每一個解決掉的問題放到我的 Evernote 里,這樣下次再遇到就能很快找到答案。當我發現 postach.io 這個可以和 Evernote 同步的博客系統后,就開通了這樣一個博客,其他人遇到同樣的問題時也更容易找到答案了。
當我真正對一門技術感興趣并且有足夠的時間去學習時,我通常會按照下面的步驟去學習。
教是最好的學
實踐足夠多后時,我可能覺得已經掌握這門技術了。但當我嘗試去表達的時候,會驚訝地發現還有很多概念是似懂非懂的。于是我會去查資料,完善自己的體系。只有當我把學到的東西用自己的語言表達出來,并且能讓聽眾明白的時候,才是真正掌握了該技術。
學會分享是很重要的,把在該技術上的經驗總結出來,寫成博客,集結成書出版,再到行業會議上分享實踐經驗。這樣才能成為該領域公認的專家。
推遲學習
一位一年讀 100 多本書的同事說:
你一年才能讀幾十本書,就不要什么書都看了,多花點時間挑書吧。
現在新技術層出不窮,我們沒有那么多時間去深入學習每一門。對于大多數技術,我們只需要搞懂概念部分,從宏觀上了解一下,決定我們要不要深入地去學習它。有了這些了解,就能輕松地與別人聊天了,也可以為以后技術選型做一些儲備。當面對真正的需求時,或者你有足夠的時間做技術儲備時,才去進入實踐部分。
編程是一個知識更新很快的行業,只有真正有熱情并掌握了好的學習方法的人,才能走的長久。
jianshu.io 2014-07-13 19:57:06
稱謂:
内容: