标题

  • 量产型炮灰程序员
  • 成为优秀Java程序员的10个要点
  • 是时候改变自学编程方法了,这篇国外网友的分享被fast.ai创始人等点赞

初级##

培训班能帮你入门嘛?
放弃吧,如果你没有能力自学,培训班根本帮不了你。
写代码没有捷径,如果你希望在这条路上继续走下去,你必须打好基础,不断学习新的知识才有可能。

如何学?
学习要经历很多阶段:1.基本语法;2.编码实践;3.技近乎道;4.创造新世界。
A(基本语法):学习任何东西,都是一个由表及里的过程。对于一门编程语言来说,“表” 就是基本词汇和语法。对于基础语法的学习,我们可以看一些简短而又系统的教程。B:要掌握基础,持续练习。每一门编程语言的学习容都会涉及:1,运行环境;2,数据类型(数字、字符串、数组、集合、映射字典等);3,表达式;4,流程控制;5,类、方法与函数,等基本内容;6,不同的语言还有一些不同的特性。
看经典书+优秀的视频 应该是最好的入门。

“里”就是思想。深入了解面向对象编程OOP、函数式编程FP、并发、异常、文件IO、网络、标准库等内容。

B(编码实践):
在实践中,我们逐步熟练使用很多API库、框架,也不断踩坑填坑、看源代码、不断解决问题,不断加深对语言的理解,同时会看一些优秀的框架源代码。
如果还有精力,我们再去学习语言更底层的东西,而不仅仅停留在应用层面。如Java中的集合类实现的算法与数据结构。
如JVM是如何执行Java代码的。如Java的线程和操作系统线程的关系。以及一些操作系统方面的知识。
所有数据结构和算法用Java 都实现一遍。
Java集合框架, 不但要学会用, 我还会尝试着实现一遍,List, ArrayList, Set ,HashSet, Map ,HashSet 等等

C:“无他唯手熟尔”
《敏捷软件开发, 原则,模式,实践》,里边详细的讲解了一个薪水支付案例,是迄今为止最好的面向对象设计的例子

在学习Java SE和Java EE的同时, 我会读一下这些源代码:

D(技近乎道):“运用之妙,存乎一心”

E(创造新世界):
“编程的本质就是创造世界。”达到这个境界的,基本都是世界顶尖大牛了。

工欲善其事必先利其器
工具用的顺手,能让你事半功倍,所以需要把工具,环境搭建好。效率提升的同时,也能让你少踩坑,少走弯路。

搭好环境+配好工具

重点内容
计算一段程序的时间复杂度、空间复杂度,如何理解栈、队列等数据结构,了解网络协议的基础。

  • 程序员技术练级攻略

提问式
不要先讲概念。直接上代码,让学生尝试着解答(引发学生主动思考)。答疑的过程中讲解概念。

中级##

SICP

  • 编程能力与编程年龄
  • Is Programming Knowledge Related To Age?

上手开发后,你就要理解原理,懂得调优。

如何快速上手新技术

分5步走:1. 建立基本概念;2. 按照User Guide/Tutorial写例子,写个Demo;3. 扩展;4. 深入技术原理;5. 输出。讲解,写博客,讨论都可。

初入职场的“菜鸟”,怎么攻克一门看起来很难的技术?

螺旋上升

学习是一个螺旋上升的过程,想要上升就得深度思考,多问几个为什么。 基于为什么进行思考。思考多了,积累到一定程度,量变就会引起质变,整个系统就被你看透了,你的知识又扩大了一圈,更多的疑问出现了…

三步走

吃透基础技术
养成良好的阅读源码的习惯
制定长期的技术学习规划

进阶##

高级

你主动去发现应用中的问题,以及找解决方案来解决问题,这个时候就不仅限于眼前的某一种技术了,需要有一个大局观,如何培养你的这种大局观呢,多混社区多和优秀的同行交流,多看源码多学习优秀的开源项目。最好是能够成为优秀开源项目的contributor甚至commiter。

统筹

学习代码的历程,你会发现都是类似的,是螺旋上升的,是循序渐进的。你是从先会一些最简单的逻辑,到开始写一些能用但不好的代码,慢慢自己通过阅读文档、阅读别人的源码来慢慢提升。
写代码一方面需要灵性,需要实践经验的积累,另一方面需要打好基础。在这行业里奋斗的同学们能沉下心多钻研,不要相信有所谓的捷径。

从局部到整体。说得通俗一点就是要脚踏实地,不要老是飘在天上,因为在天上看到的是一整个生态,你当然会看到有很多很多东西,但是如果你不走近看的话你是不会知道,其实有很多东西都是类似的,经典的理论就那么几个,大家的系统很多都是照着这些理论去实现的,只是实现的方式会有些不一样,所以同类型的产品可能场景会稍有不同,但是架构是非常类似的,熟悉了之后你会发现,大部分系统万变不离其宗。

指导方针

  • 时刻提醒自己:学习
    学习某件事的第一步是承认你不知道。刚毕业的人,所谓的“我知道最好的”,其实只是一种虚张声势。他们不知道从哪里来的自信,就好像他们什么都知道,并且需要向每一位新同事强烈的证明这一点。换句话说:你所谓的“我知道我在做什么!”这种态度会妨碍你学习新的东西。
  • 不要试图证明自己是正确的
    要想成为优秀的人,必须学会吃一堑长一智。但是千万小心,经验也可能教会我们重复一些不良行为,甚至也教会我们养成一些不好的习惯。为了避免这种综合症,看看你做的每一种事情,然后问自己:“我怎样才能让它变得更好?”新手试图证明他们写的代码是可以运行的,而不是试图让它运行失败。真正优秀的程序员会积极地寻找他们的错误在哪里,因为他们知道最终用户会发现这些遗漏的bug。
  • 代码可以运行了”这个目标不是终点,而是起点
    伟大的程序员都知道第一次迭代只是一次迭代。接着这个过程就是在定义“更好”的含义。反问自己:让它变得更快能有什么价值吗?可重用更高有什么好处吗?更可靠吗?答案随着每个应用程序的不同而不同,但是过程都是一样的。
  • 写三次代码

学习新技术

    1. 将其与类似的语言进行比较。
      看有关该语言的第一个教程或阅读代码时,请尝试猜测该语言的每个部分将会做什么,并检查你的判断是否正确。 并记下三个列表:
      看起来很熟悉的东西,并且做了预期中的事
      看起来很熟悉的东西,但做了意料之外的事
      看起来完全是新的东西
    1. 阅读语言的官方文档。
      吸收大量信息,从阅读语言的参考资料中可能会受益。参考文献通常是用于查找使用,而不是用来记忆。
    1. 使用互联网搜索。
    1. 与社区接触。
      当提出问题时,请务必先总结准备做什么、已做过的东西以及发生的情况。尽量为专家提供足够的上下文来了解问题,但不需要无关紧要的细节。提出问题后,请务必坚持一段时间来听取建议或会回答你的疑问可能产生的后续问题。
    1. 编写玩具程序。
      一次练习一个新的概念,将重点放在尽可能让你的代码清洁和惯用性上。
      Rosetta_Code
      projecteuler
    1. 使用该语言编写 “生产就绪(Production-Ready)” 的代码。
      考虑将一个熟悉的、相对较小的、经过良好测试的程序移植到新的语言,以探索其在现实使用的应用。
    1. 阅读一本关于这门语言的书籍。
    1. 观看讲座和课程。
    1. 阅读示例代码。
    1. 阅读生产代码。
    1. 寻找好的工具。
      调查在新语言生态系统中管理依赖关系、格式化、模糊化和单元测试代码的选项。
    1. 保持你的热情。
      入门新的语言很容易,但变得真正精通它通常是一个需要多年的旅程。

要利用以前所学的语言的功底,但是也要保持开放的心态。这些在认知心理学中有相应的讲述。

学习方向

底层知识永远都不过时。算法数据结构永远都不过时。基本的程序设计理论永远都不过时。良好的编码习惯永远都不过时。分析问题和解决问题的能力永远都不过时。强大的学习能力和旺盛的求知欲永远都不过时。你大脑的思维方式永远都不过时。

如何学

以终为始先定一个目标,比如学完后写一篇教程,然后去学习,这样更加有动力,有意思的刻意练习,更为有效。知识经过整理,才更容易理解,容易理解的只是才更容易记忆。

通过PDCA控制。PDCA循环又叫质量环,是管理学中的一个通用模型,最早由休哈特于1930年构想,后来被美国质量管理专家戴明博士在1950年再度挖掘出来,并加以广泛宣传和运用于持续改善产品质量的过程。
PDCA是英语单词Plan(计划)、Do(执行)、Check(检查)和Adjust(纠正)

P (plan) 计划,包括方针和目标的确定,以及活动规划的制定。

D (Do) 执行,根据已知的信息,设计具体的方法、方案和计划布局;再根据设计和布局,进行具体运作,实现计划中的内容。

C (check) 检查,总结执行计划的结果,分清哪些对了,哪些错了,明确效果,找出问题。

A (Adjust)纠正,对总结检查的结果进行处理,对成功的经验加以肯定,并予以标准化;对于失败的教训也要总结,引起重视。对于没有解决的问题,应提交给下一个PDCA循环中去解决。

以上四个过程不是运行一次就结束,而是周而复始的进行。

总结:前期准备、中期执行、后期回顾

人性天生懒惰,大部分的人都是半途而废的专家,其实很多时候,不是我们比别人笨,而是别人比我们更坚持。高德纳先生曾经说过“过早退出是一切失败的根源。 兴趣遍地都是,专注和持之以恒才是真正稀缺的。”

如何坚持下去?给任务作出规划,按进度一步步执行。完成后,反思自己的计划和执行情况。

过不断跳出自己的舒适区,使得自己快速的成长。

通过对比学习来加深理解,并通过大量实践深入理解,达到熟练使用。

深度广度辩证
深度和广度,虽然表明看起来是相悖的,但是我认为其本质是统一的。一个卓越的程序员,其最终都应该是一门精通多门熟悉的人。在早期的时候,程序员是在学习基础课程。到工作以后就需要通过实践来加深自己的技术深度,否则将很难通过大公司的技术面试,这个时候深度要比广度重要。而当程序员的技术达到一定高度后,你的岗位职责就要求你有更高的视野,而只有扩展技术栈才能提高技术视野,这个时候广度就优先于深度了。

程序员的不同阶段,广度和深度的优先级也不尽相同。最终,程序员所掌握的每个技术栈都将构成他的一部分,而这些技术栈一起合力打造一个最完美的程序员。所以,不存在转行一说,只是有时候程序员需要去接触更多的技术。

如何学好编程?学习经验汇总相关推荐

  1. 如何学习编程?如何学号C语言?编程学习网站汇总

    编程学习网站汇总: 新手入门: 学编程你不能不知道的网站: 一.C语言手册: 二.C++手册: 三.Python手册: 四.HTML5 + CSS3 + JavaScript: 五.国内公开比赛网站: ...

  2. 谈一谈网络编程学习经验(06-08更新)

    谈一谈网络编程学习经验 陈硕 giantchen@gmail.com blog.csdn.net/Solstice 2011-06-08 PDF 版下载:https://github.com/down ...

  3. 全网最全编程学习网站汇总来了,还不赶快收藏

    Java面试笔试面经.Java技术每天学习一点 公众号Java面试 关注我不迷路 作者:brightwang 来源:https 众所周知,程序员是一个需要不断学习的职业,而幸运的是,在这个互联网时代, ...

  4. 软件编程学习网站汇总——持续更新中

    持续更新各种国内外关于编程语言学习及讨论的网站,有时间我会添加介绍,不过相信很多网站你们都熟悉了,喜欢的可以收藏,我也留着等以后需要的时候翻阅. 若链接有错误,提醒我下,我来改正.有其他好的站也可以推 ...

  5. 谈一谈网络编程学习经验(陈硕)

    作者:陈硕  原文地址:http://blog.csdn.net/solstice/article/details/6527585 本文谈一谈我在学习网络编程方面的一些个人经验."网络编程& ...

  6. 谈一谈网络编程学习经验

    转自  陈硕 giantchen@gmail.com blog.csdn.net/Solstice 2011-06-06 PDF 版下载:https://github.com/downloads/ch ...

  7. 谈一谈网络编程学习经验——陈硕

    陈硕 giantchen@gmail.com blog.csdn.net/Solstice 2011-06-06 PDF 版下载:https://github.com/downloads/chensh ...

  8. QTP User-Defined Function 学习经验汇总

    1. 可以通过Function Definition Generator方便的定制自定义函数(Function) 2. Built-in Function优先级高于User-Defined Funct ...

  9. 谈一谈网络编程的经验

    谈一谈网络编程学习经验 陈硕 giantchen@gmail.com blog.csdn.net/Solstice 2011-06-06 本文谈一谈我在学习网络编程方面的一些个人经验."网络 ...

最新文章

  1. datagridvie设置行高列宽_DataGridView使用技巧(七、设定列宽和行高自动调整)----.NET...
  2. 网站无法显示logo?
  3. AJAX俺也不会,是真的,不过,以后就会了
  4. hibernate QBC检索方式查询
  5. 为什么不敢和别人竞争_看懂这个自我评价发展曲线,你就明白,为什么青春期孩子如此叛逆...
  6. 女生做产品经理好吗_谁说女生不适合做产品经理?
  7. 高可用性及容灾的几个衡量指标
  8. powermockito测试私有方法_Spock代码讲解 静态方法测试
  9. 计算机内码和国际码的转换,汉字机内码、国标码和区位码之间转换关系图
  10. 2021年中青杯B题港珠澳大桥桥梁设计与安全策略数学建模全过程文档及程序
  11. 分体式水晶头_超6类双屏蔽网线水晶头制作简易教程
  12. PHP1c型GNAS,【临床研究与实践】儿童假性甲状旁腺功能减退症20例临床特征与GNAS基因缺陷分析...
  13. VS2013+OpenCV2.4.10配置
  14. 4种方法设置Word文档保护
  15. 6.S081参考书笔记 —— 第7章调度、进程交互
  16. 文献阅读(60)ACL2021-Attention Calibration for Transformer in Neural Machine Translation
  17. PS在处理论文中实物图片的应用
  18. 英语语法——状语和状语从句
  19. 打通产业链 茂名天源石化10万吨催化丙烯装置投产
  20. Ardunio开发实例-线性电位计

热门文章

  1. 1602字符液晶显示
  2. 左特征向量与右特征向量
  3. games101 1-2
  4. 教你如何获取网站icon图标!!
  5. /etc/profile 和~/.bash_profile区别
  6. 七天学会「股票数据分析软件」的开发(上)
  7. 1990-1999年最强华语金曲TOP100
  8. 语音识别 公司_语音识别公司_语音识别公司排名 - 云+社区 - 腾讯云
  9. coreldraw x8里线段显示尺寸_CorelDRAW X8实现轮廓线的粗细变化的方法
  10. 28推论坛邀请注册攻略