怎样快速学习一门新技术

标签: 学习 技术 | 发表时间:2014-06-02 12:07 | 作者:
出处:http://news.cnblogs.com/

前几天 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 dbsuse 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 多本书的同事说:

你一年才能读几十本书,就不要什么书都看了,多花点时间挑书吧。

现在新技术层出不穷,我们没有那么多时间去深入学习每一门。对于大多数技术,我们只需要搞懂概念部分,从宏观上了解一下,决定我们要不要深入地去学习它。有了这些了解,就能轻松地与别人聊天了,也可以为以后 技术选型做一些储备。当面对真正的需求时,或者你有足够的时间做技术储备时,才去进入实践部分。

编程是一个知识更新很快的行业,只有真正有热情并掌握了好的学习方法的人,才能走的长久。

本文链接

相关 [学习 技术] 推荐:

[原]如何学习技术?

- ndv - heiyeluren的blog(黑夜路人的开源世界)
文章来自baidu NY 同学的邮件,整理发出. 1. 想学的技术非常多,该怎么办. 区分重点,选定目标,循序渐进. 技术是无边际的,随着知识的不断增加,会发现未知的东西更多. 1) 找重点:区分感兴趣的技能和必须技能,将重点放在必须技能上. 如实在区分不开,可以这样问自己:不学这个技术会现在的工作是不是干不下去了.

免费的晚餐--Google技术学习

- - 企业架构 - ITeye博客
作者: 江南白衣,原文出处:  http://blog.csdn.net/calvinxiu/archive/2007/01/31/1498597.aspx. 如果说Google的搜索引擎是免费的早餐,Gmail们是免费的午餐的话,.      http://labs.google.com/papers/ 就是Google给开发人员们的一份免费的晚餐.

[原]区块链技术学习笔记

- - 陶辉的专栏
1、区块链技术是一个解决了拜占庭将军(百度百科 拜占庭将军问题)节点的分布式数据系统. 这是它最大的不同,也导致了这个技术存在诸多限制. 做服务器端开发的程序员,都对zookeeper不陌生,我们解决分布式ACP问题时,寻找一致性解决方案时都会想到它. zookeeper实际使用了paxos的简化版算法(本文不展开,请参考我之前写过的两篇文章: paxos分布式一致性算法–讲述诸葛亮的反穿越 以及 paxos算法如何容错的–讲述五虎将的实践).

[译] 理解机器学习技术

- - IT瘾-dev
第1讲 理解机器学习技术. 学完本模块的内容,读者将能够:. 讨论机器学习的技术和商业应用. 学完本讲的内容,读者将能够:. 解释各类机器学习方法和算法. “机器学习领域的突破,其价值10倍于微软. 你是否曾经为计算机能够下象棋或者机器人能够完成复杂任务而感到惊奇. 一旦你理解了机器如何学习和适应各种问题、提供合适的解决方案时,这些看上去很复杂的问题实际上相当简单.

前端技术学习路线图

- - 菜鸟教程
以下 Web 开发人员学习路线图是来自 Github developer-roadmap 项目,目前已经有繁体版翻译 developer-roadmap-chinese. 主要有三个方向,分别为前端开发、后端开发和运维. 可以看到,作为 Web 开发者,不管从事什么职位,下面这些技能点是必须掌握的:.

中国女性学习被富人爱上的技术

- Kai Chen - Solidot
常年招生 写道 "北京妇女德育中心(Beijing Moral Education Center for Women)是一个教授中国女性如何被富人爱上的学校,缴纳两万圆学费后,女性可以接受30小时的培训,学习诸如如何以更迷人的方式化妆以及如何通过面部表情识别男人的谎言等技术. 学校的建立者Shao Tong表示学习目的是辨识男性的地位和人品.

绝大多数新技术的学习,都是浪费生命

- Justin - FeedzShare
来自: 博客园-首页原创区 - FeedzShare  博客园-首页原创精华区 - FeedzShare  . 发布时间:2011年01月15日,  已有 6 人推荐.       很多程序员,在很多的时间,都会说出很多相同的话来,其中最为引起共鸣的就是这么一句话:“每天都要学习新知识,不然就会被淘汰”.

前端技术系列课程(No.4) – 深入学习JavaScript语言

- - Taobao UED Team
本次系列培训最后一课为诗鸣为我们带来的“JavaScript语言”,针对JavaScript语言的运行机制和原理、浏览器引擎和JavaScript引擎之间的协作、阻塞、以及DOM操作性能优化等方面做了详尽讲解,同时还给出了很多代码实例,适合初学者学习.

hadoop学习(七)WordCount+Block+Split+Shuffle+Map+Reduce技术详解

- - CSDN博客数据库推荐文章
纯干活:通过WourdCount程序示例:详细讲解MapReduce之Block+Split+Shuffle+Map+Reduce的区别及数据处理流程.        Shuffle过程是MapReduce的核心,集中了MR过程最关键的部分. 要想了解MR,Shuffle是必须要理解的. 了解Shuffle的过程,更有利于我们在对MapReduce job性能调优的工作,以及对MR内部机理有更深一步的了解.

深度学习技术可以给你带来第三只眼

- - 互联网分析沙龙
智能手机已经采用了多种技术,使得日常任务更易于完成. 打开谷歌地图或其他使用手机GPS传感器的导航应用. 但是美国普渡大学一位教授认为,当前的技术只能做到这些. 普渡大学研究员们正在研发一种技术,可以从根本上将智能手机转化成人的第三只眼睛. 这项技术使用一种被称为深度学习(deep learning)的算法系统,使智能手机摄像头立即辨识它看到的物体.