自学简单编程可行吗？
自学不难，难的是避免走弯路。 一、首先，不同语言的入手难度是不同的。 比较适合有时间、有耐心的选手。 比较适合着急入门的选手。 自学的话，最好根据个人过往的学习毅力，理性做选择，这样真能学成的概率大点。 个人比较推荐从「上手快」的语言开始。  二、具体怎么学好？ 先说下我自己的情况。 我的经验建议是，一开始必须以做「成品」为目标。有目标才不会学偏学泛，导致学而无用，浪费时间。 其次是「勤动手」。可以选择自己平时喜欢的网站/WebApp作为练手模板。 现在不是2000年，就别再被各种三流的老师忽悠去学做枯燥的「学生课程系统」了。人就这样，当你对一个主题压根没兴趣时，学习的兴趣就坏了50%。 2019年的我们有更好的选择，诸如浅copy微博，B站等等，关键是你喜欢。 新人入门，浅copy练手模板就行，主要目标是学会「增」「删」「查」「改」内容。麻雀虽小，但五脏俱全，在实际的工作开发中，60%代码都是写这些东西。所以，学会并熟悉跟其相关的技术知识点是最必须的。 三、入门学习方向和目标确定好后，就是分配阶段性的学习任务。 这里以后端为例简单说一下。 首先，我们要准备一个辅助学习工具：菜鸟教程。主流语言的基础知识都汇集在此，而且有案例哦，非常方便新人快速了解知识点。 编程工具的话，新手整个简洁的vscode、sublime就好。先别去搞那些要复杂的配置，很影响的学习激情，先看到「hello world」才是关键。 然后，在学习的过程中要多搜索、多借力于能「完成任务」的文章和视频。记住，是跟「完成任务」有关的。 （都 1w 收藏了） （点赞，评论，给师兄点正反馈^-^）  接下来，我们就逐一介绍6个主要的学习任务。 它们彼此互有关联，由易而难，循环渐进。 第 1 个任务是，copy一个静态页面。 具体来讲，就是做一个展示内容的页面，目标是搞懂html、css的基本语法，明白一个简单的页面由哪些东西组成。最重要的是，这个任务门槛低，完成时间短，能让你快速看到小成果，学起来也更有动力。  第 2 个任务是，copy一个动态列表页。 在搞定展示内容的基础上，尝试动态填充内容。这时，你需要初步接触Linux、部署服务软件、数据库Mysql、语言框架，开始有一定难度了。 可以分两步走。 第一步是，先不管数据库，把数据写死在编程语言中，然后学会把数据显示到模板中。 目的是学会使用数据和遍历数据。 第二步是，在完成第一步的上，学习使用数据库。 目的是明白SQL的语法。  第 3 个任务是，copy一个登陆模块。 这个很关键，登录功能是多数应用软件绕不开的核心模块。 目的是了解session、cookie这些经典知识，以及初步接触完整闭环的功能逻辑。  第 4 个任务是，浅copy一个发布功能。 在有用户登录，和动态列表页的基础上，我们加个发布功能。 目的是学会新增数据，并把前面的所有任务内容串起来，进一步明白业务从前端到后端的大体运转过程。巩固加深对业务的开发流程的认识。  第 5 个任务稍微务虚一点，养成分析项目业务的小习惯（不考虑各种复杂情况） 分析业务是程序员的必备能力。平时使用web和app时，多留个心眼，想想看这个功能的数据结构是由哪些元素组成。 目的是养成系统化的业务思维，这对更好地学习编程非常有帮助。  第 6 个任务，选一个较小的生产级别的Web/APP，做有一定深度的Copy。 有两个好处。 其一，可以帮助巩固原有的知识，起到温顾而知新的作用。 其二，有深度的copy，意味着业务逻辑复杂了，技术逻辑要求更缜密，这能促使你或多或少接触一些中高阶的技术知识点，实战能让你更深刻地理解它们。 其三，自学找工作，一个有模有样的项目，其说服力，胜过千言万语的言语自荐。  当你完成以上所有任务时，你就已经达到入门程序员的水准。  四、再来是一些帮助小贴士： 1、如果条件允许的话，请把你学习过程的每一个大知识点，都梳理归纳成文章集，放在csdn，自己的博客，github都行。 一来，是让自己看到努力的硕果，增强信心。 二来，是它们能丰满你往后求职的简历，增加谈资。 总之好处多多。 2、如果你是学后端的，git、redis、nginx、zookeeper、kafak、docker的入门使用，要了解一下，真实工作是会用到的。 3、有人打趣说：“感觉不懂英语学编程，跟瞎子抹黑一样，得慢慢摸，才知道是什么。英语好，起码是睁着眼睛能直接看到东西的。” 所以碰到不会的英语单词，一定要「勤查」「勤记」「勤背」。 4、预备一本技术的枕边书。我之前带人入门java，都会让他买本《java语言程序设计-基础篇》，把碎片时间利用起来，打稳根基。既然要学，想学好，自然不能放过任何学习的机会。 剩下的就是去实战了，去积累经验。有经验，才能配合进一步的学习，真正理解中高阶技术知识的作用。 那去哪实战呢？必须是去工作，这个法子最实际。闭门空想着造车，实战性和锻炼性不够。找工作的这里不详细叙述。具体就是找合适的题型，刷起来，然后认真做好一份简历。有疑惑，可以关注私聊师兄。  另外，可能网上有人告诉新人要学透「设计模式」，学好「算法」，其实说得对。 但如果「新人A」一听，就不假思索，二话不说，买来一本500页的模式圣经、一本800页的算法宝典，开始从头啃到尾。 那么，能不能学好不好说，但是学到崩溃是必然的。多少业内人都没学透的东西，部分也就嘴上说说而已，而他当真一口闷，兴致不被磨光才怪，直接从入门到放弃。 即便「新人A」真能生吞20多种设计、几十种算法、也用处不大。因为他的业务经验缺乏，不足以支撑他对理论实际用处的理解。一个月后他就忘得差不多了，很浪费时间和头发。 学习陌生的事物要「有主次，有先后」，一开始，量要小，目标也要小。要在1周内能看到终点，有盼头才有动力，能短时间就有所收获，才有学习的乐趣。 自学编程是可行的，只要少走弯路，其实比培训班学习周期短不少。毕竟人家是上万元的学费，必须拉长足够的课时，才能让学生觉得物有所值。 但是单靠零基础的自己，加网上的碎片文章和视频，其实想少走弯路有点难，时间充裕倒无所谓，算磨练自学能力。 如果时间有限，比较靠谱的方法还是：借力。 有条件的情况下，找个有经验的业内人士，帮你规划学习路线，阶段性地验收你的学习成果，查缺补漏，防止跑偏，这样会比较高效，又省心。 最后，我想跟大家分享一个朴素的心得： 自学编程的成败，不在难易，贵在坚持。  希望对你有帮助，祝顺利。 现在的朋友点起赞来，都这么含蓄的吗？ 来，左下角，大胆一点！ /*----------------------------*/ 有用点个赞，世界你最棒 /*----------------------------*/  知乎就是师兄的心得记事本，喜欢的可以关注哦~ wx：ktshixiong  相关 IT 求职干货 自我介绍讲不好，谈薪容易谈不高。 → 面试的时候，如何自我介绍？  公司想白嫖你？教你如何优雅地回击 → 面试的时候面试官问如何看待加班，该怎么回答？  详细到你害怕的应届生简历教程 （4000+字，推荐收藏备用） → 应届生没有工作经历，简历应该怎么写？  最后，再次感谢大家的支持。 