自学简单编程可行吗？
本回答将分享一些学习编程的经验，推荐一些好网站。 想要培养一项技能的最好的办法，就是将他融入到我们的生活并成为我们的爱好。其实说白了，就是让这个爱好成为一个习惯，一天不去做这件事情，都会觉得少了什么。在不知不觉中，这个习惯会像滚雪球一样积累起来。 对我来说，养成这种习惯首先就是要对“拖延症”说不。比如，你想锻炼下自己的写作能力时，但是没有好看的本子，没有好的灵感，没有安静的环境....总之就是找各种理由一拖再拖，最后就不了了之了。 但仔细想想等你有了好看的本子，舒适的环境....就能写出好的文章吗？不！我很明确的告诉各位，文章的功底是随着你不断的积累而成的。所以，当我们决定去做某件事情，请立刻！马上！现在就要开始行动！ 接着从小事入手，如果我决定开始跑步，那么最初只会要求自己每周跑两、三天。虽然看起来要求低，但这样的作法更容易长期坚持，且不会被其它因素所轻易干扰。 同样的思路也适用于学习编程。每周拿出几天，每天拿出几个小时，编程学习就这样慢慢步入正轨。如果大家觉得没心情阅读编程教材，没关系，视频网站上的技术讲座能够起到同样的作用。 对待编程工作，我们没必要像健身狂人那样一口气做到筋疲力尽。与其直接编程2小时，我们完全可以先做25分钟、而后休息5分钟，整个过程重复4次。很明显，25分钟这样的短周期更容易坚持也不会带来多少压力。 不过这样的方式应该配合更为灵活的执行思路。如果您感觉状态很好，而25分钟才刚刚完成热身，那就继续做下去并努力让自己抓住这种状态。向大家推荐蕃茄工作法，这是种学习新型技能的良好机制，推荐各位认真了解。 经过这几年的编程学习，我认为想要提升编码水平的最佳途径就是多看、多写，然而阅读别人的代码也确实是快速提升代码水平的一个技巧。至于如何高效地阅读代码，请参考我的这篇回答： 学习编程的一个很好的方法就是和其他的程序员交谈。这不仅能够帮助我们多获得一种思维方式，同时也能够以更为愉悦的感受完成学习任务。至于内容没有特定的要求，可以是你正在学习的东西，也可以是你认为很酷的东西，更可以是你正在工作的东西。这样做可能会让你学到很多关于库，服务，编程语言和模式方面的知识。但是，最重要的是，你能了解到其他人是如何看待编程的。  如果大家学习了一种新的编程概念，但不能确定自己是否已经真正掌握，可以写技术博文加以检验。或者是在技术博客网站上搜索，找找是否有人提出了类似的问题，然后给出您自己的答案。如果答案不对，那么讨论的过程能够有效加深理解。这样的过程，能给我们带来宝贵的经验，同时也能帮助他人。 值得提醒的一点，别因为自己刚刚涉及编程而有所顾虑。罗马不是一天建成的，出色的程序员也是一样。只要您对问题有所了解，就不妨给出自己的答案——无论对错，这都将成为一次宝贵的经历。 对于人生来说，其中任何目标的实现都离不开耐心。编程学习就如其它任何学习任务一样，都需要反复努力并投入大量时间。 在这个过程中，您一定会经历高潮与低谷——别被这些曲线影响了心情。接受已经发生的一切，并尽可能避免其中不好的部分。就像打高尔夫球一样，我们的手感总在不断浮动，但只要坚持到底，您最终总能成为一个大神呢~  同志们，加油！ 很多人觉得学编程难，大都是掌握方法，而不是能力、性别或其他原因。除了想达到行业顶级开发者的水平，如果你是想学编程，掌握了对的方法，就能学好。 个人通过题目描述分析，应该是学习方法不对，没有培养出编程的思维和能力，这是一个因果关系。  感觉编程难，我在初学编程的时候也遇到过。刚刚学习编程会走很多弯路，想找一个合适的方法学习。有这样想法是值得鼓励的，至少是知道怎么学习更好。我本人有些参考经验，可以吸取适用自己的地方。 计算机重点在于用已有的知识搭构建功能，而构建功能的步骤是固定的，只是需要掌握牢基础知识，并且提升自己的思考能力。思考能力也算是程序员的核心了（不是看，不是写，而是思考，如果照着别人代码写同时带上了思考，那么也是有效果的）。我建议的学习方式如下： 1. 数据结构，经典算法。可以根据学到的算法和数据结构解决书本习题后面的算法问题（注意不是看了解答过程再重复写一遍，而是在自己不知道情况下写一遍，代码量可能是只有十几行，写花不了多少时间，只是思考得花些时间——一定要坚持，我曾经思考了几天就为了解一道算法题，当然根据自己的情况，不用一下选这么难的。这里培养的是解决问题的思考能力）。 2. 学会写递归，同时把递归变为循环实现相同的功能。（此处是完善思考能力，再提升一步） 当你学会前面2条的时候，即使你是第一次接触计算机，经过努力和学习掌握后水平已经超过了入门的同学，达到了中级的概念。这是内功，不是说你对某个语言运用自如了。武林高手比武比拼的是内功，外面掌握语言学习用法只是熟悉程度是外在的招式（这个非常容易掌握，多写几次就会）。 为什么开始就进入内功的修炼，因为万法归一，万变不离其宗，无论你以后学习什么语言，学了多少语言，刚进入的水平就是中级，一劳永逸。 后面只需要花点时间掌握语言的用法，方法调用，框架的使用，那么恭喜你，你的能力已经可以胜任大部分互联网公司的职位了。（这里得注意顺序，是先掌握了核心的算法和思想后才是熟悉语言本身） 开发过程中多思考，多尝试新东西，思考是通往编程高手应该具备的基本素质。 这里还是思考，和上面还有不同。思考不是瞎思考，而是有深度思考，出色的程序员写代码的时间非常少，大部分都是在思考。给你一个功能，需要根据自己有的基础知识在脑海中想怎么实现合理，高效，想清楚后再写，而不是边写边改边想，那么水平永远都是止步不前的抑或进步和蜗牛一样。 当思考同一类问题，用的时间越来越少，那么侧面反映出水平提高了，可以试着思考更复杂的问题。思考需要循序渐进，不能一开始拿一个非常复杂的问题思考，而是在自己跳一下就能够到的高度。 对于在公司上班，你会发现思考时间越来越少，完全是需求到了就马上知道怎么写了。然后就是无聊听着公司领导介绍，开会讨论。但是不要忘了，自己得给自己找事做，停止思考或者习惯了某种思考模式后进步就会减慢，要进步就要不断尝试新东西，多思考。 以上就是我建议的学习方法，希望能对你有所帮助。当然，每个人都有自己的学习方式和习惯，适合自己的，才是最好的。 参考内容： 自学成才的程序员，给新手学习编程的六个建议 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课程。在这里，每一个有意愿提升自己的人都可以免费获得更优质的高等教育。 1. 在线学习网站：https://www.tutorialspoint.com/ 2. 算法学习和竞赛网站：http://codeforces.com/ 3. 程序员问答网站：https://segmentfault.com/ 4. Linux Kernel：https://www.kernel.org/ 5. FCC 中文网：https://www.freecodecamp.one/ 6. B 站：https://www.bilibili.com/ 7. 阿里巴巴开源镜像：https://opsx.alibaba.com/mirror 8. USTC 开源镜像：http://mirrors.ustc.edu.cn/  我的其他相关回答：