作者:ninechapter
链接:https://www.zhihu.com/question/27574436/answer/152417898
当你提出这个问题的时候,总有人会告诉你,你应该学习这个,学习那个,亦或者是刷题根本没用,你应该去做项目,亦或者你看这个视频没什么卵用,你应该自己去实现一遍,亦或者是你应该使用xxx框架,xxx语言,做一个xxx系统,这样你才能学到很多。我想说这些跟放屁没什么两样。对于一个编程新手,很多事情都是陌生的,即使拿到一个文档,也不知道如何去使用它们。因为根本找不到切入点,找出我该如何入手,万事开头难。
这个问题可以做如下分解,对象是编程新手,他要提高,提高的是编程能力,首先我们要知道什么是编程能力。能把程序写出来就是编程能力高了么,ACM总冠军选手编程能力就高么,他们高,高在解决脑经急转弯问题的能力上,这是遗憾的,当然什么是编程能力这本身就是一个很大的问题,这里不做过多展开。
编程本质就是一门技术,一门手艺活,最好有老师傅带着你,告诉你这部分你可以先完成,那部分你也可以先入手,一点一点的积累,从小部分做到整体,孰能生巧游刃有余。
但是很不幸,你的生活中不会有这样的老师傅,你需要靠自己寻找机会,我把这样的寻找机会的步骤分为三步:
- 1 疯狂的积累代码量,疯狂的刷题,疯狂的积攒你的自信心。
- 2 寻找实习,找到自己感兴趣的地方,跟着别人做,了解工业届到底在使用什么技术。
- 3 当你实习结束的时候,你将不会再对那些名词感到陌生,你有了一定的经验,你可以尝试独立的尝试用一些开源框架做一些简单的project。
具体该如何做呢?
首先
当你还是一个新手的时候,你需要疯狂的积累你的代码量,你可以从基本的问题出发,做一些简单的问题,怎么输入数据,怎么输出数据,然后熟悉各种数据结构,各种常见算法,疯狂的刷题,比如 http://www.lintcode.com 就是一个很不错的刷题网站,不会怎么办!看答案,了解怎么写,然后自己实现一遍。你可以先从easy难度的问题做起,每一个程序也就20-40行左右,甚至你可以一旦AC,反复提交,以增强自信心,虽然这只是一个玩笑,但是它可以让你提高你对编程的自信,对编程的喜爱,当你有自信的时候,你才能真正的把一件事情做好。当你反复解决一个又一个的问题的时候,你要告诉自己我是个天生的编程者!然后你就可以挑战更高难度的问题,当你积累到10W以上的代码量的时候,你会发现你会有一个质变。一切将变的顺手。当以前要想半天的语句,现在信手拈来。恭喜你跨出了很重要的一步。
其次
你该去找实习了。当你有了第一步作为铺垫以后,你应该去业界提高你的编程能力,这个很重。什么是编程能力,用程序去解决真正的问题,你的程序写的更让人能读懂,这是编程能力,你的程序高效可维护,这是编程能力,你的程序被review的次数很少,质量很高,这是编程能力,你能快速理解一个小项目,小模块在做什么,怎么做的,这也是编程能力。所以你应该去公司,有mentor指导你的情况下,去做一些事情,参与到团队中去。同时实习生的面试门槛比Full time会低很多,只要你把第一步做好了,好好的准备面试,拿到一个不错的实习也问题不大(实习生也更容易拿到return off)。
最后
当你实习结束以后,做一下总结,业界到底在干什么,业界使用的技术到底有哪些,他们平时的编程工具等等这些都是值得你学习的地方,你可以用你学到东西尝试着去做一些简单的project。你会发现原来毫无头绪的事情,慢慢变得清晰起来。疯狂的训练,超强的自信心,去工业界实习一下,你就会明白我要什么,我要为了我所想要的我该怎么做。
-----补充-----
有人问在哪里看答案,这里给大家提供一个看答案的网站,是我觉得比较高质量的答案:LeetCode / LintCode 答案查询
-----3月21日补充-----
看了评论里有人说,我在学校老师那里按部就班学不到什么。我想多说几句,虽然说大学教育和社会有一些脱节,但是并不是所有都是无用的。首先谈一下为什么会脱节,没有一个大学的校长会站起来说我们设置计算机相关专业就是为社会提供码农的。大部分学校的目的都是培养计算机科学家的,只有培养残的,成为了码农。当然这就玩笑的成分,但是的确真正有用的可能20%都不到,就是因为少我们就可以否定么,有一些课是很重要的,它们奠定了你的计算机素养,那些课你不用很深入的学习,而是扩展你的广度。虽然你现在觉得无用,但是不要否定它们的价值。
说说另一个问题“我需要刷题么”,如果一个有科研前途的人,我会毫不犹豫的说,停下来,搞你的科研去,不要在刷题上浪费你的时间。但是当你问这个问题的时候,我会毫不犹豫的告诉你,你不适合做科研,你在科研的道路上注定成为一个次品,何不早点做好成为码农的准备呢?刷题不是目的,刷题是一种手段,为了积累代码量, 为了找到实习,为了面试,为了走向业界,为了拿到好的offer,为了打开成为码农的大门,它是简单的,它是适合大部分人的,它适合成为码农的你。如果你还表示怀疑的话,你可以去了解一下,当今国内外各大IT互联网公司是如何面试的,我相信你会有一个明确的答案。