照着别人代码敲一遍除了让你看得仔细点,练了打字外其它并没有任何帮助——和自己盯着代码仔细看是一样的,这样的学习效率是不高的。

首先得为什么会有这个问题,因为刚刚学习编程会走很多弯路,想找一个合适的方法学习。有这样想法是值得鼓励的,至少是知道怎么学习更好。我本人有些参考经验,可以吸取适用自己的地方。

先说下具体情况大学时期参加过全国的ACM 竞赛(不知道的可以百度查),经过层层选拔,学校竞赛拿一等奖,市竞赛一等奖,到清华参加最后的决赛荣获二等奖。

平时写代码都是很屌的那种,就是别人说要用什么库,什么库才能做好,自己用原生代码,几个方法就实现好了,也经常觉得公司里面代码写得就跟垃圾一样,看了都拉低智商,也不觉得有什么挑战(好在现在出来自由职业也不用顾忌说坏话), 说实话上班一天脑力劳动强度完全达不到ACM 比赛强度的1/3。

这强度是什么一个概念,清华比赛时候我用了4个小时只做出2道题就二等奖了(可能有人要说二等奖是不是有几个人,是的有几个人,共分为3等奖,一二三等奖全部人数加起来可能也只有总人数的1/10,想想那些去参加比赛的都是全国高校计算机专业层层选拔上来的精英)。在这里并不是吹嘘或者炫耀,想说明的是本人可以提供具有价值的建议 ,接下来才是重点。

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

学习基础知识:

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

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

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

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

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

下面是通往高手的进阶篇,只有在你掌握上面的东西后,才能开启下面的技能,不然容易走火入魔,我也帮不了你。

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

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

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

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

  1. 在脑海中提前构建程序,不要过分依赖调试工具和最后的结果。

很多程序员有一个通病,就是写一点,停下来运行看看效果,如果不对再接着改,再看效果,有不对的再接着改,如果中间遇到修改出来的bug,又得跳到去找问题排查bug。这种写法不仅浪费时间,而且水平提升很有限,当然初学者可以这样写,当自己熟悉起来后就不能一味重复用这样方法了。

比如产品经理给了一个ui图,给了一个后台功能,那么你就一口气写到底,在写的过程中不要进行任何的运行查看效果,而是在写的时候再脑海里面构建出程序的样子。写完后再运行,看问题和结果,此时会遇见bug,界面布局不对。第一步先别急着去改,而是思考自己写的时候哪里有问题,思考完以后再一步步改,当然此步可以放宽,可以边看边改。

刚开始用这种方法会很不适应,写出来的东西也有很多错误,只要坚持下去。不需要多久,你的能力就会得到质的提升。最理性的状态是写一遍,运行起来,完全是预期的样子,那么给你鼓鼓掌,你已经是顶尖程序员了。这样不仅能力提升了,还有另外一个好处,别人用4个小时时间才能写好功能,你可能一个小时不到就能写完,总之会比别人快很多倍。

剩下的时间,你可以听英语,看电影,想干嘛干嘛,升值加薪,老板听你的,即使老板吝啬不加,那么大可拍拍屁股走人,去给你开高工资的地方,此时你有的是底气不怕没人要。这里不是吹牛,等你试过了再来说是不是吹牛。

如果到了这一级,在互联网行业你会很吃香,工资最低也得1.5w每月起步(这还是非常非常保守了,在效益不好的企业),会被当做佛恭恭敬敬供养起来。

这个路是自己的一些经验之谈,我指出了一条通往顶尖程序员的路,中间需要多久才能到最后这一级,就看个人努力程度和天赋了。不过我个人更看重努力,勤能补拙,天道酬勤。

欢迎更多喜欢it,在学习it的小伙伴加入我们的Python交流群:7848.6745。

总结出了一些Python视频资料和互联网公司Python程序员面试涉及到的绝大部分面试题和答案做成了文档分享给大家,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

照着别人的敲代码来学习编程好吗相关推荐

  1. 不是买一台电脑就能敲代码!学习java必须了解的计算机知识以及准备工作

    01.01_计算机基础知识(计算机概述) A:什么是计算机?计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成 ...

  2. 为什么说抄代码是学编程的正确打开方式?

    今天看到一个有意思的问题,抄代码对学习编程有没有帮助? 抄代码不但有帮助,而且帮助非常大,特别是抄那些优秀的开源项目. 说到抄,普遍给人的印象不太好,但在学编程这件事上,抄是屡试不爽的奇招.这里的抄, ...

  3. 刘鑫成同学与老师们的对话:“学编程=敲代码?”

    博文来自刘鑫成同学的博客:http://www.cnblogs.com/liuxincheng/ 感悟 原博文地址:http://www.cnblogs.com/liuxincheng/p/53081 ...

  4. 程序员在学习编程的时候,想记住所有代码是不可能的!为什么?

    在程序员的职业生涯中,记住所有你接触过的代码是一件不可能的事情!那么我们该如何解决这一问题? 以下为译文: 每个人都会在学习编程语言的时候,努力记住所有一切,这也不足为奇.虽然有些人可以过目不忘,直接 ...

  5. 计算机基础ppt_为什么大学老师教编程上课都不敲代码?为何老师上课都是PPT讲解,实战呢?...

    最近蛮多同学比较好奇学校的大学老师为什么只讲ppt和基础,感觉很死板,而且学习的时候完全没有激情和乐趣,安全没有兴趣, 说起大学带编程类课程的老师,很多都是假期才赶鸭子上架自学的,开学就教学生,所以水 ...

  6. 双手无法敲代码的程序员,该如何编程?

    对于程序员来说,敲代码是编程工作中不可缺少的"仪式".那么如果是身患残疾.抑或是无法通过手部来编码的人群来说,又如何突破这道最基本的防线呢?本文的作者就是一位罹患手部疾病的开发人员 ...

  7. 敲代码括号技巧_老码农的「锦囊」:10个编程技巧、5个纠错步骤,让你的编程之路少点坎坷...

    善始者实繁,克终者盖寡,这句话用来学习编程的过程也很合适.在成为顶尖选手之前,总会遇到很多困难,甚至想放弃.本文作者 Jeff Hale 是 Medium 社区中非常有名的人工智能和技术领域的专栏作家 ...

  8. 从种蘑菇到敲代码,谁说女孩子就不适合做编程?

    [CSDN 编者按]她,一个89年的农村姑娘,从种蘑菇到卖煤球,再到敲代码做云原生,成为企业创始人,一路走来她都经历了哪些困难与挑战,对于新生代程序员又有哪些建议?让我们一起来看看她是怎么说的. 作者 ...

  9. L1-015 跟奥巴马一起画方块 (15分) 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥

    美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014年底,为庆祝"计算机科学教育周"正式启动,奥巴马编写了很简单的计算机代 ...

最新文章

  1. 一步步学习 Spring Data 系列之JPA(一)
  2. vue实现页面权限显示_vue实现菜单权限控制
  3. 服务器用户编码是什么,涨知识:英特尔服务器CPU编号是啥意思?
  4. 一通电话被骗走4年生活费,她决定用技术守护千万用户
  5. 中国智慧VS西方智慧-看中国IT风云与IT产业怪状
  6. PagerAdapter学习
  7. 中事件源previous_PM2.5传感器在扬尘监测系统中的应用
  8. c oracle 存储图片,用c语言如何读取和保存jpg图片文件?
  9. matlab2c使用c++实现matlab函数系列教程-load函数
  10. html添加表格背景颜色代码,html – 设置表格行的背景颜色
  11. 插桩 java_Javassist进行方法插桩
  12. 等保二级和等保三级的三大区别讲解
  13. ArcGIS小知识(五)——arcmap锁定图层-编辑时只选择唯一图层
  14. css中100vh 加减运算
  15. 无线串口模块通信技术参数快速选型指南
  16. 使用DirectPlay进行网络互联(3)
  17. env.render() 出现 your graphic drives do not support OpenGL 2.0
  18. idea转驼峰使用快捷键
  19. 高新技术企业有哪些隐形好处
  20. 学习笔记(9):C#急速入门-格式化字符串输出

热门文章

  1. NET 里序列化可概念。
  2. 大数据之Linux 基础
  3. JVM(二十二) -- 性能监控与调优(三) -- JVM监控及诊断工具--GUI篇
  4. 无监督特征学习(半监督学习+自学习)
  5. Latex公式换行但不加序号
  6. 文化中国 系列一:明朝的那些人儿
  7. 时间进度管理-甘特图
  8. 对象存储应用场景都有哪些?
  9. 不负春光不负卿,听康大厨讲讲OpenStack重要组件的那些事儿
  10. Java高并发系列5-线程池