编程学习的七个阶段

在学习编程的时候,总会遇到这样那样的困难,笔者整理了编程学习各阶段的问题及心态分析。希望对广大编程爱好者有帮助。

第1阶段:机会

你很开心,你一直想学这个新的内容,比如说某编程语言,无论是规划还是环境所迫,总之你终于有这个机会学习了。

第2阶段:没有根据地乐观

谷歌搜索——挑选一两个自己感兴趣的教程,买资料和书,然后开始MOOC(大规模在线开放教程)。教程很有趣,甚至还有在线REPL,可以让你玩耍,你觉得你正在进步中。当然也有烦恼——手指还不熟练,但你坚持,不肯放弃,并准备向你的第一个项目进军。

第3阶段:绝望的深坑

你开始从“Hello, World”延伸开去,例如,先是将内容更改为“Hola,Mundo”这样小心翼翼的尝试,然后胆子稍微肥了点,开始肆无忌惮了——于是乎,错误信息,堆栈跟踪,随机行为纷至沓来。即使不管所有的错误信息,那些能在教程中正常工作的代码,也许你亲自操刀的结果却是一片空白。你恍然发现,哪怕是一些看上去愚蠢但良性的细微差别,也会造成狂风暴雨,让你阴沟里翻船,陷入绝望的深坑。即使是最简单的任务都让你痛苦不已,你开始怀疑自己,怀疑自己其实压根就没有编程的天分。

第4阶段:放低身段

慢慢地,通过试验和错误的洗礼,通过向同事、StackOverflow、博客寻求帮助,你开始一点一滴地积累知识。你开始懂得如何显示数据,如何与数据库进行交流,如何创建接口,如何覆盖方法。虽然你还并不能真正理解上述任何一个的工作原理,但是在不断掌握这些神奇的咒语,扩充知识领域的同时,完成一些特定的、必要的任务渐渐变得不在话下。对于有的咒语,你可能会用得非常顺手,甚至在一些有问题的情况下也生搬硬套,觉得只要完成就好,哪怕内心明白自己这样做并不对。调试是一种挫折锻炼。无论是因为自我觉得目标已经实现,计划将时间放到其他地方,还是因为太难因此望而怯步,亦或是自诩已经掌握了专业知识从而做出了自认为理智的选择,总而言之很多人止步于这一阶段。

第5阶段:黎明的到来

到了这一阶段,由于你已经积蓄了足够多的信息片段,于是开始能够找到它们之间的连接。你开始能够灵活应用知识,而不是像之前那样生搬硬套。你对一些基本规则开始有所谓的直觉,开始从死板地遵守向接收知识转变。这也是一个不均衡的过程——对这方面心意相通的同时可能仍然困惑于另一方面——但是你有信心一步一步地拿下,你开始享受这个过程。

第6阶段:专业

一段时间以后,你完全掌握了基本模式,开始觉得编程就像吃饭那样轻松自然。你已经可以直观地了解事物的工作原理,并且在架构、编码和调试之间轻松斡旋。一般说来你已经不必刻意地去思考问题,就像你从家里到商店去买东西——你知道怎么走,如果有一些新造的道路,你也能瞬间权衡不同的选项,并选出一条最佳的路线。此时,碰到问题最难的应该是问题本身,而不是操作系统来支持你想要它做什么事情。

第7阶段:成就

你现在已经是一个有着多年经验的专家了。你投入的时间和精力通通有了回报。你写博客文章,助力开源项目,成为了同行中公认的专家。这俨然成为你的身份和荣誉,也成为了你的枷锁,你的所作所为需要匹配专家这个名头。突然有一天,新生事物出现了。你内心也明白,这个新事物很好,将会很有用,能帮助轻松解决现有工具不足以解决的问题,将会是未来的潮流。但与此同时,你清楚地知道成为专家所需要付出的努力和时间,需要再次感受不足和挫折,需要去向他人求助等等,你不愿意了,你退缩了。你宁愿闭上眼睛,墨守陈规,将自己蜷缩成一团,就好像枯萎的枝干慢慢死去。

推荐阅读

TIOBE编程语言排行榜(2015年5月)

编程入门先学什么

美国市场上15门最赚钱的编程语言

时间: 2024-10-14 04:23:28

编程学习的七个阶段的相关文章

Shell编程学习(七)

if 条件语句的知识与实践 if 条件语句 if条件语句的语法 单分支结构 第一种 if <条件测试表达式> then 指令 fi 第二种 if <条件测试表达式>; then 指令 fi [说明] [ -f "$file1" ] && echo 1 等价于下面if条件语句 if [ -f "$file1" ]; then echo 1 fi 双分支结构 if <条件测试表达式> then 指令集1 esle 指令

C++编程学习(七) 循环结构

1.continue:循环体中结束本次循环,直接进入下一次循环. 2.break:循环直接结束. 3.在for语句循环体中执行continue语句,程序会转到“表达式3”继续运行. 4.使用多重循环的时候,嵌套的循环控制变量不能相同. 5.循环语句的选用之for: 计数型循环 (1)事先知道循环次数 (2) 变量有规律 6.循环语句的选用之while或do while: 条件型循环 (1)不知道会执行多少次 (2)有判断条件 7.循环的应用: (1)枚举算法 百钱百鸡 (2)迭代算法 求斐波那契

KVM学习及应用的七个阶段

传说中,收集7颗龙珠,就可以实现一个愿望. KVM虚拟化的学习,也可以分为七个阶段,经过七个阶段的学习,就在生产环境中完成虚拟化任务. 第一阶段 虚拟机管理学习 1 了解虚拟化的历史及概念,Xen VMWare HyperV KVM特性了解: 2 分别通过virt-manager及virt-install创建一台虚拟机: 3 了解libvirt xml文件,尤其是CPU 内存 网络 磁盘 VNC的相关参数: 1) 知道如何修改CPU数量及对CPU资源做限制: 2) 知道如何修改内存大小及对内存资

.Net学习路线以及各阶段学习书籍,博文,视频的分享

这份文档是我受一位Java大神的委托给15级想学.NET的师弟师妹写的.我想,博客园是我成长进步的地方,作为一个具有互联网分zhuang享bi精神的文艺女青年,我应该把它分享到这里来给更多需要想学.NET的童鞋让他们去成长,让他们少走学习上的一些弯路,写的不合理的地方,欢迎大家批评指正,或者有更好的学习方面的建议和学习资料,欢迎大家留言分享. 前言 各位师弟师妹们,大家好,我是信息13-2班的赖英凤.上星期,你们的班助财哥委托我整理C#的学习路线,还有一些学习资料,视频给大家,我想,作为一名即将

多线程编程学习笔记——线程同步(三)

接上文 多线程编程学习笔记——线程同步(一) 接上文 多线程编程学习笔记——线程同步(二) 七.使用Barrier类 Barrier类用于组织多个线程及时在某个时刻会面,其提供一个回调函数,每次线程调用了SignalAndWait方法后该回调函数就会被执行. 1.代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; //

解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page1-6

前言 大家好.这是开通本号的第一篇文章.从事IT行业已经20年了,从使用PowerBuilder做企业信息系统开始,做了七八年开发,然后转型Java不是很成功,从07年之后,我转做产品经理,机缘巧合,在2012年之后,又接触到.Net编程,在2016年正式回归到开发的行列,整整10年.最近几年,在技术上要补以前落下的课,所以变化很快,进步也很快,16年基于DevExpress做Winform开发,17年转到基于asp.net mvc做web开发,再转java web开发,又转Andriod Ja

20175209王梓鸿 结对编程项目—四则运算 第一周 阶段总结

20175209王梓鸿 结对编程项目-四则运算 第一周 阶段总结 一.需求分析 1.题目要求: 实现一个命令行程序,要求: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 扩展需求 文件 处理生成题目并输出到文件 完成题目后从文件读入并判题 多语言支持简体中文,繁體中文,English 生成题目去重 二.设计思路 1.编写背景及完成情况 在开始写设计思路之前,我觉得应该说一下我们编写的情况(可能有些跑题).这次结对的

网络编程学习小结

几种网络编程方式: ISAPI.CGI.WinInet.Winsock 它们之间的差别: 1)  ISAPI主要是开发基于浏览器client与server端程序.效率比CGI方式高,并且也扩展了CGI没有的一些功能.(基于TCP/IP模型中的应用层) 2)  CGI主要是开发基于浏览器client与server端程序.(基于TCP/IP模型中的应用层) 3)  WinInet主要是开发client程序.(基于TCP/IP模型中的应用层) 4)  Winsock主要是基于socket来开发clie

Lua学习笔记(七):迭代器与泛型for

1.迭代器与闭包 迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素.在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素. 迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里.闭包提供的机制可以很容易实现这个任务.记住:闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量.每次闭包的成功调用后这些外部局部变量都保存他们的值(状态).当然如果要创建一个闭包必须要创建其外部局部变量.所以一个典型的闭包的结构包含