学习编程的过程,大致如下:

  1. 看书、看博客、学课程或者看视频等
  2. 模仿着书上或者博客的代码,进行复现,复现不重要,思考才是关键 ⚠️
  3. 思考学习别人思路后,脱离书本和博客,完全自己实现功能
  4. 自己实现一些 DEMO,看别人项目代码,与别人讨论,提升代码能力
  5. 在别人的框架和要求下,写代码实现业务
  6. 自己负责别人设计的模块的实现
  7. 独立设计业务模块并开发实现
  8. 负责大项目框架设计和拆分,带领别人进行开发
  9. 其他高阶的架构和管理工作,已经不仅仅是代码能力了

而以下就是我个人总结出的六项重要诀窍。

1.让编程成为一个习惯

想要培养一项技能的最好的办法,就是将他融入到我们的生活并成为我们的爱好。其实说白了,就是让这个爱好成为一个习惯,一天不去做这件事情,都会觉得少了什么。在不知不觉中,这个习惯会像滚雪球一样积累起来。

对我来说,养成这种习惯首先就是要对“拖延症”说不。比如,你想锻炼下自己的写作能力时,但是没有好看的本子,没有好的灵感,没有安静的环境....总之就是找各种理由一拖再拖,最后就不了了之了。

但仔细想想等你有了好看的本子,舒适的环境....就能写出好的文章吗?不!我很明确的告诉各位,文章的功底是随着你不断的积累而成的。所以,当我们决定去做某件事情,请立刻!马上!现在就要开始行动!

接着从小事入手,如果我决定开始跑步,那么最初只会要求自己每周跑两、三天。虽然看起来要求低,但这样的作法更容易长期坚持,且不会被其它因素所轻易干扰。

同样的思路也适用于学习编程。每周拿出几天,每天拿出几个小时,编程学习就这样慢慢步入正轨。如果大家觉得没心情阅读编程教材,没关系,视频网站上的技术讲座能够起到同样的作用。

2.把工作拆分成小块

对待编程工作,我们没必要像健身狂人那样一口气做到筋疲力尽。与其直接编程2小时,我们完全可以先做25分钟、而后休息5分钟,整个过程重复4次。很明显,25分钟这样的短周期更容易坚持也不会带来多少压力。

不过这样的方式应该配合更为灵活的执行思路。如果您感觉状态很好,而25分钟才刚刚完成热身,那就继续做下去并努力让自己抓住这种状态。向大家推荐蕃茄工作法,这是种学习新型技能的良好机制,推荐各位认真了解。

3.阅读别人的代码

经过这几年的编程学习,我认为想要提升编码水平的最佳途径就是多看、多写,然而阅读别人的代码也确实是快速提升代码水平的一个技巧。至于如何高效地阅读代码,请参考我的这篇回答:

程序员如何高效读代码?​www.zhihu.com

4.寻找良师益友

学习编程的一个很好的方法就是和其他的程序员交谈。这不仅能够帮助我们多获得一种思维方式,同时也能够以更为愉悦的感受完成学习任务。至于内容没有特定的要求,可以是你正在学习的东西,也可以是你认为很酷的东西,更可以是你正在工作的东西。这样做可能会让你学到很多关于库,服务,编程语言和模式方面的知识。但是,最重要的是,你能了解到其他人是如何看待编程的。

5.写技术文章

如果大家学习了一种新的编程概念,但不能确定自己是否已经真正掌握,可以写技术博文加以检验。或者是在技术博客网站上搜索,找找是否有人提出了类似的问题,然后给出您自己的答案。如果答案不对,那么讨论的过程能够有效加深理解。这样的过程,能给我们带来宝贵的经验,同时也能帮助他人。

值得提醒的一点,别因为自己刚刚涉及编程而有所顾虑。罗马不是一天建成的,出色的程序员也是一样。只要您对问题有所了解,就不妨给出自己的答案——无论对错,这都将成为一次宝贵的经历。

6.保持耐心

对于人生来说,其中任何目标的实现都离不开耐心。编程学习就如其它任何学习任务一样,都需要反复努力并投入大量时间。

在这个过程中,您一定会经历高潮与低谷——别被这些曲线影响了心情。接受已经发生的一切,并尽可能避免其中不好的部分。就像打高尔夫球一样,我们的手感总在不断浮动,但只要坚持到底,您最终总能成为一个大神呢~

同志们,加油!

很多人觉得学编程难,大都是掌握方法,而不是能力、性别或其他原因。除了想达到行业顶级开发者的水平,如果你是想学编程,掌握了对的方法,就能学好。

个人通过题目描述分析,应该是学习方法不对,没有培养出编程的思维和能力,这是一个因果关系。

感觉编程难,我在初学编程的时候也遇到过。刚刚学习编程会走很多弯路,想找一个合适的方法学习。有这样想法是值得鼓励的,至少是知道怎么学习更好。我本人有些参考经验,可以吸取适用自己的地方。

计算机重点在于用已有的知识搭构建功能,而构建功能的步骤是固定的,只是需要掌握牢基础知识,并且提升自己的思考能力。思考能力也算是程序员的核心了(不是看,不是写,而是思考,如果照着别人代码写同时带上了思考,那么也是有效果的)。我建议的学习方式如下:

学习基础知识:

1. 数据结构,经典算法。可以根据学到的算法和数据结构解决书本习题后面的算法问题(注意不是看了解答过程再重复写一遍,而是在自己不知道情况下写一遍,代码量可能是只有十几行,写花不了多少时间,只是思考得花些时间——一定要坚持,我曾经思考了几天就为了解一道算法题,当然根据自己的情况,不用一下选这么难的。这里培养的是解决问题的思考能力)。

2. 学会写递归,同时把递归变为循环实现相同的功能。(此处是完善思考能力,再提升一步)

当你学会前面2条的时候,即使你是第一次接触计算机,经过努力和学习掌握后水平已经超过了入门的同学,达到了中级的概念。这是内功,不是说你对某个语言运用自如了。武林高手比武比拼的是内功,外面掌握语言学习用法只是熟悉程度是外在的招式(这个非常容易掌握,多写几次就会)。

为什么开始就进入内功的修炼,因为万法归一,万变不离其宗,无论你以后学习什么语言,学了多少语言,刚进入的水平就是中级,一劳永逸。

后面只需要花点时间掌握语言的用法,方法调用,框架的使用,那么恭喜你,你的能力已经可以胜任大部分互联网公司的职位了。(这里得注意顺序,是先掌握了核心的算法和思想后才是熟悉语言本身)

下面是通往高手的进阶篇,只有在你掌握上面的东西后,才能开启下面的技能:

开发过程中多思考,多尝试新东西,思考是通往编程高手应该具备的基本素质。

这里还是思考,和上面还有不同。思考不是瞎思考,而是有深度思考,出色的程序员写代码的时间非常少,大部分都是在思考。给你一个功能,需要根据自己有的基础知识在脑海中想怎么实现合理,高效,想清楚后再写,而不是边写边改边想,那么水平永远都是止步不前的抑或进步和蜗牛一样。

当思考同一类问题,用的时间越来越少,那么侧面反映出水平提高了,可以试着思考更复杂的问题。思考需要循序渐进,不能一开始拿一个非常复杂的问题思考,而是在自己跳一下就能够到的高度。

对于在公司上班,你会发现思考时间越来越少,完全是需求到了就马上知道怎么写了。然后就是无聊听着公司领导介绍,开会讨论。但是不要忘了,自己得给自己找事做,停止思考或者习惯了某种思考模式后进步就会减慢,要进步就要不断尝试新东西,多思考。

以上就是我建议的学习方法,希望能对你有所帮助。当然,每个人都有自己的学习方式和习惯,适合自己的,才是最好的。

参考内容: 自学成才的程序员,给新手学习编程的六个建议

推荐一些程序员学习网站:

0. GitHub — 开发者最最最重要的网站:https://github.com

这个不用多说了吧,代码托管网站,上面有很多资源,想要什么轮子,上去搜就好了。并且呢,上面有很多优秀的程序员,你可以在这里交到很多好朋友喔。

1. Stack Overflow — 解决 bug 的社区:https://stackoverflow.com/

开发过程中遇到什么 bug,上去搜一下,只要搜索的方式对,百分之 99 的问题都能搜到答案。在这里能够与很多有经验的开发者交流,如果你是有经验的开发者,还可以来这儿帮助别人解决问题,提升个人影响力。

2. 程序员客栈:https://www.proginn.com/

程序员客栈是领先的程序员自由工作平台,如果你是有经验有资质的开发者,都可以来上面注册成为开发者,业余的时候做点项目,赚点零花钱。当然,如果你想成为一名自由工作者,程序员客栈也是可以满足的。只要你有技术,不怕赚不到钱。很多程序员日常在这里逛一下,接一点项目做。很多公司也在这发布项目需求。

3. 掘金 — 帮助开发者成长的技术社区:https://juejin.im

现在国内优质的开发者交流学习社区,可以去看大佬们写的文章,也可以自己分享学习心的,与更多开发者交流。认识更多的小伙伴儿,提升个人影响力。

4. v2ex:https://www.v2ex.com/

V2EX 是一个关于分享和探索的地方,上面有很多各大公司的员工,程序员。你想要的应有尽有。

5. 博客园:https://www.cnblogs.com/

博客园创立于2004年1月,是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。很多早期的高质量内容都在博客园。

6. Medium:https://medium.com/

国外优质文章网站,Medium 的整体结构非常简单,容易让用户沉下心来专注于阅读。上面有很多高质量的技术文章,有很多厉害的人在上面发布内容。

7. Hacker News:https://news.ycombinator.com/news

国外优质文章网站,上面有很多高质量的技术文章,有很多厉害的人在上面分享内容。

8. GeeksforGeeks:https://www.geeksforgeeks.org/

GeeksforGeeks is a computer science portal for geeks。(感谢@三三白白的补充)

除了这些论坛,程序员还有一些必备网站:

0. Google:https://google.com

这个不用多说了吧,查资料,有问题,Google 一下。当然,能访问的人自然会用,访问不了的人,可以用必应或者百度吧。

1. 算法学习 LintCode:https://www.lintcode.com/

算法学习网站,上去每天刷两道算法题,走遍天下都不怕。

2. 算法学习 LeetCode:https://leetcode.com/

也是算法题网站,同上。

3. 算法学习 LeetCode 中文站:https://leetcode-cn.com/

这个是上面算法题网站的中文站点,英文不好的可以刷这个,英文好的推荐去刷英文网站的题目,还能提升英语能力。

4. 牛客网 — 面经和刷面试题:https://www.nowcoder.com

各个公司的面试题和面经分享,找工作前认真刷一刷,一定会有很大收获!拿到心仪的 offer!

5. Web 开发练习题:https://www.freecodecamp.org/

这是国外发起的一个 Web 开发学习的网站,从简单到深入,一步一步带你学习 Web 开发。就像一本练习册,并且当你完成相应的内容后,会得到相应的资格认证。

6. 百度前端技术学院 — 前端开发项目库:http://ife.baidu.com

学前端的看这里,百度官方推出的前端开发学习技术学院,题目从简单到困难,如果你把里面的题都做会了,找个 BAT 的前端工作不成问题的。

其他学习网站:

0. 各种编程语言,编程工具,各种轮子的官方网站

要记得,学习一门语言或者一个工具,最优质的学习网站就是他的官方网站,官方文档。

1. 菜鸟教程:http://www.runoob.com/

菜鸟教程的 Slogan 为:学的不仅是技术,更是梦想! 记住:再牛逼的梦想也抵不住傻逼似的坚持!网站包括了HTML、CSS、Javascript、PHP、C、Python等各种基础编程教程。

2. 中国大学MOOC网:https://www.icourse163.org/

中国大学MOOC是由网易与高教社携手推出的在线教育平台,承接教育部国家精品开放课程任务,向大众提供中国知名高校的MOOC课程。在这里,每一个有意愿提升自己的人都可以免费获得更优质的高等教育。

如果大家对C/C++感兴趣的话,可以加一下我们的学习交流Q群:637  935  295,免费领取一套学习资料和视频课程哟~

推荐给前端程序员的技术、论坛、资讯网站:

  1. https://medium.freecodecamp.com/
  2. https://css-tricks.com/
  3. http://css-weekly.com/
  4. https://www.html5rocks.com/en/
  5. https://mobilewebweekly.com/
  6. http://www.echojs.com/
  7. http://us5.campaign-archive1.com/?u=ea228d7061e8bbfa8639666ad&id=68fee2a1f3&e=91389ff35f
  8. https://www.smashingmagazine.com/
  9. https://www.sitepoint.com/
  10. http://javascriptweekly.com/
  11. http://frontendfocus.co/
  12. https://frontendfoc.us/
  13. http://reactjsnewsletter.com/issues
  14. http://feeds.feedburner.com/html5rocks

推荐给前后端程序员的技术、论坛、资讯网站:

  1. https://hashnode.com/
  2. http://us4.campaign-archive1.com/?u=9735795484d2e4c204da82a29&id=0f792acd6e&e=e6bacace33
  3. http://rubyweekly.com/
  4. https://golangweekly.com/
  5. https://dbweekly.com/
  6. https://risingstack.com/
  7. http://nodeweekly.com/
  8. https://webopsweekly.com/
  9. https://postgresweekly.com/
  10. http://nodeweekly.com

推荐给前安卓程序员的技术、论坛、资讯网站:

  1. http://androidweekly.net/
  2. http://us2.campaign-archive2.com/?u=869610fc59cf83e08b6e0635a&id=6880ca6f63&e=1411ee8814

推荐给前 iOS 程序员的技术、论坛、资讯网站:

  1. https://iosdev.tools/
  2. https://iosdevweekly.com/
  3. https://littlebitesofcocoa.com/
  4. http://ios-goodies.com/
  5. http://digest.swiftweekly.com/

知友推荐:

1. 在线学习网站:https://www.tutorialspoint.com/

2. 算法学习和竞赛网站:http://codeforces.com/

3. 程序员问答网站:https://segmentfault.com/

4. Linux Kernel:https://www.kernel.org/

5. FCC 中文网:https://www.freecodecamp.one/

6. B 站:https://www.bilibili.com/

7. 阿里巴巴开源镜像:https://opsx.alibaba.com/mirror

8. USTC 开源镜像:http://mirrors.ustc.edu.cn/

如何学习编程?顺便介绍些好的网站相关推荐

  1. 学习编程和练习的必备六大网站

    一.leetcode LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/leetbook/ 刷算法题目和社区讨论,竞赛与求职都结合的平台网 ...

  2. 学习编程有疑问?七个网站助你菜鸟变大牛

    很多同学在学习编程时候会遇到各种各样的问题,这些问题需要自己去想办法解决,那么这些网站平台将会给你很大的帮助. 1.W3school 这是一个免费学习编程语言的在线学习网站,里面的知识浅显易懂,非常适 ...

  3. 学习编程可能会走哪些弯路,有哪些经验可以参考?

    本回答是我通过学习编程过程中走过的弯路,总结出来的一些经验,供你参考.首先我要声明一点,如果你是一个初级程序员,本回答并非要让你因为可能正在犯这些错感到蓝瘦香菇,而是要让你意识到它们的存在,教你如何辨 ...

  4. 网上学习编程的七大趋势

    随着互联网技术的不断提高,网上学习已经越来越普及了.无论是目前,还是将来,它都将会成为一种流行的学习模式.谈及编程,在Glasssdoor最近发布的一份调查报告(top 25 lucrative, i ...

  5. 12 个最佳的免费学习编程的游戏网站【转】

    转自:http://blog.csdn.net/jxgz_leo/article/details/52767185 本文导航 -CodinGame -Code Combat -Screeps -Che ...

  6. 12 个最佳的免费学习编程的游戏网站

    本文导航 -CodinGame -Code Combat -Screeps -Check iO -Vim Adventures -Cyber DoJo -Code Monkey -Elevator S ...

  7. 编程比赛 介绍 入门 及 学习路线

    内容若有不足与纰漏,请多指教! 文章目录 写在前面 编程比赛介绍 蓝桥杯 天梯赛 CPC类 比赛 编程比赛要点注意 赛前 赛中 赛后 编程比赛常见术语 比赛相关 常见术语 编程 | 学习 学习 | 练 ...

  8. 少儿编程Scratch学习教程--Scratch介绍及参赛相关

    之前写了几篇关于Scratch的使用文章.忽然想起,忘记介绍下Scratch了. Scratch是一款由麻省理工学院(MIT) 设计开发的少儿编程工具.官方网址是麻省理工学院网站的一个分支.这个软件的 ...

  9. 关于编程学习及面试,推荐些适合的网站,希望对现在的你有帮助!

    曾经我作为一名学生,也很苦恼自己会不知道如何学习编程,自己平时总结下来了相关的学习资源,大家平时也可以养成积累的好习惯,下面是一些简单的分享,适合刚入门或者将进入职场的大家. 1.菜鸟教程 https ...

最新文章

  1. 【负载均衡】揭开F5 BIG-IP的神秘面纱(一)
  2. linux timeline
  3. Winform中实现双击Dev的TreeList在ZedGraph中生成对应颜色的曲线
  4. [Abp 源码分析]异常处理
  5. php去掉多字节字符,PHP 面试题 - 如果没有 mb 系列函数,如何切割多字节字符串...
  6. python画图删除上边框和右边框
  7. 用mplfinance库定制A股常用的K线、均线图
  8. Shellex:针对shellcode的转换与处理工具
  9. 小米浏览器禁止java,如何禁止小米手机浏览器中弹出窗口广告
  10. python项目运行的软硬件环境_开发时的软硬件环境和运行时的软硬件环境分别是什么...
  11. PHP对接抖音开发平台接口
  12. 中文论文检索证明怎么开_SCI论文检索后收录证明怎么开?
  13. Python实现穷举破解WiFi密码
  14. django相关报错知识整理
  15. Win10系统无法使用VGAPlayer软件播放asf格式和VGA文件
  16. SQLite这么娇小可爱,不多了解点都不行啊
  17. 关于学习的几个经典定律
  18. [SHOI2008] 小约翰的游戏
  19. 九、系统的软中断导致CPU使用率升高,我该怎么办?
  20. VII html+css

热门文章

  1. 微信上线青少年模式,开启后这些功能无法使用
  2. 哪些服务器支持win8系统,Win8服务器版更名Windows Server 2012
  3. java generic faq_【公告】我的世界中国版JAVA不限号测试指引(FAQ)
  4. mysql .pdb是什么文件_超详细讲解如何使用 pdb 在服务器上调试代码
  5. python celery应用场景_Celery使用背景与功能概要
  6. 【软件质量】CMM与CMMI
  7. 【软件工程】实体类的持久性
  8. 【计算机网络】比较TCP与UDP
  9. 100道Go语言面试题
  10. 可变大小、颜色边框、样式的UISwitch