面对层出不穷的技术,我们就得这么干!
<p> 俗话说一天不读书,没人看的出;两天不读书,开口会爆粗;三天不读书,智商输给猪。所以,为了让自己的“智商”保持在pig之上,都会逼着自己每天读点东西^_^。但身处信息大爆炸时代精力又极有限的我们,面对层出不穷日新月异的技术,我们应该怎么办呢?</p><p> 其实很多时候只需要掌握一个大概就好了。</p>
<p> 我在做测试的时候很喜欢套用5W1H的框架,后来慢慢的就发现这个框架不仅适用于做测试计划、了解系统业务,还很适合用来做知识的学习——这个想法跟下面的文章不谋而合,故而转之。</p>
<p> </p>
<p>——————————————————我是花丽丽的分割线——————————————————————</p>
<p> </p>
<p><img src="https://images2015.cnblogs.com/blog/721089/201607/721089-20160705155950186-1789879972.jpg" alt=""></p>
<p>前几天fork了Ruby China的源码,面对陌生的Ruby技术栈,一头雾水。<br>我fork它并不单为了学习,而是要在最短的时间搭建起我脑海中的社区网站。所以我不可能针对每一门新技术都去买一本书来读上半个月。</p>
<p>我在本机运行起Ruby China,新注册一个用户,发现不能发帖,提示说要注册一个月以上才可以。于是我去找相关代码:</p>
<pre class="highlight plaintext"># 是否能发帖</pre>
<div class="cnblogs_code"><img id="code_img_closed_faab857b-e62b-4ec4-beab-2b605af3c1be" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_faab857b-e62b-4ec4-beab-2b605af3c1be" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_faab857b-e62b-4ec4-beab-2b605af3c1be" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">def</span><span style="color: rgba(0, 0, 0, 1)"> newbie?
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 255, 1)">return</span> false <span style="color: rgba(0, 0, 255, 1)">if</span> self.verified ==<span style="color: rgba(0, 0, 0, 1)"> true
</span><span style="color: rgba(0, 128, 128, 1)">3</span> self.created_at > 1<span style="color: rgba(0, 0, 0, 1)">.week.ago
</span><span style="color: rgba(0, 128, 128, 1)">4</span> end</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p> </p>
<p>明明是一星期嘛,代码是不会说谎的。于是把文字改掉,顺便提个pull request。<br>扯远了,代码说如果是<code>self.verified</code>就不是新手了,我先去管理后台看了一下,没有修改这个字段的界面。于是我不得不去数据库里更新这个字段。我大概知道mongodb是数据库,但我不知道该怎么操作。</p>
<h4>从宏观出发</h4>
<p>当我了解到一个新的技术名词,不会直接陷入细节,而是从宏观上把握它。了解它的背景,为何出现,解决什么问题,有什么同类技术,没有它之前我们如何工作。因为有了宏观的了解,我就能很容易把它和我熟悉的技术去建立关联,从而更快地理解它。</p>
<p><img src="https://images2015.cnblogs.com/blog/721089/201607/721089-20160705160036905-790011918.jpg" alt=""></p>
<h4>实践出真知</h4>
<p>打开官网,发现有个非常棒的Try it out,先花10分钟玩一下,对其玩法有个大概了解,然后再来解决实际的问题。</p>
<p>从前面的Try it out中我知道了<code>help</code>命令,于是便通过<code>help</code>知道了<code>show dbs</code>,<code>use ruby_china_dev</code>。根据使用SQL的经验,我想当然地认为更新一条记录的一个字段应该是这样:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> db.users.update({<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">_id</span><span style="color: rgba(128, 0, 0, 1)">"</span>:3}, {verified: true})</pre>
</div>
<p> </p>
<p>但我悲剧地发现,整条记录被替换了,好吧,这就是文档型数据库。于是放狗搜索:<code>How to update specific field in mongodb</code>,很快便找到了答案。</p>
<div class="cnblogs_code"><img id="code_img_closed_f9c2470c-4658-4d22-81e7-48fc8805f970" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_f9c2470c-4658-4d22-81e7-48fc8805f970" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_f9c2470c-4658-4d22-81e7-48fc8805f970" class="cnblogs_code_hide">
<pre>db.myCollection.update({condField: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">condValue</span><span style="color: rgba(128, 0, 0, 1)">'</span>}, { $set: { dateField: new Date(2011, 0, 1)}}, false, true); </pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p> </p>
<p>对应我这里的需求就是:</p>
<div class="cnblogs_code"><img id="code_img_closed_d654ab5e-069b-4a2e-856c-08a5d0687c7d" class="code_img_closed" src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt=""><img id="code_img_opened_d654ab5e-069b-4a2e-856c-08a5d0687c7d" class="code_img_opened" style="display: none" src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="">
<div id="cnblogs_code_open_d654ab5e-069b-4a2e-856c-08a5d0687c7d" class="cnblogs_code_hide">
<pre>db.users.update({_id:3}, {$set:{verified:true}}, false, true)</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p> </p>
<p>问题解决了。</p>
<p>随着接触的越来越深,遇到的问题就会越来越多。我会把每一个解决掉的问题放到我的Evernote里,这样下次再遇到就能很快找到答案。当我发现postach.io这个可以和Evernote同步的博客系统后,就开通了这样一个博客,其他人遇到同样的问题时也更容易找到答案了。</p>
<p>当我真正对一门技术感兴趣并且有足够的时间去学习时,我通常会按照下面的步骤去学习。</p>
<p><img src="https://images2015.cnblogs.com/blog/721089/201607/721089-20160705160121874-475823523.jpg" alt=""></p>
<h4>教是最好的学</h4>
<p>实践足够多后时,我可能觉得已经掌握这门技术了。但当我尝试去表达的时候,会惊讶地发现还有很多概念是似懂非懂的。于是我会去查资料,完善自己的体系。只有当我把学到的东西用自己的语言表达出来,并且能让听众明白的时候,才是真正掌握了该技术。</p>
<p>学会分享是很重要的,把在该技术上的经验总结出来,写成博客,集结成书出版,再到行业会议上分享实践经验。这样才能成为该领域公认的专家。</p>
<h4>推迟学习</h4>
<p>一位一年读100多本书的同事说:</p>
<blockquote>
<p>你一年才能读几十本书,就不要什么书都看了,多花点时间挑书吧。</p>
</blockquote>
<p>现在新技术层出不穷,我们没有那么多时间去深入学习每一门。对于大多数技术,我们只需要搞懂概念部分,从宏观上了解一下,决定我们要不要深入地去学习它。有了这些了解,就能轻松地与别人聊天了,也可以为以后技术选型做一些储备。当面对真正的需求时,或者你有足够的时间做技术储备时,才去进入实践部分。</p>
<p><strong>编程是一个知识更新很快的行业,只有真正有热情并掌握了好的学习方法的人,才能走的长久。</strong></p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
**************胜者先胜而后求战,败者先战而后求胜!**************<br><br>
来源:https://www.cnblogs.com/scios/p/5644027.html
頁:
[1]