计科专业大一学生一枚，如何提高编程能力？
当你提出这个问题的时候，总有人会告诉你，你应该学习这个，学习那个，亦或是刷题根本没用，你应该去做项目，你看这个视频没什么卵用，你应该自己去实现一遍，亦或是你应该使用xxx框架，xxx语言，做一个xxx系统，这样你才能学到很多…… 恕我直言，这些跟放屁没什么两样。对于一个编程新手，很多事情都是陌生的，即使拿到一个文档，也不知道如何去使用它们。因为根本找不到切入点，找出我该如何入手，万事开头难。 想要提高编程能力，我们首先要知道什么是编程能力。能把程序写出来就是编程能力高了么，ACM总冠军选手编程能力就高么，他们高，高在解决脑经急转弯问题的能力上，这是遗憾的，当然什么是编程能力这本身就是一个很大的问题，这里不做过多展开。 编程本质就是一门技术，一门手艺活，最好有老师傅带着你，告诉你这部分你可以先完成，那部分你也可以先入手，一点一点的积累，从小部分做到整体，孰能生巧游刃有余。 但是很不幸，你的学习中不会有这样的老师傅，你需要靠自己寻找机会，我把这样的寻找机会的步骤分为三步： 具体该如何做呢？ 当你还是一个新手的时候，你需要疯狂的积累你的代码量，你可以从基本的问题出发，做一些简单的问题，怎么输入数据，怎么输出数据，然后熟悉各种数据结构，各种常见算法，疯狂地刷题。相信我，大一大二是你刷题的黄金时期。比如LintCode 领扣就是一个很不错的刷题网站，不会怎么办！看答案，了解怎么写，然后自己实现一遍。（推荐一个刷题神器LeetCode / LintCode 答案查询） 你可以先从easy难度的问题做起，每一个程序也就20-40行左右，甚至你可以一旦AC，反复提交，以增强自信心，虽然这只是一个玩笑，但是它可以让你提高你对编程的自信，对编程的喜爱，当你有自信的时候，你才能真正的把一件事情做好。 LintCode上的企业面试题库收集得很全、很新，但部分需要VIP，我这边找到了： 直接血赚￥99！ 关于刷题，还可以参考我以前的一些回答： 当你反复解决一个又一个的问题的时候，你要告诉自己我是个天生的编程者！然后你就可以挑战更高难度的问题，当你积累到10W行以上的代码量的时候，你会发现你会有一个质变。一切将变的顺手。当以前要想半天的语句，现在信手拈来。恭喜你跨出了很重要的一步。 你该去找实习了。当你有了第一步作为铺垫以后，你应该去业界提高你的编程能力，这个很重要。什么是编程能力，用程序去解决真正的问题，你的程序写得更让人能读懂，这是编程能力；你的程序高效可维护，这是编程能力；你的程序被review的次数很少，质量很高，这是编程能力；你能快速理解一个小项目，小模块在做什么，怎么做的，这也是编程能力。 所以你应该去公司，有mentor指导你的情况下，去做一些事情，参与到团队中去。同时实习生的面试门槛比Full time会低很多，只要你把第一步做好了，好好的准备面试，拿到一个不错的实习也问题不大（实习生也更容易拿到return off）。 当你实习结束以后，做一下总结，业界到底在干什么，业界使用的技术到底有哪些，他们平时的编程工具等等这些都是值得你学习的地方，你可以用你学到东西尝试着去做一些简单的project。你会发现原来毫无头绪的事情，慢慢变得清晰起来。疯狂地训练，超强的自信心，去工业界实习一下，你就会明白我要什么，我要为了我所想要的做什么。