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

本文分享了程序员在学习过程中常遇到的八大障碍及应对策略,包括不正确的学习动机、不知从何技术入手等,并提供了实用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


2015-06-17 实验楼

本文作者分享了大多数程序员在工作、学习中所碰到的8大屏障,以及应该如何应对攻克这些屏障,建议仔细阅读,从而更加了解自我~


作为一个JavaScript Web开发课程的导师,我看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。


大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来:


  • 更享受学习经历;

  • 进步更快;

  • 碰到难题更执着,不轻言放弃;

  • 写代码时更独立;


那么,这些障碍究竟是什么呢,我们又该如何攻克它们?


一、不正确的学习动机


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


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


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


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


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


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


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


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

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

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


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


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


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


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


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


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


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


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

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


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


2.将这个任务分割成既小又独立的任务。例如,“实现登录页面”是一个很大的任务。解决一个任务不应该超过20行左右的代码。


下面这些提示有助于成功做到这一点:


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

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

  • 语言语法;


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


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


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


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


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


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


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


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

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


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


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


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


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


七、不知道如何接受帮助


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


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


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


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


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


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


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


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

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

<think>好的,用户刚学完Python基础,但觉得英语词汇量不够,想学英语但不知道方法和方向。首先,我需要理解他的具体情况。他可能是在编程过程中遇到了英文文档、错误提示或者术语的障碍,导致学习效率不高或者有挫败感。 接下来,用户的需求是提升英语能力,特别是词汇量,但感到迷茫。这可能意味着他需要明确的学习目标和方法,以及如何将英语学习编程结合起来,提高实用性。 我应该考虑他的学习场景。作为程序员,常用的英语场景包括阅读文档、理解错误信息、参与技术讨论、查阅资料等。因此,针对性的词汇可能包括技术术语、常见错误关键词、API名称等。 用户可能没有意识到,直接通过编程实践来学习英语会更高效,比如在写代码时积累遇到的生词,而不是泛泛地背单词书。同时,结合工具和资源,比如词典插件、技术文档阅读,可以双管齐下。 还要考虑他的学习习惯和时间安排。可能他需要碎片化的学习方法,比如利用零散时间记忆单词,或者将英语学习融入日常编程中,避免额外增加太多负担。 另外,用户可能担心自己基础薄弱,需要从何处入手。建议他先掌握编程相关的核心词汇,再逐步扩展,同时培养阅读英文文档的习惯,这样既能提升英语,又能加深技术理解。 最后,需要鼓励用户坚持,并提供一些实用工具和资源推荐,比如在线词典、技术博客、学习社区等,帮助他制定可行的学习计划,保持学习动力。</think>针对编程英语学习的实用建议(分阶段实现): 1. 第一阶段:攻克编程基础词汇(1-2个月) - 必背核心词(每日10个): • Syntax(语法) • Variable(变量) • Function(函数) • Loop(循环) • Debug(调试) • Exception(异常) • Parameter(参数) • Algorithm(算法) • Framework(框架) • Repository(仓库) - 实战记忆法: 在PyCharm/VSCode中安装[CodeGeeX](https://codegeex.cn/)插件,遇到不认识的术语时: 1. 悬停查看中文翻译 2. 右键术语 → "Add to Anki"(自动生成记忆卡片) 3. 每天用Anki复习15分钟 2. 第二阶段:提升文档阅读能力(2-3个月) - GitHub实战训练: ```python # 用英语写代码注释示例 def bubble_sort(arr): """Sort array using bubble sort algorithm Args: arr (list): List of elements to be sorted Returns: list: Sorted list in ascending order """ n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] # Swap elements return arr ``` - 每日任务: 1. 精读1段[Python官方文档](https://docs.python.org/3/)(建议从Tutorial开始) 2. 在[Stack Overflow](https://stackoverflow.com/)用英语提问/回答1个问题 3. 第三阶段:技术英语综合应用(持续进行) - 建立个人术语库: ```markdown | 术语 | 领域 | 记忆技巧 | 示例 | |---|---|---|---| | Recursion | 算法 | re(反复)+ curs(跑动) | factorial calculation | | Decorator | Python | 装饰器像给函数"穿衣服" | @classmethod | | Mutex | 并发 | mutual exclusion缩写 | threading.Lock() | ``` - 推荐学习资源: - 视频课程:[Python for Everybody](https://www.py4e.com/)(英文字幕) - 有声书:《Fluent Python》配套音频 - 播客频道:Talk Python To Me 学习路线图: 第1周:掌握IDE中的高频词汇 第2周:能读懂简单错误提示 第1月:完成基础API文档阅读 第3月:参与英文技术讨论 第6月:流畅阅读技术博客 常见误区提醒: ⚠️ 不要背GRE词汇表 → 优先掌握GitHub常用词汇 ⚠️ 不要单独背单词 → 结合代码上下文记忆 ⚠️ 不要追求完美发音 → 保证基本读写能力即可 使用这些方法,你将在6个月内达到: ✅ 不借助翻译工具阅读官方文档 ✅ 准确理解错误信息含义 ✅ 能用英语进行基础技术交流 ✅ 代码命名更规范专业 坚持每天在编程中渗透英语学习,你的技术英语能力会与编程水平同步提升。现在可以尝试用英语写今天的代码注释开始实践!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值