关于自学编程,知乎上的一些回答
就拿c#来说,学会语法用不了一周的时间。这时候你可千万别说学会c#或者学会c#了。距离会还差的很远,这门语言提供了各种机制来满足生产需要。想要把这些东西都了解了都要花几周的时间,更别说融会贯通了。知道是一回事,会用是另一回事。你如过没写过需要几十个类的项目,恐怕很难体会到面向对象和设计模式的重要。更别说那些匿名函数之类的,了解会用很简单,但直到什么时候用,怎么用就很难了。
项目什么的,只要你想总还是会有的。有可能Github上的项目对你来说有点难,你可以自己写写,比如写个贪吃蛇之类的。这东西总有个过程。
不要想着为了做事而做事,为了学习而学习,用程序解决你真实想要解决的问题,这样你就会觉得自己做的事情有意义了。考虑一下,现在的软件,什么让你不满,你最需要什么功能?如果你有强烈的需求跟动力,就开始去做。从这个角度,初学者使用开源操作系统最合适了,因为这个系统中任何一个环节,你都可以开始动手修改。
你学了这么久,却没有想正经自己开始动手做一套完整的东西,哪怕简单粗糙bug重重,换言之,你一直呆在所谓的舒适区域,这样的时间积累是没有太多意义的。
重点在于,你要真的开始动手去做,而不仅仅停留在看书和简单编码上。带着问题去学习,是我认为效率最高的学习方式之一。
读那么多书,不如做个项目提高快。
从github上找一个你觉得值得尝试的开源程序,然后独立的,自主的,完成它已经实现的功能。
我以前是因为应试教育老师不断的灌给你知识,然后你把他吃了等到万无一失了再去面对挑战:终极考试。现在做东西就像一个考试,我总是在想我这还没学,那还没学,java gui还没学,你让我去做一个界面出来,这不靠谱。最近我慢慢地发现以前学的是基础知识,不是应用型的,所以需要细嚼慢咽,嚼烂了咽下去。而现在我们已经有了基础知识的积淀,很多东西都是应用型的,既然是应用型的,那就放到实践中去做,所谓项目驱动式学习方式就是如此,学一个东西,那就放到具体应用环境中去学。
只有等到你代码写到一定量级了,你觉得卧槽这个东西为什么我一直在重复实现,重复调用,重复初始化的时候,你就会思考更高级一点的东西了。
其他参考
一个程序员对另一个准程序员的忠告,其中涉及到很多程序员应该知道的东西,原文链接:http://www.jianshu.com/p/8a643815c11f