如何提高编程能力?

转载自知乎

所有程序员恐怕可以粗略的划分为这五种状态:

1.不爱,但是迫于生计

2.无感,反正亦步亦趋

3.热爱,但却身心俱疲

4.狂热,打了鸡血一般

5.欢喜,毕竟乐在其中

你是属于哪一种呢?

如果要我来选,我一定会选5,因为唯其如此才能获得程序人生的个中真昧,才能拥有彼此交融的内在完满。而其他的几种状态在不同程度上都是残缺的。

也许我们写程序总是不可避免的为了各种外在的目的,但是写程序时的那份小确幸的欢喜,却始终是我们精神飞鸟的栖息地。 正如孔子赞颜回——子曰∶“贤哉回也,一箪食,一瓢饮,在陋巷,人不堪其忧,回也不改其乐 。贤哉回也!”

罢笔时风烟俱净,但愿自己刚刚开启的程序人生能够无关风月,寂静欢喜。

其实很多人学编程都会遇到困难,我觉得其中一个根本原因是他们没搞明白学编程到底是学什么。

编程不是一种知识,而是一门手艺。

我们从小到大的学习都是学习知识,流程一般是课前看书预习,上课听讲,下课做作业,然后复习考试。但是学手艺可不是这么学的。

我们先拿游泳举例,游泳不是知识,而是技能,也可以算门手艺吧。

需要预习吗?需要上课听讲吗?不需要,因为两岁小孩都能学会游泳,他们连话都不太会说呢,怎么可能听课预习呢。游泳是通过在水里的练习,教练手把手地传授动作,一点一点提高熟练度学会的。

我们再来看看弹琴,学钢琴一定要有钢琴,音乐基础知识也是老师在练琴间隙传授的,并且一定会结合练习,另外练琴时间是很重要的,必须保证一定的练习量,有些理想远大的琴童练琴时间可以用惨无人道丧心病狂来形容。

千万别把编程看作知识,计算机科学是知识,但是编程是手艺。

既然是手艺就要用学手艺的思路去学习。

以动手练习为主,看书学习为辅,甚至极端点,初学的时候除了看必要的文档都可以不看书,等有了一定编程基础后再去看书,看完书立刻动手编程去验证书上的理论知识。
练习一定要循序渐进,把手艺分解成几个简单的动作,反复练习直到熟练,然后再把基本动作组合起来练习直到熟练。拿C语言举例,比如从认真写好一个Hello world开始,然后去熟悉 if  for while 等基本关键字,然后熟悉字符串操作,内存操作,练习查找 排序 二叉树等基本算法数据结构,然后学习一个小型Framework。

找个师傅,手艺的一大特点就是自学是很慢的,而且容易走弯路,而有人手把手教要快得多,手艺有很多细节,实际操作经验,需要去体会感受的东西,这些细节书上基本不会有。

但是很不幸,你的生活中不会有这样的老师傅,你需要靠自己寻找机会,我把这样的寻找机会的步骤分为三步

  • 疯狂的积累代码量,疯狂的刷题,疯狂的积攒你的自信心。

  • 寻找实习,找到自己感兴趣的地方,跟着别人做,了解工业届到底在使用什么技术。

  • 当你实习结束的时候,你将不会再对那些名词感到陌生,你有了一定的经验,你可以尝试独立的尝试用一些开源框架做一些简单的project。

具体该如何做呢?

  • 当你还是一个新手的时候,你需要疯狂的积累你的代码量,你可以从基本的问题出发,做一些简单的问题,怎么输入数据,怎么输出数据,然后熟悉各种数据结构,各种常见算法,疯狂的刷题,比如http://www.lintcode.com/ 就是一个很不错的刷题网站,不会怎么办!看答案,了解怎么写,然后自己实现一遍。你可以先从easy难度的问题做起,每一个程序也就20-40行左右,甚至你可以一旦AC,反复提交,以增强自信心,虽然这只是一个玩笑,但是它可以让你提高你对编程的自信,对编程的喜爱,当你有自信的时候,你才能真正的把一件事情做好。当你反复解决一个又一个的问题的时候,你要告诉自己我是个天生的编程者!然后你就可以挑战更高难度的问题,当你积累到10W以上的代码量的时候,你会发现你会有一个质变。一切将变的顺手。当以前要想半天的语句,现在信手拈来。恭喜你跨出了很重要的一步。

  • 你该去找实习了。当你有了第一步作为铺垫以后,你应该去业界提高你的编程能力,这个很重。什么是编程能力,用程序去解决真正的问题,你的程序写的更让人能读懂,这是编程能力,你的程序高效可维护,这是编程能力,你的程序被review的次数很少,质量很高,这是编程能力,你能快速理解一个小项目,小模块在做什么,怎么做的,这也是编程能力。所以你应该去公司,有mentor指导你的情况下,去做一些事情,参与到团队中去。同时实习生的面试门槛比Full time会低很多,只要你把第一步做好了,好好的准备面试,拿到一个不错的实习也问题不大(实习生也更容易拿到return off)。

  • 当你实习结束以后,做一下总结,业界到底在干什么,业界使用的技术到底有哪些,他们平时的编程工具等等这些都是值得你学习的地方,你可以用你学到东西尝试着去做一些简单的project。你会发现原来毫无头绪的事情,慢慢变得清晰起来。疯狂的训练,超强的自信心,去工业界实习一下,你就会明白我要什么,我要为了我所想要的我该怎么做。


转自知乎

作者:姚冬
链接:

https://www.zhihu.com/question/27574436/answer/37185893

作者:ninechapter
链接:

https://www.zhihu.com/question/27574436/answer/152417898

作者:在好
链接:

https://www.zhihu.com/question/27574436/answer/59177239

你可能感兴趣的:(如何提高编程能力?)