学习编程需要攻克的8个难关,一旦没有把握好,很可能会失败!

Ubuntu使用cmake出现Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed 解决 Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed 阅读详情

  作为一个C/C++软件开发的老程序员,我看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来:

  (1)更享受学习经历

  (2)进步更快

  (3)碰到难题更执着,不轻言放弃

  (4)写代码时更独立

  那么,这些障碍究竟是什么呢,我们又该如何攻克它们?我们一起往下看:

                 

1、不知道从什么技术入手

  很多人会问:“我应该先学什么编程语言?”之所以会提出这个问题,是因为他们不知道自己为什么要学习代码。

  一旦你下定决心去完成一个特定的项目,那么从什么语言入手这个问题就变成一件很容易的事情:

  如果你想构建iOS app,那么你需要学习Objective C或Swift。

  如果你想构建Android app,那么你需要学习Java。

  如果你想构建Web app,那么你需要学习JavaScript。

  其实现在我们可以使用JavaScript来创建任何类型的项目——无论是简单的web和移动app,还是高级的硬件项目。大多数行业中都有它的身影:音乐、医疗、游戏、时装。这种语言非常值得学习。

                       

  如果你还是不能确定要选择哪种语言,那么不妨咨询下某个程序员的意见。只要你确定要构建什么项目,那么他就能很快地为你推荐适合你使用的技术。

  另外,知识都是相通的,所以,不要过于拘谨,选择语言这一步骤几乎没什么风险。

2、不正确的学习动机

  在谈及壁垒之前,我想先着重说明学习动机的重要性。不要只是为了编程而学编程,也不要因为听说它很酷,很划得来就来学编程。

  你得因为要解决问题而学习编程,你得因为想要自动化和改善生活而学习编程,你得因为想要构建应用程序以造福社会来学习编程。

  如果你只是喜欢编程,并希望以此作为职业的话,那么在之后的学习过程中,你可能会有一种强烈的冲动想要放弃。这通常发生在事情变得艰难,学习体验变得痛苦的情况下。这时你会告诉自己,你不喜欢编程了,编程操作不适合你,觉得自己天生就成不了程序员。

  这就是为什么你应该考虑围绕着完成项目设置目标的原因。如果你的心里有计划,或者你想要解决更高层次的问题,那么你可以对自己说:“这可能不是一次愉快的经历,但是我真的想要解决这个大问题,所以我一定要克服这个障碍。”

3、不能学以致用,以及责备自己

  选择好技术堆栈之后,刚开始学习理论总是很轻松的,而且网上也有许许多多免费和付费的在线课程。

  很快大多数学习者掌握了理论知识,甚至完全可以自己来解释某个代码片段的工作原理。理论只是概念的有限集合。任何人都可以在几天之内记住它,如果她/他真的想的话。那么,关键的问题是什么?

  学习者碰到的最大问题在于,实际应用理论来解决问题并编写新代码的时候。这中间的差距实际上就是技能空白。

  比如说游泳。你可以阅读大量的技术文章,然后解释得就像一个专业教练。但是,要想实际应用这些理论,就需要大量的实践、斗争和错误——你肯定会吞下大量的水!

  然而更糟糕的是你开始责备自己。或者认为自己不够聪明,或者觉得自己没有天赋。这其实跟聪明天赋没有关系,你只是需要练习技能的过程:

  1.选择一个复杂的项目。理想情况下,这项目得能够激发你的兴趣。

  2.将这个任务分割成既小又独立的任务。例如,“实现登录页面”是一个很大的任务。解决一个任务不应该超过20行左右的代码。下面这些提示有助于成功做到这一点:

  如果你不能解决这个任务,那么进一步将它分割成更小的任务。

  一个任务一次不应该使用太多的理论概念。

  3.一次专注一项任务,而不是并行解决多任务。不要跳到下一个任务,除非你已经彻底测试过当前任务,并确信没有问题。

  如果你不这么做,而此时应用程序又出现了问题,那么你就不知道你正在并行解决的多任务中到底是哪个出了问题,寻找起来就麻烦多了。

  4.确保自己在开始任务之前知道所有必要的理论知识。有时候,你可能不知道需要学习什么理论,这很正常,所以你需要向他人寻求帮助:程序员朋友,导师,或类似StackOverflow的社区。

  5.最后,你解决了任务。在解决任务的过程中,你可能会碰到很多问题,你需要做的就是吸取教训,这也是下面要说的点。

                                   

4、不吸取解决任务中获得的经验教训

  最好的情况是,你解决了任务并且结果证明非常有效。此时,很多人往往就直接开展下一个任务。但是如果你这样做的话,那么你浪费了一个绝佳的学习机会。

  希望你能够用以下问题来挑战自我,帮助自己成长:

  哪些边界情况会导致我的代码失败?即使现在还没有失败,有哪些应用程序状态可能会破坏代码?

  我的代码是否足够整洁?对其他开发人员,甚至是自己而言,代码是否易于理解和改变?因为以后可能需要修复隐藏在这段代码中的问题,或者根据其他产品规格改变代码。

  我的方法是最好的吗?有没有其他选项是我可以选择使用的?各个方案的利弊?这任务是否值得用不同的方式解决?

  此模块与其他模块是如何交互的?是否会对其他模块造成负面影响?是否容易被其他模块影响?

  然而,很多时候,你会进退维谷。

5、你不知道如何处理一个任务

  你不知道从哪里开始?你可能会随机地去尝试,或者从其他地方复制一些你自己也不明白的代码。但是,这是没有帮助的。即使你复制来的代码有效也没用。因为当你今后再一次碰到类似的任务,你依然不能解决。

  如果你想妥善解决任务,那么首先你得知道你为什么卡壳。下面是一些可能的原因:

  1.没有很好地掌握这些理论知识:

  语言语法

  库或API的工作原理,某个具体方法或类的工作原理

  编程范式(例如:异步编程)

  系统运作(例如:HTTP请求是理解Web开发的关键)

  如果是上述情况,那么可以去复习理论知识,如果依然摸不着头脑,也可以去找人寻求帮助。

  2.任务太大了,那就分解为一个个小任务。

  3.也有可能是因为你读得太快,忽略了一些你以为熟悉其实似是而非的概念,所以无法理解任务要求。

                      

6、你知道如何解决任务,但解决方案不管用

  这是编程中最常见的情况,哪怕是那些经验丰富的资深程序员也是如此。你的解决方案之所以不起作用最大的可能是你的代码中存在着bug。

  如何修复?方法是调试代码。这也是作为一个程序员需要学习的最重要的技能之一。这不是可以随便凑合的事,也不是玩幸运猜猜猜游戏。如何寻找bug是有具体步骤的。而且很多书中都有教这个技能。

  不幸的是,这是很多新手程序员失去动力选择放弃的难关。很少有课程会说明调试的重要性。如果你不知道如何正确地调试,那么它就是不可战胜无法攻克的难关。

  很多人担心会花太多时间用于调试代码。这是正常的,在你第一年的编程规划中这是不可避免的。

  甚至,你还得学着去喜欢调试。不妨将此看成是一个机会,一个修复错误提高编程能力的机会。当你解决了一个bug,可以问问自己这个问题:“我为什么会犯这种错误?以后我该如何预防再犯?”

  还有一个好主意是将找到的bug写成编程日记,方便你总结和学习。

7、不知道如何接受帮助

  当我们在学习代码,或调试代码时,可以咨询很多材料:书籍、课程、教程、导师,开发者社区等等。

  在你学习这些资源时最常见的问题是,你并没有完全了解幕后发生了什么事情,也不知道概念是如何融入到更大的蓝图中的。

  例如:你在某个问题上花了10小时,最后终于有人提供一个解决方案,你往往会采取“拿来主义”——采纳解决方案之后就直接跳到一个任务中去。千万别这样做!相反:

  思考自己之前的思维过程。问问自己,做错了什么,对于这个特定的解决方案有哪些是值得你先前的思路借鉴和改进的地方。

  询问他人的思维过程。她/他是如何解决的呢?向对方学习,吸取经验。

  这也是在StackOverflow和谷歌上搜答案的一大缺点:你只知道解决方案,不知道幕后的思考过程。

               

8、不去应用你学到的理论

  这篇文章也是理论知识,除非你能够学以致用,否则它是不会发挥一丝一毫作用的——多多应用,直到它变成潜意思的例行程序。

  编程其实就是通过形成良好的习惯来帮助你解决各种问题的过程。

       学习C/C++编程,想进一步提升自己的学习能力与编程技能,欢迎关注博主微信公众号:C语言编程学习基地。一起来成长!

matlab RANSAC拟合圆柱【2025最新版】 RANSAC拟合圆柱 阅读详情

相关推荐

精彩编程编程技巧-如何使程序不出现在任务列表中...

精彩编程编程技巧-如何使程序不出现在任务列表中 ...

编程究竟难在哪里?

你学了很多语法,很多 API,但是当给你一个实际问题,让你通过编程实现,不是简单地罗列 API 即可完成,而是需要你对问题进行分析,理清解决问题的逻辑,然后再通过各种算法、数据结构和 API 等进行编程实现。当你解决了思路构建的难点,解决了一个问题,但是你是否使用的最好的方法,这就是所谓的做出来容易,做好难。写的程序能够解决问题且没有 bug 是基本要求。这里的做好不是指功能正确,而是写的程序容易理解,能够很容易让其他接手的程序员(水平不差)看懂为什么这么写。正确是怎么写不会挖坑害的人,怎么写能让别人。

程序员小麦的博客 1130

java实现下载打包java实现下载打包

用java实现的一个下载打包功能,整理后供大家参考

程序员学习时需要攻克的八种状态

在参加iOS开发培训学习编程的过程中大多数人遇见过类似的问题bug,但是这些通常很好解决,解决之后那么好处立马就来;更享受学习经历;进步更快;碰到难题更执着;不轻言放弃写代码时更独立等等。   那么,这些障碍究竟是什么呢,我们又该如何攻克它们?   1.不正确的学习动机   在谈及壁垒之前,我想先着重说明学习动机的重要性。不要只是为了编程而学编程,也不要因为听说它很酷

ccnanxi的博客 757

17 岁的程序员告诉你关于编程的 7 个重要教训!

作为程序员,在日常的 Coding 中,你遇到过哪些坑?又有什么样的心得与体会。 作者 |Alec Jones 译者 |弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 大家好,我名叫Alec,今年17岁,我从12岁起就开始学习网络开发了。我远非优秀的开发人员,但我学到了一些普通开发人员应该知晓的经验教训。 以下是我学到的一些经验教训,我认为...

CSDN资讯 9122

程序员学习编程需要攻克 8 个壁垒,解决后编程能力显著提升!

作为一个C/C++开发的一个过来人,我看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。进行一番小小的观察总结之后发现,大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来: (1)更享受学习经历 (2)进步更快 (3)碰到难题更执着,不轻言放弃 (4)写代码时更独立 那么,这些障碍究竟是什么呢,我们又该如何攻克它们? 1、不正确的学习动机 在谈及壁垒之前,我想...

每日分享程序员技巧 504

程序员学习编程需要攻克8 个壁垒,解决后编程能力显著提升!

作为一个C/C++开发的一个过来人,我看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。进行一番小小的观察总结之后发现,大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来:   (1)更享受学习经历   (2)进步更快   (3)碰到难题更执着,不轻言放弃   (4)写代码时更独立 那么,这些障碍究竟是什么呢,我们又该如何攻克它们? 1、不正确的...

致力于C语言C++知识分享! 484

攻克日语学习难关十大原则

 日记分类  日语单词(13) 学习日记(12) みんなの日本語(9) 视频(7) 日本文化(5) 文法(4) 日语 音乐(3) 映画(3) 日本語 副詞(2) 私日记(2) 日本ニュース(1) 生活课(1) 摄影(1)

技术就是个纸老虎---为之,则难者亦易矣;不为,则易者亦难矣。 963

编程需要攻克8个障碍!

1、不正确的学习动机在谈及壁垒之前,我想先着重说明学习动机的重要性。不要只是为了编程而学编程,也不要因为听说它很酷,很划得来就来学编程。你得因为要解决问题而学习编程,你得因为想要自动化和改善生活而学习编程,你得因为想要构建应用程序以造福社会来学习编程。如果你只是喜欢编程,并希望以此作为职业的话,那么在之后的学习过程中,你可能会有一种强烈的冲动想要放弃。这通常发生在事情变得艰难,学习体验变得痛苦的情...

乞力马扎罗的雪CYF的博客 2018

程序员学习编程需要攻克8个障碍

作为一个JavaScript Web开发课程的导师,我看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。 大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来: 更享受学习经历 进步更快 碰到难题更执着,不轻言放弃 写代码时更独立 那么,这些障碍究竟是什么呢,我们又该如何攻克它们? 1.不正确的学习动机 在谈及壁垒之前,我想先着重说明学习

拥抱变化 1866

攻克 Remix 初始化难关:Git 仓库创建失败的 5 大终极解决方案

Remix 框架作为现代 Web 开发的利器,在项目初始化过程中偶尔会遇到 Git 仓库创建失败的问题。本文将为你提供 5 个快速有效的解决方案,让你轻松解决这一常见难题。 ## 🔍 为什么 Remix 项目会遭遇 Git 初始化失败? 在开始使用 Remix 构建现代、弹性的用户体验时,项目初始化是第一步。但有时 `git init` 命令会因为各种原因无法正常执行,导致整个项目创建流程中

gitblog_00388的博客 509

攻克英语发音难关:Earthworm第47课音频加载失败的深度修复方案

你是否也曾在使用Earthworm学习英语时遇到发音功能失效的问题?当点击播放按钮却听不到任何声音,不仅打断学习节奏,更影响语言输入的完整性。本文将以第47课为例,从问题定位到代码修复,手把手教你解决这一常见痛点,让发音功能恢复如初。 ## 问题现象与影响范围 在Earthworm项目的第47课学习过程中,多位用户反馈单词发音功能异常:点击发音按钮后无音频输出,控制台显示404错误。通过错误追...

gitblog_00520的博客 368

攻克日语难关的十大原则

攻克日语难关的十大原则

张晶亮的专栏 738

从挫败到精通:三步克服编程学习难关

面对编程学习的挫折感,如何调整心态、改进学习方法并从成功经验中汲取力量?本文揭示了从挫败到精通的秘诀,帮助你重拾信心,优化学习策略,并在编程之旅中取得显著进步。

weixin_67239318的博客 848

Python 攻克移动开发失败

整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置...

CSDN资讯 1万+

攻克VeraCrypt编译难关:Linux平台8大常见错误修复指南

你是否在Linux上编译VeraCrypt时遭遇过"wxWidgets未找到"或"权限被拒绝"的报错?本文基于官方编译脚本[src/Build/build_veracrypt_linux.sh](https://link.gitcode.com/i/fe1884dac14812484da01cc057afca84)和中文开发文档[doc/html/zh-cn/CompilingGuidelineL...

gitblog_00472的博客 723
上一篇: 面试分享:那些年我经历过的一些面试,以及得到的一些面试心得!
下一篇: C++编程笔记:C++用new与不用new创建对象的区别
CodingPs
博客等级 码龄7年 181粉丝 253原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值