学编程的一些核心建议
Jes1756
8年前
<p><img src="https://simg.open-open.com/show/c84ae6fe206e427eb309522685c858ce.jpg"></p> <p>这篇文章是去年写的,经过了简单修改。适合编程时间0-2年群体阅读。</p> <p>我认为最重要的有三点</p> <ul> <li>热爱</li> <li>努力(多做项目,每天学习编程 5小时以上)</li> <li>解决问题的能力</li> </ul> <p>这三点保证了其次最重要的就是</p> <ul> <li>选好方向(深度和广度都得保证,最好是80%时间专精保证深度,20%时间来涉猎各种知识保证广度)</li> <li>学会思考</li> </ul> <h2>1. 热爱</h2> <p>编程这么有趣的事,竟然还有钱赚 (by c++ 之父)</p> <p>这个几乎是最重要的,我见过的所有大牛都是都编程无比热爱。</p> <p>我大一也迷茫过,“编程是我所喜爱的东西吗?”,我花了一年时间来确认并给了肯定的答案,现在我非常喜欢写 优雅的代码,顺便喜欢技术带给我的 能力、自信、钱。</p> <p>然后选择方向上,很大一部分是取决你的兴趣的,你对算法感兴趣 or 工程 or 数据 or 硬件 or 安全。</p> <h2>2. 努力</h2> <p>热爱和努力往往决定了你在编程的路上能走多远。</p> <p>第一点做到了,这一点应该是顺理成章的。</p> <p>其中最重要的是,要 learn by doing。也就是做中学,多做项目,非常重要。让你写的程序从100行到1000行,再到万行,就好比看着你创造的城市在一点点的扩大,当然要确保代码的优美,时刻思考,不然那不是城市,而是垃圾堆。</p> <p>还有就是看书,仔细阅读一本经典的书(做笔记、写博客、思考、把理论付诸于实践),胜过看十本普通的书,一百本烂书。所以选书很重要。练习、思考更重要。</p> <p>总结一下,努力就是我后面说的 基本功 和 熟练度 的积累过程,记住 量变导致质变</p> <h2>3. 解决难题的能力</h2> <h3>解决问题的过程</h3> <p>这个复杂一点,是程序员的 核心竞争力,我觉得解决问题的过程无外乎三点</p> <ol> <li>彻底理解问题是什么</li> <li>弄清导致问题的根本原因</li> <li>寻找解决方案</li> </ol> <p>有一种说法是面对 谷歌编程,面对 stackoverflow 编程,其实当你把这三点弄透,你就知道为啥了。你搜索之前应该弄懂前两点,看前人的经验来完成第三点。所以根本不是谷歌帮你编程,而是你在使用谷歌这个工具,最关键的还是你自己,不同人用谷歌搜索的效果是天差地别的。英文搜索质量远高于中文搜索。</p> <p>除了搜索的技巧,基本功、熟练度、胆量 也很重要</p> <h3>基本功</h3> <ul> <li>当然基本功很重要,不然你不可能真的能理解问题,比如你不会数据结构,然后面对这方面问题,肯定是一脸懵逼的。</li> <li>说白了,当你真的懂了一个问题,问题的答案就是呼之欲出的。而透彻的懂一个问题,需要你对这个问题的方方面面有一定的了解和思考。</li> </ul> <h3>熟练度</h3> <p>无他,为熟能尔 (by 卖油翁)</p> <p>量变导致质变,当你解决了数千个问题后,谷歌了上万次,你会发现你再用谷歌,就是一目十行,眼睛跟老鹰一样,瞬间就锁定到了答案。</p> <h3>胆量</h3> <p>对于新手,编程学习的路途中有个胆量问题,对于绝大多数人这个问题还很严重。</p> <ol> <li>谷歌不会,F墙好难</li> <li>英文好多,英语好难</li> <li>自学好难,代码、编程书看不懂,编程好难</li> <li>这里出 bug 了,debug 好难</li> <li>做项目好难,我不敢写有趣的项目</li> </ol> <p>我还是 qq 问一下别人吧。</p> <p>于是海量的伸手党就出现了。</p> <p>其实说白了,就是,大家都没有解决这个问题的胆量,都不敢自己一个人去解决问题,总是在自己的安逸区里活着,虽然这是共性,但是一定要有意识的克服,不然你会一直没有进步。</p> <p>记得有人说过这样一句话,在公司上班,假如技术上的大问题来了,而你没有胆量去解决,而是总是交给别人,ok,别人就会一直进步,最后成为你的主管,你的大主管,你的大大主管,而你原地踏步,说不定还会被新来的淘汰。</p> <p>并且,没有胆量熟练度就无从谈起,做有趣的项目就无从谈起,你学的所有基本功就会持续荒废,学而不用就会怎么样?忘记!</p> <p>所以胆量是编程入门的 基石。</p> <h2>方向</h2> <p>深度和广度都得保证,最好是80%时间专精保证深度,20%时间来涉猎各种知识保证广度</p> <p>选择方向上,很大一部分是取决你的兴趣的,你对算法感兴趣 or 工程 or 数据 or 优美的代码,这个要慎重选择,我花了半年时间才选择的,多了解、多尝试,发现自己的兴趣点,再为之努力,潜下心来学习,挖深领域。</p> <h2>具体怎么学</h2> <p>谷歌搜。</p> <p>具体怎么学编程 也是一个 待解决的问题,我的经验就是看书、做项目、多思考,但是对于不同方向 具体细节是不一样的,答案知乎、论坛里很多很多,学会如何高效学习是一件很重要的事情。</p> <h2>最后: 总结一下非常重要的东西</h2> <ol> <li>热爱</li> <li>努力(学会自学)</li> <li>解决难题的能力 <ul> <li>基本功 <ul> <li>编程能力:语言语法、debug 能力、写优雅的代码、数据结构、算法</li> <li>底层知识:操作系统、计算机网络、编译原理等</li> <li>各领域特定知识:根据你的方向来</li> </ul> </li> <li>熟练度</li> <li>胆量</li> <li>工具(君子生非异也,善假于物也) <ul> <li>英语 非常重要</li> <li>搜索:谷歌(学会用英文搜)</li> <li>社区:github、stackoverflow等</li> <li>各类英文文档:MDN、dash(osx 专属,全平台文档利器在这里 <a href="/misc/goto?guid=4959741983221742250" rel="nofollow,noindex"> http:// devdocs.io/ </a> )</li> </ul> </li> </ul> </li> <li>成果 <ul> <li>扎实的基本功</li> <li>多写几个有一定规模(纯代码量 3k 行以上)的有趣的项目,最好都发布在 github 上</li> <li>等(看完十本经典编程书?)</li> </ul> </li> </ol> <p> </p> <p>来自:https://zhuanlan.zhihu.com/p/25790902</p> <p> </p>