为什么学不好编程(学编程大部分人学不下去)
本文目录一览:
编程很难学习?
编程难不难?那可不是闹着玩的。不从事这一行的永远不知道这行的艰辛,还咋巴着小眼睛问编程好不好学?
不知道LZ看没看过圣斗士星矢这部动漫,首先你得问问自己,想学编程,你有没有像星矢一样持之以恒百折不挠一步一个脚印忍受常人无法想象的困难和痛苦的品质,没有?你说我开玩笑逗你,那好,下面的不用看了,应该你确实不适合学。
如果你只想着挣大钱,劝你别碰这行,一句话,别来找虐。为什么?你看到的手机APP,各种应用,要想开发出来,不知道需要多少种技术。拿最常见的网站开发,需要后台数据库mysql,数据格式json,xml,各种网络协议,还有网站开发语言PHP, JSP,ASP.NET,等等不下十几种技术。而每一种技术都是一本厚厚的五六百页的书,需要最少一年多时间掌握一门技术。最要命的,每种技术互不交叉还跨度很大,每种技术都有自己的设计理念和很多很多“天坑”在等着你攻克,你问问你自己,你有这个恒心和意志力天天捧着本大部头的书天天看,天天上机操作学吗?你说有,那好,你看电视上那些富二代天天潇洒地到处游玩泡妞基本于你无缘了,因为你根本就没时间,谈个恋爱都困难,还想打网游玩王者?那算了,你还是别碰这行了,别耽误你玩游戏享受生活了。
程序员加班很恐怖,工作制通常是996,即早9晚9周六还要上班,晚9下班还是早的,一般到晚上十点。你想那时夜深人静了人家都休息抱着老婆睡觉了,你还在工作中,是不是很崩溃?
第2,程序员耗脑太严重。工作中需要十几个小时大脑不停地运转。需要设计算法,不断地把代码改来改去来适应客户一天几变的需求。很多功能没有现成的解决方案,还经常遇到一些天书一样的疑难问题,bug,实际工作中突发状况千奇百怪,你可能见都没见过的bug,崩溃,需要一点一点查几万行的log日志。而且也需要百度,google,英文论坛寻求帮助,理解错误信息是什么意思。所以英文不好的没耐心的还是算了吧,不适合这行。
第3. 程序开发首先是非常难学的,任何一门编程语言都有自己独到的思想,概念设计,很多情况下一门语言与另一门语言没有多大关系,知识经验无法串用。而且工作中你还不得不用到这些技术你不得不去学。而且程序技术日新月异,新类库新SDK每天都会推出,你需要日复一日不断地学习新技术。如最新视频解码技术,游戏引擎等等,而这些新技术可是国内没有书和任何资料的,需要你到英文官方网站去找实例看文档去学,更要命的,新的技术和老的还没太大关联,你得重头去学。而且老板急赶项目不会给你什么时间,一般三天就是极限了,你需要这么短的时间快速掌握一项新技术...
综上,你明白程序员为什么总要加班了吧,也知道这行不是人干的吧。为什么说程序员干到三十干不动。很简单,以这种消磨人生所有时间状态,你生命中只有加班加班工作工作学习学习,你将不能顾家不能跟朋友聚会不能再有自己一点点休闲时间,更别说谈女朋友恋爱了,以这种状态你能坚持到三十岁?我想那简直是个奇迹了
为什么很多人都觉得编程难,难在哪里?
作为一名大二的信息安全学生,在两年期间已经接触了c,c++,java等多种编程语言,也深感编程的困难。在我看来,编程真正的难度不是那些语法,那些东西少则几天多则几个月总能理解。
真正难的是层出不穷的问题和方法,所以我一直觉得,书上讲的东西都不难,难的是你自己去实践那些书上没有的东西。
那为什么很多人都觉得上手编程很难呢?
一、没有接受过解决问题的训练
在初高中的时候,我们受到的教育都是应试教育,许多知识点很多时候都是死记硬背,或者说是去理解它们。
但编程不一样,编程不是只靠记忆和套公式就能实现的。要知道编程的核心,不是语法,不是算法和数据结构,而是如何分解问题——发现规律并且建立起解决问题的模型,找到合适的数据结构的算法,最后写程序实现。
而我们特别是刚入学的大学生,缺乏的恰恰是发现问题、解决问题的思维。我刚开始上手编程也很难,以为只靠死记硬背就可以学好,但学的只是一些基础知识,真正碰到灵活多变的问题还是需要自己去拆解分析的。
二、没有选择合适的起点
每位同学都要根据自身的情况选择最合适的学习方法,如果基础没有打好,却要跟着课堂一起去学习高级语言的编程,肯定会觉得难于上青天。我对于新手目前的推荐是python,如果是计算机专业的学生,跟着老师学就行了,注意巩固复习。
在编程的过程中,到底难在哪里?
一、难在你思路的构建
你学了很多语法,很多API,但遇到不一样的实际问题,不是简单地罗列API就能完成,而是需要你对问题进行分析,通过各种算法、数据结构等进行编程实现。而这个过程肯定是需要试错和大量时间的(如果没有熟练各种方法的话)。
二、做出来容易,做好难
虽然做出来这道题了,但你用的是不是最好的方法呢?这就是所谓的做出来容易,做好难。
写的程序能够解决问题而且没有bug只是基本要求,这里的做好要求你写的程序容易理解,能够让别的接手的程序员看懂为什么这么写,因为通常一个大项目不可能是你一个人完成的,你写的东西很可能是别人的基础模块。
编程是一种沟通,用程序跨越时空之沟通则是一门程序员特有的艺术。 ——阿莱克西斯
接下来给一些我学习上的建议:
一、学好基础知识
当你学到一定程度,知道自己对哪个方向更感兴趣的时候,就不要广撒网了,一定要专注你所选择的领域,做深做精。看书的同时结合项目实践,进而对自己的掌握程度得到反馈。
二、多练多看,阅读别人的代码
我在学习编程的时候就喜欢多看别人的代码,看一些程序员大佬写的代码,看一些标准库的代码,仔细思考他们的编程思维和编程方式。
此外,学习过程中结合项目做一些实践,来明确自己的不足,给自己提供一些正反馈,让自己也更有动力继续学习。
质而言之,编程确实不是一件容易的事,但只要你持之以恒不断精益求精,也肯定能获得一定的成果。
学习编程究竟有多难?为什么人们一提起编程都觉得很难?
学习编程究竟有多难?走访了一些计算机科班新人,没想到竟有不少人表示,编程真的太难学了!更有人表示,不瞒你说,上大学前我是张白纸,4年后我成功将自己捣成了“浆糊”,理论是掌握的不错,可到了具体操作总觉得差把火!
其实并没有觉得很难很枯燥啊,那么问题到底出在哪?
难在没有建立学习中的“正向”兴趣循环
强烈的兴趣与不断获得的成就感是整个学习过程的“引擎”,它为学生完成整个学习任务提供源源不断的强大动力。
传统大学教育的目标之一是为学生在本专业领域未来的发展“打下扎实的理论与实践基础”,所以从一开始就要“科学训练”。这种教学方式对于很多学科或许十分试用,但对于计算机初学者来说,首要任务就是引发兴趣,否则一切都是枯燥的。
如果计算机教学从一开始就给了这些学生“痛苦”的编程体验,并且在后期枯燥的专业课程学习中不断得到强化,学生想觉得好学都不容易了!
难在没有受过解决问题的训练
从小到大,我们一直奔着考取好学校的终极目标,被动的记住或“理解”各种知识点,然后依着一组标准答案有条不紊的填写着试卷。
到了大学以后,很多人继续发扬着这种“高考精神”,背诵着C++语法、操作系统各项定义、计算机网络各种协议、常量、作用域、多态……拿相应的学分不成问题,但脱离了试卷进入到真的项目,真没有几个人敢说自己多会编程。
然而编程的核心,从来都不是这些死记硬背的东西,而是如何分解问题——发现规律建立解决问题模型,映射到合适的数据结构和算法上,最后才根据算法写程序实现。没有这样的训练,应用到实处也许真的很难!
在这里,他们从未觉得编程难学
如果说,学编程真的很难,那为什么还有那么多非科班人通过专业的IT职业教育学习并入门IT行业,实现高薪就业了呢?
事实上,一些专业的职业教育学校所教授的课程内容是根据市场上企业需求开发的,而且是灵活变动,实时更新的,很多实训项目也是直接跟着企业在做,真正实现学习就是工作,工作促进学习。
先培养出学生对于编程的浓厚兴趣,并从中获取成就感,形成正向兴趣循环,打下扎实的学习基础。随后会在具体的项目案例中逐步击破各个知识点,获取编程实操经验。技能经验全掌握,面试拿offer一气呵成,学编程他们当然不会觉得难!
编程怎么那么难学啊?
难,很难,非常难!
但最难的不是知识,而是自律,而是能不能合理安排时间,而是能不能做到自我激励。
说句实在的,互联网发展到现在这个程度,网络上的学习资源完备且高质的情况下,在学习资源的获取上,自学和非自学早已没有界限了。
你报个培训机构,里面的老师大概率还没有B站上的免费课程讲的好。
自学与非自学唯一的界限就是有没有人赶着你,逼着你,监督你。
而如果你的编程学习需要人来督促你,那完了,你从培训机构出来的那一刻,你的整个职业生涯就定型了,而且一定会走下坡路。
所以,做不到自我管理,自学编程一定是很难的,而且是难上加难,编程的难加上自学的难。
我就直说了吧,我劝你放弃。
所以你除了迎难而上,坚持自学之外,没有第二条路可以走,哪怕报班暂时逃过一劫,之后也还是要面对。
文章图片1
效率不高怎么办?
你可能会说,报班不是因为自己学不了,而是因为报班有老师可以问,不会出现因为一个知识点卡死的问题,能够提升效率。
我想告诉你的是,不需要而且不可能。
首先说为什么不需要,你的80%的编程问题可以通过Baidu以及Google得到详细的简答,绝对比你的老师更详细。
剩下20%中的10%可以通过加一个技术交流群来解决。而最后的10%,相信我,你的编程老师也解决不了,不然他不会去当编程老师了。
最好的解决办法是,私聊GitHub或者公众号的编程大佬,给他们发个红包,然后询问你已经整理好的问题。
再给你分享下我的经验吧。
在我近十年的工作、学习以及与人交流的过程中,我得出一个结论:不管优秀不优秀,一个程序员的成长60% 都是靠自己,而且你越优秀这个比例就越大。
至于为什么,也很好理解。
你越优秀,比你更厉害的人就更少,无人可问无人可教,你不靠自学靠什么?
这也是为什么我说哪怕你暂时逃过一劫,你之后还是要面对。
程序员这个行业,做不到与时俱进就一定会被淘汰,要么就越工作就越感觉自己从脑力活动变成了体力活动,单纯的搬运。要么就是没等到35岁就已经因为能力跟不上企业需求的发展而被裁员。
我一直强调,程序员有没有35岁危机我不知道,但我知道程序员一定是靠技术吃饭的,而想要持续精进自己的技术,只有靠自学。
除此之外,我一直有一个观点:程序员不是教出来的,而是培养出来的。对程序员来说最重要的,不是会什么,而是能会什么。
知识是死的,学习能力却是活的。
与其想着如何便捷地获取知识,不如培养自己获取知识的能力。
所以,给你推荐一篇基础能力的文章:
为什么你学不会编程
为什么大多数人学不会编程?
在这个文章中,我会告诉你为什么。以及人们所犯的错误,以便您可以学会不犯这些错误。
所以如果你是一名程序员,如果你正在学习成为一名程序员,但进展并不顺利,我会告诉你为什么,我会告诉你为什么你不在那里人们犯的错误,这样你就可以学会不犯这些错误。如果您是第一次加入,请务必查看我的书“软技能:软件开发人员生活手册”。这是本书的第二版。如果您有第一版,请继续选择第二版。这里有很多很酷的东西。我添加了一些新章节,这里有很多新信息。实际上,这是有史以来软件开发领域最畅销的书籍之一。真的。并确保您订阅了频道。
好的,让我们进入这个。让我来谈谈这个,再说一次,我并不是要侮辱你,但是如果你一直在努力学习成为一名程序员并且花了一年多的时间,那么你做错了。应该不会花那么长时间。现在,编程很难。不要误会我的意思。这是一件很难学的事情。我想说,这可能是最难的技能之一,它确实存在,因为它是如此广泛。要知道的太多了。有很多技术一直在变化。有很多事情要做。但是,如果您可以缩小范围,那么实际上进入它并学习它会很简单。所以我看到人们犯的最大的错误是想成为程序员,我一直都明白。我收到电子邮件。“我学了三年了。一世'
我曾教过一些想成为程序员的人。自从他们开始那段旅程以来,已经有很多很多卫星了,但都没有成功。他们最大的原因是因为他们没有非常狭窄的关注点,他们只是想学得太多,他们花太多时间看视频和做教程而不是真正做程序员所做的事情,这是建造东西,这是解决问题和建造东西。所以这就是事情,这就是你需要做的,这就是你搞砸的原因。你需要做的是你需要选择一个非常非常狭窄的焦点,你想要能够做的事情,这样你就可以找到一份工作。假设你要找到一份工作,因为你们中的大多数人,你 正在努力成为一名程序员,这样你就可以找到一份工作。我们现在不打算谈论企业家或自由职业者。我们将讨论你是否想找到一份工作。
所以,如果你想得到一份程序员的工作,你只需要弄清楚这一点,你只需要弄清楚,你想要什么样的工作?然后你弄清楚,为了得到那份工作,你需要学习什么?所以当我说你想要什么样的工作时,我说的是,它本质上是两件事。只有两件事你真的需要知道。其中之一是什么编程语言,因为这对你想要得到一份工作至关重要。第二个是,你想进入什么堆栈或什么行业?你真的可以选择其中之一。我的意思是,您只需要将其缩小到足够小的范围,以便您可以学习需要学习的内容。因此,假设您想使用 Python 并且您对人工智能非常感兴趣。这很酷。那很完美。您可以缩小到图像处理的范围。在那个领域有很多工作。也许您将某些东西视为自动驾驶 汽车 之类的东西。
我的意思是,它非常狭窄。只有这么多公司,但有很多技术围绕着它。所以你需要把它缩小到一种编程语言,然后是一个特定的领域或,和/或一个技术堆栈。如果您想非常非常具体,您甚至可以同时使用两者。但是你也可以做一个技术栈。当我说技术堆栈时,我的意思是编程语言、框架,本质上是前端和后端。一些公司可能会做 Python,他们可能会做一些 JavaScript 前端,然后他们可能会有一些 SQL 服务器数据库后端,或者我的 SQL。实际上,对于数据库的后端来说,它并不是那么重要,但是您需要了解所有这些组件,并且需要将其缩小到非常具体的范围。不要只相信我的话。我们就这样做吧。让'
让我们搜索一下。让我假装我要尝试找份工作,所以我们要跳过这里。我要找编程工作。可能会在hiring.com 或类似的网站上。我们来看看吧。让我们看看indeed.com。我们这边看看。让我们看看编程工作。好的,这个怎么样?初级 React JS 开发人员。这不是很多工资。我不知道我是否会选择这个。但是,嘿,如果你愿意,你会怎么做?好的,让我们实时看看这个。让我们弄清楚,你会怎么做?好的,那你就过去吧。好的,你会看看这个。希望你会考虑一些不同的工作。然后你说,“好吧,React JS 前端。” 所以你看看这里的所有要求,然后说,“我可以做这些事情吗?” 所以真的,为此,所有你需要知道的是 React JS 前端。那你能学会吗?他们拥有“前端设计方面的一些专业知识以及改变 游戏 规则的想法的含义。” 你可以剪掉绒毛。
用户的想法。好吧,再一次,剪掉绒毛。“JavaScript、React JS Redux 和其他现代框架。”所以你甚至可以给他们发电子邮件。你甚至可以说,“还有哪些现代框架?”我的意思是,很多时候他们会回复并告诉你。你有没有想过这样做?大多数人不会想到这样做。好的,所以这不是一个很大的清单。移动前端开发。好的,现在我们有了更多的线索。“利用 CGP 或 AWS 等云技术。”所以你可以忽略学士学位。它说,“任何技术领域或同等领域。”他们总是这么说。所以你可以忽略所有这些东西,但是现在你已经有了一个你可以找到的东西的列表。事情就是这样,有一个就不止一个。这不是唯一一家使用这种技术堆栈的公司。还有很多其他公司。
所以如果你只是研究这些东西,那么你就可以找到一份工作,但是还有很多其他的东西要看。您想远程从事 Java 软件工程师的工作吗?这很好。这些方面的薪酬不是很好。我不会做这些工作。我会寻找一些东西。我可以给你更多的钱,相信我。现在,如果你想开始,你可以看看这个,同样的,你会看看,好吧,哦,看,Apache Camel Elastic Search。所以你可以看到什么技术。然后这是另一个。这对 FedEx 来说很有趣。是的,好的,这样你就可以看到了。这甚至不显示什么。好的,那里有很多东西。你不需要知道所有这些东西。但你可以弄清楚,好吧,我的第一份工作。所以,无论如何,看看这个,这是另一个。反应,节点,JS,长生不老药,
问题是,你将不得不选择一些东西。你可以在这里看到有很多不同的。有很多不同的技术。这就是为什么你不知所措,这就是为什么你没有成为一名程序员,为什么你没有成功,因为你是,“好吧,该死,我必须知道所有这些东西,而且我不知道我想要什么样的工作。我只需要开始学习东西。” 所以你开始学习一点点这个那个那个。相反,只需选择一个狭窄的焦点。现在,您可以这样做的一种方法是参加编码训练营,我在该频道的其他视频之一中谈到了这一点。现在,如果你打算这样做,一定要看看我的书。不是这本书,是另一本书。我有这个,但请查看完整的软件开发人员职业指南。
就在这里。完整的软件开发人员职业指南。还有一个音频版本。请注意,它的评分为 789。这是一本好书,相信我。但这个想法是,你需要在去训练营之前学习他们将在训练营中教你的东西,然后再去训练营。大多数人会说,“我只是要去训练营学习。” 不。弄清楚他们要教你什么,然后在你去训练营前几个月自己学习,然后去训练营真正加强它并成为该领域的佼佼者。现在,这不会为您提供所需的所有编程经验。它会让你有足够的时间踏入这扇门,找到一份工作,能够建造一些东西。因为,记住,今天编程的工作方式与过去大不相同。有这么多东西。有这么多技术。
有太多的编程语言,你需要做的是你需要能够使用一些工具集,一个前端框架,一个主要的编程语言,一个后端框架。你需要能够使用这些东西才能构建一些东西。我知道这听起来很基本,但这是真的。一旦你能做到这一点,你就可以开始学习其他一些东西。但是你只需要一套技能,一个你可以做的狭窄的焦点,让你可以建立一些东西。现在,如果你真的想测试这个,如果你喜欢,“好吧,好吧,我想自己解决这个问题,”简单,简单的事情。干得好。构建移动应用程序。只是想出一些简单的东西。你想要一些想法吗?开始了。15 个应用程序创意,可帮助您建立和提升您的编码技能。倒数计时器。你去吧。再次,真的很简单。
也许有点太简单了。翻转图像。这是一本很好的食谱书。一个测验应用程序。一款记忆卡 游戏 。一个绘图应用程序。一个简单的网上商店。有一个很好的。这个不错。二级中级。一个待办事项列表应用程序,这是我要推荐的。卡路里计数器。那个先进。聊天应用。你看到了吗?这是你做的。你这样做是为了学习如何编程。你不会去看教程。相反,你会说,“好吧,从一个简单的开始。” 让我们从一个简单的开始。让我们去一个 Notes 应用程序。真简单。用户可以创建笔记、编辑笔记、删除笔记。他们给你所有的要求。你不必去想东西。然后你要做的是弄清楚如何构建它。好吧,我怎么知道从哪里开始呢?那么首先,你需要弄清楚,你打算在什么样的地方建造它?你打算为手机构建这个吗?为网络?决定那个。好的。
接下来,您将使用什么技术?什么编程语言?什么平台?你打算让它成为一个Android应用程序吗?你打算制作一个iOS应用程序吗?您打算使用 JavaScript 框架制作 Web 应用程序吗?你可以决定任何你想要的。然后你弄清楚你需要学习什么才能做到这一点,编程语言有多少,如何创建一些基本的东西,比如说,一个移动应用程序。当我学习开发移动设备时,我的第一件事就是,“我实际上如何创建一个带有空白页面的应用程序?” 因为如果你能做到这一点,你就已经成功了一半。然后看看这个,用户可以创建一个笔记。那是什么?你能创建一个新的笔记吗?所以你必须考虑一下。好吧,我需要能够以某种方式存储笔记,我可以创建一个吗?好吧,也许该应用程序只有一个笔记。也许它现在只是一块干擦板。好吧,没关系。
那么如何编辑笔记呢?你能添加一些文字吗?你能删除笔记吗?你能删除那个笔记上的内容吗?你明白我在说什么吗?您可以找出其中的每一部分,然后从书本、教程以及实现您正在尝试执行的一项功能的所有内容中学习您需要做什么。这似乎是一种以缓慢方式学习编程的倒退方法,但这是最好的方法,因为一开始真的很难,因为它会像,“好吧,如果我只是读了整本书,学习了整个编程语言并完成了所有教程?” 起初,是的。看起来情况确实如此,但会发生的情况是,当您学习如何创建笔记时,这将非常困难,因为您什么都不知道。但是当你进入第二步时,它是学习如何编辑笔记。现在,你已经知道了一些东西,你可以把这些东西结合起来,这不会那么难。
当你进入第三步、第四步和第五步时,很快,你就会进入这样一个步骤,“我已经知道该怎么做了。我不用查。” 那就是你知道如何编程的时候。