﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-NOTHING IS IMPOSSIBLE!-随笔分类-Thinking</title><link>http://www.cnitblog.com/colenming/category/7086.html</link><description>愿与你一路同行</description><language>zh-cn</language><lastBuildDate>Fri, 07 Oct 2011 00:31:14 GMT</lastBuildDate><pubDate>Fri, 07 Oct 2011 00:31:14 GMT</pubDate><ttl>60</ttl><item><title>高手与菜鸟，思想与技术 </title><link>http://www.cnitblog.com/colenming/archive/2008/04/08/42140.html</link><dc:creator>colen</dc:creator><author>colen</author><pubDate>Tue, 08 Apr 2008 14:02:00 GMT</pubDate><guid>http://www.cnitblog.com/colenming/archive/2008/04/08/42140.html</guid><wfw:comment>http://www.cnitblog.com/colenming/comments/42140.html</wfw:comment><comments>http://www.cnitblog.com/colenming/archive/2008/04/08/42140.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/colenming/comments/commentRss/42140.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/colenming/services/trackbacks/42140.html</trackback:ping><description><![CDATA[<div class=posthead>
<h2>&nbsp;</h2>
<!--
<rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:description
rdf:about="http://www.cnblogs.com/yuandong/archive/2006/06/07/419945.html"
dc:identifier="http://www.cnblogs.com/yuandong/archive/2006/06/07/419945.html"
dc:title="高手与菜鸟，思想与技术"
trackback:ping="http://www.cnblogs.com/yuandong/services/trackbacks/419945.aspx" />
</rdf:rdf>
--></div>
<div class=postbody>这是个严肃的话题。同样的问题，高手和菜鸟的看法是不同，怎么样不同呢？我们是高手还菜鸟呢？看看以下问题：<br><br>对于AJAX：<br>菜鸟看到的是一种新技术，趋之若骛；高手看到的是javascript的一种巧妙的应用，适可而止。<br><br>对于Web2.0：<br>菜鸟看到的是AJAX，RSS，Tag；高手看到的是以用户体验为着眼点的开发思想。<br><br>对于.Net和Java：<br>菜鸟看到的是格格不入的两大阵营，二者取一；高手看到的是表达自己设计的两种不同的方式，游刃有余。<br><br>对于委托和事件：<br>菜鸟看到的是奇妙的魔法；高手看到的是函数指针和函数指针数组。<br><br>对于网页控件：<br>菜鸟看到的是响应事件的编程；高手看到的是Html生成和页面回送。<br><br>对于项目：<br>菜鸟看到的是数据库和GUI；高手看到的是业务逻辑。<br><br>对于图形界面：<br>菜鸟看到的事Vs.net中看到的所见即所得窗体；高手看到的是Form的一个派生类。<br><br>对于算法：<br>菜鸟觉得是百年一遇的洪水；高手觉得是呼吸着的空气。<br><br>........<br><br><br>这样的例子太多了。为什么会用这样的差距？因为：<br><br><span style="COLOR: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;高手看到的是一种思想，菜鸟看到的是一种技术。</span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 太多次听人说程序员是吃青春饭的，为什么？因为很多程序员成不了高手。总是在追逐技术而不是升华思想。速度是年轻人的特长，而思想则是智慧的结晶。这是个很浅显的道理：你用一个月能够掌握的东西，别人同样一个月可以掌握；你用十年才能掌握的东西，别人不可能用十个月就比你强；你用一个月掌握的东西，可能一年就过时了，而你用十年的心血，是足够你依仗一辈子的。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 偏偏IT就是这么一种不断追逐的轻浮的行业。没有人对离散感兴趣，也没有人研究动态规划。我们该用什么来提升我们的价值？？<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于正在上大学的朋友，我想说：不要急于工作，急于赚钱。从25到65，你用40年的工作时间，为什么不好好珍惜你仅有的4年，好好学习呢？着什么急呢？<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于为了需要养家糊口的程序员朋友，我想说：不要在技术中迷失，给自己点信念，五年，从算法到OOP，论气概，英雄豪迈，从头再来。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 愿天下程序员皆成高手。 </div>
<img src ="http://www.cnitblog.com/colenming/aggbug/42140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/colenming/" target="_blank">colen</a> 2008-04-08 22:02 <a href="http://www.cnitblog.com/colenming/archive/2008/04/08/42140.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习的方法 转载</title><link>http://www.cnitblog.com/colenming/archive/2008/04/08/42139.html</link><dc:creator>colen</dc:creator><author>colen</author><pubDate>Tue, 08 Apr 2008 14:00:00 GMT</pubDate><guid>http://www.cnitblog.com/colenming/archive/2008/04/08/42139.html</guid><wfw:comment>http://www.cnitblog.com/colenming/comments/42139.html</wfw:comment><comments>http://www.cnitblog.com/colenming/archive/2008/04/08/42139.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/colenming/comments/commentRss/42139.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/colenming/services/trackbacks/42139.html</trackback:ping><description><![CDATA[<div class=posthead>
<h2>&nbsp;</h2>
<!--
<rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:description
rdf:about="http://www.cnblogs.com/yuandong/archive/2008/03/05/1092595.html"
dc:identifier="http://www.cnblogs.com/yuandong/archive/2008/03/05/1092595.html"
dc:title="学习的方法"
trackback:ping="http://www.cnblogs.com/yuandong/services/trackbacks/1092595.aspx" />
</rdf:rdf>
--></div>
<div class=postbody>
<p>作为IT业的一员，我们几乎每天都有大量的知识需要学习，有大量的技能等待我们去掌握。几乎从我决定&#8220;献身&#8221;程序员这一伟大事业之后，我就一直在考虑怎么提高自身的学习的能力（简称学习力），以下两张图作为我多年学习生涯得来的宝贵经验，拿出来和同学们分享。 </p>
<p align=center><img height=200 alt=金字塔.JPG src="http://www.cnblogs.com/images/cnblogs_com/yuandong/%E9%87%91%E5%AD%97%E5%A1%94.JPG" border=0> <img height=200 alt=太极图.jpg src="http://www.cnblogs.com/images/cnblogs_com/yuandong/%E5%A4%AA%E6%9E%81%E5%9B%BE.jpg" border=0></p>
<p>如果你看到的第一张是埃及的金字塔，第二张是中国的太极图，说明我的图片没错：第一张代表&#8220;知识的金子塔结构&#8221;，第二张说明了&#8220;理论和实践的相生相克原理&#8221;。</p>
<p>一、知识的金字塔结构。我把我了解的软件知识分成了四个层次：思想，原理，技术和应用，他们之间的关系就像金字塔一样：</p>
<p align=center><img height=287 alt=知识的金字塔结构副本.jpg src="http://www.cnblogs.com/images/cnblogs_com/yuandong/%E7%9F%A5%E8%AF%86%E7%9A%84%E9%87%91%E5%AD%97%E5%A1%94%E7%BB%93%E6%9E%84%E5%89%AF%E6%9C%AC.jpg" width=320 border=0>&nbsp;</p>
<ol>
    <li>
    <div align=left>思想：目前我觉得能上思想的就两个：算法和面向对象。</div>
    <li>原理：原理就有很多了，比如计算机组成原理，网络连接的原理，操作系统的文件访问原理，GC的运行原理等等。
    <li>技术：这个就数不过来了，比如Asp.net技术啦，Ajax，WPF&#8230;&#8230;这些统统是技术。
    <li>应用：世界上所有机器上运行的代码，都算是应用。 </li>
</ol>
<p><font color=#ff0000>思想到应用的划分没有高低贵贱，而只是抽象层次的不同。</font></p>
<p>学习的过程，就是通过某一个应用，了解它所使用的技术，进而掌握其中的原理，最后，领悟其中的思想。这大概也就对应了&#8220;了解&#8221;、&#8220;掌握&#8221;和&#8220;精通&#8221;这三个层次吧。所以<font color=#ff0000>学习力的高低，在于对高层次抽象的掌握能力。</font></p>
<p>举个例子：设计模式这最近几年很火，23个模式翻来覆去的有人在讲。我不知道有几个人认真看了，又有几个人能记得住，反正我比较懒，也比较笨。但是笨人有笨办法，面向对象就那么几个概念：&#8220;继承&#8221;、&#8220;派生&#8221;、&#8220;多态&#8221;，说的再具体一点，也就DIP，SRP这么几个原则，大体看看每个设计模式中运用了哪些概念和什么原则，下次在遇到类似的问题，估计就能把这个模式用出去。（PS：此处选择性的忽略了模式在沟通上的意义，呵呵）。</p>
<p>所以要提高学习力，咱们看书就地多看些有深度的书，什么&#8220;精通&#8221;啦、&#8220;速成&#8221;啦，就免了。孙子兵法、道德经之类的思想藏的太深，想用在代码里咱没那水平。像《敏捷软件开发 原则、模式与实践》，《深入浅出设计模式》之类的就刚刚好。</p>
<p>可是也千万别认为思想就比应用更重要，没有应用，要思想、原理、技术作甚？</p>
<p>二、理论和实践的相生相克原理。</p>
<p>说完抽象，再看看理论与实践的关系，老祖宗的太极图很形象的说明了这个问题，再看一下：白色代表理论，黑色代表实践：</p>
<p align=center><img height=200 alt=太极图.jpg src="http://www.cnblogs.com/images/cnblogs_com/yuandong/%E5%A4%AA%E6%9E%81%E5%9B%BE.jpg" border=0></p>
<ol>
    <li>白色走到头，和黑色接触的就更多：实践多了，更容易理解理论。
    <li>黑色走到头，和白色接触的也更多：理论的东西看多了，就可以更好的实践。
    <li>白色走到头，就会产生黑色：实践的东西多了，自然会有理论产生。
    <li>黑色走到头，就会产生白色：理论的东西多了，自然而然就会想去试试看。 </li>
</ol>
<p>所以我常用的方法是边看书，边写程序，看完书就试着把学到的东西用在项目里。感觉这样能把知识体系穿起来，容易记，不容易忘；写程序写多了就回过头来琢磨一下看看哪儿好哪儿不好，下次肯定会有进步。</p>
</div>
<img src ="http://www.cnitblog.com/colenming/aggbug/42139.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/colenming/" target="_blank">colen</a> 2008-04-08 22:00 <a href="http://www.cnitblog.com/colenming/archive/2008/04/08/42139.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>