自学简单编程可行吗？
本回答首先分享了如何选定学习方向，自学编程主要有几个阶段，学习过程中有哪些注意事项和学习方法，最后分享了目前权威的学习资源，如果对你有用的话，点个赞吧。 首先要选定编程学习的方向，例如 Python、C、C++、Java、JavaScript 等等编程语言，你最好先去查一查都有哪些编程语言，每种编程语言都侧重于哪些方向，例如 JavaScript 主要用于 Web 前端开发，Java 主要用于后端开发，Python 在数据分析和机器学习等方面有较好的应用。不同的方向有着不同的吸引力和特点，你多了解一下，选一个自己感兴趣的。 接下来就是学习编程，那么在看书学习的过程中，有一点要记住：不要无脑照着别人的代码敲，重要的是思考，是学习编程的思想！照着别人代码敲一遍除了让你看得仔细点，练了打字外其它并没有任何帮助 — 和自己盯着代码仔细看是一样的，这样的学习效率是不高的。 重要的是学习编程思想，这个功能是怎么实现的，为什么这么实现，作者是怎么想到的，其次才是敲代码，学习好了思想以后，你可以自己敲，模仿敲，再对照着检查自己代码中存在的问题。 那么在自学编程的前期和中期，能够完成前五项就是取得了很不错的效果了。 初级程序员，涉猎广泛，但都是浅尝辄止。这是很多人面临的问题，而在编程学习则是需要实际操练，加深体会，不断深入的一个过程。在这个回答里，我想说一下初级程序员应该如何提高。 想要培养一项技能的最好的办法，就是将他融入到我们的生活并成为我们的爱好。其实说白了，就是让这个爱好成为一个习惯，一天不去做这件事情，都会觉得少了什么。在不知不觉中，这个习惯会像滚雪球一样积累起来。 对我来说，养成这种习惯首先就是要对“拖延症”说不。比如，你想锻炼下自己的写作能力时，但是没有好看的本子，没有好的灵感，没有安静的环境....总之就是找各种理由一拖再拖，最后就不了了之了。 为自己设定一下，每周拿出几天，每天拿出几个小时，编程学习就这样慢慢步入正轨。 对待编程学习，我们没必要像健身狂人那样一口气做到筋疲力尽。与其直接编程2小时，我们完全可以先做40分钟、然后休息5分钟，整个过程重复4次。很明显，40分钟这样的短周期更容易坚持也不会带来多少压力。 不过这样的方式应该配合更为灵活的执行思路。如果你感觉状态很好，而40分钟才刚刚完成热身，那就继续做下去并努力让自己抓住这种状态。向大家推荐蕃茄工作法，这是种学习新型技能的良好机制，推荐各位认真了解。 在确定好学习方向和技术栈之前，你可以多做尝试，学不同的语言。但是当你学到一定程度，知道自己对哪个方向更感兴趣的时候，就不要广撒网了，一定要专注于你所选择的领域，做深做精。认真系统化地学习相关语言知识。当然，这不是让你就知道看书，你要看书的同时结合项目实践，进而对自己的掌握程度得到反馈，知道自己哪里不足，再继续学习，如此反复，详见第四点。 当你选好方向，认真学习基础知识后，学习一部分的知识，就结合项目做一些实践，已明确自己哪里不足。并且做项目能增加学习乐趣，给自己提供一些正反馈，让学习变得有趣，让自己有足够的动力继续学习。 学习编程不能闭门造车，经过这几年的编程学习，我认为想要提升编码水平的最佳途径就是多看、多写。看别人的代码，看一些程序员大佬写的代码，看一些标准库的源码，仔细思考他们的编程思维和编程方式，以提升自己的编程思维和编程方式。阅读别人的代码也确实是快速提升代码水平的一个技巧。 当然，也有一些提升阅读别人代码速度的技巧。很多时候读代码靠的不是阅读文字速度，而是理解的速度。我把自己理解的影响速度的原因列举出来。 1. 对整体的思路没有概念 2. 对类库不熟悉，包括方法调用不熟悉 3. 不理解里面的一些算法 4. 中途停顿时间太长，接过来后没有形成一个系统的思路。 阅读的方法是先整体再局部。目前我们知道了那些因素影响到了速度也知道了阅读的方法。那下面就开始一个个击破难度。 1. 把握整体有个大体的框架在脑海中，此时根据里面的文件名和文件夹，从入口文件大段大段看就可以，知道这段或者这个文件的作用就可以。很多写得好的类库都是思路很清楚，非常有助于从整体理解， 此时只需要知道这个文件和这个方法是什么作用就可以，还不到细细研究的阶段。 2. 对类库不熟悉那么会引起阅读时候左右查资料，影响速度。此时应该先把不熟悉的类库全部整理出来，一次性过一遍，然后到对应的官网查用法就可以，注意，此时不用全部看，只需要查调用到的地方什么意思，弄明白调用的意思即可。 3. 遇到不熟悉的算法此时就要静下心来，如果有注释可以根据注释来理解，如果没有那么也是一样的思路，想整体了解这个算法再细分进去了解，这一步只需要静下心里是可以理解的。 4. 中途不能说看一个小时，停了4个小时再接着看，或者是今天看一点点，隔了非常长的时间再看第二部分。最好是趁热打铁。 里面核心的地方还是从整体到细节的方法，掌握到了整体阅读细节才有意义，有时候知道了整体一些细节的地方清楚了，总之没有不努力就能理解的代码，上面的方法只是帮助你可以轻松些阅读，只是努力是必须的。 学习编程的一个很好的方法就是和其他的程序员交谈。这不仅能够帮助我们多获得一种思维方式，同时也能够以更为愉悦的感受完成学习任务。至于内容没有特定的要求，可以是你正在学习的东西，也可以是你认为很酷的东西，更可以是你正在工作的东西。这样做可能会让你学到很多关于库，服务，编程语言和模式方面的知识。但是，最重要的是，你能了解到其他人是如何看待编程的。 如果大家学习了一种新的编程概念，但不能确定自己是否已经真正掌握，可以写技术博文加以检验。或者是在技术博客网站上搜索，找找是否有人提出了类似的问题，然后给出您自己的答案。如果答案不对，那么讨论的过程能够有效加深理解。这样的过程，能给我们带来宝贵的经验，同时也能帮助他人。 值得提醒的一点，别因为自己刚刚涉及编程而有所顾虑。罗马不是一天建成的，出色的程序员也是一样。只要您对问题有所了解，就不妨给出自己的答案——无论对错，这都将成为一次宝贵的经历。 对于人生来说，其中任何目标的实现都离不开耐心。编程学习就如其它任何学习任务一样，都需要反复努力并投入大量时间。 在这个过程中，您一定会经历高潮与低谷——别被这些曲线影响了心情。接受已经发生的一切，并尽可能避免其中不好的部分。就像打高尔夫球一样，我们的手感总在不断浮动，但只要坚持到底，您最终总能成为一个大神呢~  0. GitHub — 开发者最最最重要的网站：https://github.com 这个不用多说了吧，代码托管网站，上面有很多资源，想要什么轮子，上去搜就好了。并且呢，上面有很多优秀的程序员，你可以在这里交到很多好朋友喔。 1. Stack Overflow — 解决 bug 的社区：https://stackoverflow.com/ 开发过程中遇到什么 bug，上去搜一下，只要搜索的方式对，百分之 99 的问题都能搜到答案。在这里能够与很多有经验的开发者交流，如果你是有经验的开发者，还可以来这儿帮助别人解决问题，提升个人影响力。 2. 程序员客栈：https://www.proginn.com/ 程序员客栈是领先的程序员自由工作平台，如果你是有经验有资质的开发者，都可以来上面注册成为开发者，业余的时候做点项目，赚点零花钱。当然，如果你想成为一名自由工作者，程序员客栈也是可以满足的。只要你有技术，不怕赚不到钱。很多程序员日常在这里逛一下，接一点项目做。很多公司也在这发布项目需求。 3. 掘金 — 帮助开发者成长的技术社区：https://juejin.im 现在国内优质的开发者交流学习社区，可以去看大佬们写的文章，也可以自己分享学习心的，与更多开发者交流。认识更多的小伙伴儿，提升个人影响力。 4. v2ex：https://www.v2ex.com/ V2EX 是一个关于分享和探索的地方，上面有很多各大公司的员工，程序员。你想要的应有尽有。 5. 博客园：https://www.cnblogs.com/ 博客园创立于2004年1月，是一个面向开发者的知识分享社区。自创建以来，博客园一直致力并专注于为开发者打造一个纯净的技术交流社区，推动并帮助开发者通过互联网分享知识，从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。很多早期的高质量内容都在博客园。 6. Medium：https://medium.com/ 国外优质文章网站，Medium 的整体结构非常简单，容易让用户沉下心来专注于阅读。上面有很多高质量的技术文章，有很多厉害的人在上面发布内容。 7. Hacker News：https://news.ycombinator.com/news 国外优质文章网站，上面有很多高质量的技术文章，有很多厉害的人在上面分享内容。 8. GeeksforGeeks：https://www.geeksforgeeks.org/ GeeksforGeeks is a computer science portal for geeks。（感谢@三三白白的补充） 0. Google：https://google.com 这个不用多说了吧，查资料，有问题，Google 一下。当然，能访问的人自然会用，访问不了的人，可以用必应或者百度吧。 1. 算法学习 LintCode：https://www.lintcode.com/ 算法学习网站，上去每天刷两道算法题，走遍天下都不怕。 2. 算法学习 LeetCode：https://leetcode.com/ 也是算法题网站，同上。 3. 算法学习 LeetCode 中文站：https://leetcode-cn.com/ 这个是上面算法题网站的中文站点，英文不好的可以刷这个，英文好的推荐去刷英文网站的题目，还能提升英语能力。 4. 牛客网 — 面经和刷面试题：https://www.nowcoder.com 各个公司的面试题和面经分享，找工作前认真刷一刷，一定会有很大收获！拿到心仪的 offer！ 5. Web 开发练习题：https://www.freecodecamp.org/ 这是国外发起的一个 Web 开发学习的网站，从简单到深入，一步一步带你学习 Web 开发。就像一本练习册，并且当你完成相应的内容后，会得到相应的资格认证。 6. 百度前端技术学院 — 前端开发项目库：http://ife.baidu.com 学前端的看这里，百度官方推出的前端开发学习技术学院，题目从简单到困难，如果你把里面的题都做会了，找个 BAT 的前端工作不成问题的。 0. 各种编程语言，编程工具，各种轮子的官方网站 要记得，学习一门语言或者一个工具，最优质的学习网站就是他的官方网站，官方文档。 1. 菜鸟教程：http://www.runoob.com/ 菜鸟教程的 Slogan 为：学的不仅是技术，更是梦想！ 记住：再牛逼的梦想也抵不住傻逼似的坚持！网站包括了HTML、CSS、Javascript、PHP、C、Python等各种基础编程教程。 2. 中国大学MOOC网：https://www.icourse163.org/ 中国大学MOOC是由网易与高教社携手推出的在线教育平台，承接教育部国家精品开放课程任务，向大众提供中国知名高校的MOOC课程。在这里，每一个有意愿提升自己的人都可以免费获得更优质的高等教育。 欢迎将本回答分享给你的朋友，他/她可能正需要。  我的其他相关回答：