当前位置: 首页 > news >正文

学习编程-先改变心态

编程失败的天才

林一和我很久以前就认识了——我从五年级就认识他了。他是班上最聪明的孩子。如果每个人在家庭作业或考试准备方面需要帮助,他们都会去那里。

有趣的是,林一不是那种连续学习几个小时的孩子。

他的聪明才智似乎与生俱来,几乎毫不费力。他只需阅读或听到一个概念一次,就可以轻松地将其内化。

完成学业后,林一继续获得英国最负盛名的大学之一的奖学金。当我不久前和他交谈时,他告诉我他打算学习编程,因为他想成为一名软件工程师。

然而就在两个月后,林一告诉我他的计划发生了变化。他不再想成为一名软件工程师,因为编程“不适合他”。

当他告诉我这件事时,我大吃一惊。

班里的天才觉得编程太难了?

与此同时,我注意到许多在学校平均成绩为 C 的学生后来成为软件工程师、网络开发人员和数据科学家——这些职业需要大量的编程专业知识。

对我来说,越来越明显的是,在编程方面,有些特质比卓越的技能或智力更重要——比如毅力、心态改变和自信。

在这篇文章中,我将详细介绍我为帮助我成为一名更好的程序员而开发的两个重要特征。

这些生活方式和心态的改变帮助我从一名“有抱负的程序员”变成了一份需要我每天编码的数据科学工作。

1. 培养成长心态

2012年,斯坦福大学心理学家卡罗尔·德韦克(Carol Dweck)创造了“成长心态”一词。

德韦克解释说,本质上有两种心态——固定心态和成长心态。

假设你面临一个对你来说有点太难的问题——当你陷入困境时,你最初的反应是什么?

您是否感到焦虑,或者因为不够聪明而无法解决问题而想放弃?

或者……你觉得你还没有解决这个问题吗?只要多做一点准备,你最终就会到达那里。

如果你属于第一类,那么你就拥有德韦克所说的固定型思维模式。固定型思维模式的人相信天赋和智力等特质是与生俱来的。你要么拥有“它”,要么没有。

让我们回到林一的故事。

作为一个学得很快的人,一个不费吹灰之力就能取得好成绩的孩子,林一几乎没有犯过错误。

他是学校里的完美典范,经常被称赞有“聪明的头脑”并且比其他人都聪明。

那么……当这个人一生中第一次尝试学习编码并且最初遇到困难时,你认为发生了什么?

当他浏览网页寻找答案和陌生人时,互联网上随机的人都能编写他几乎看不懂的程序?

当他努力执行最基本的任务而不出错时?

我会告诉你发生了什么事。

林一进入战斗或逃跑模式。他很沮丧。他认为编程不适合他。

你看,林一体现了固定型思维模式。他在认可他的环境中茁壮成长,并在失败的前景中崩溃。

而在很长一段时间里,我也是这样。

当我第一次尝试学习编码时,我认为世界上有两种类型的人 - 适合编程的人和不适合编程的人。

事实证明我是对的。

然而,那些适合编程的人并不比你聪明或更有才华。

他们只是有能力接受从头开始学习如何编码是需要努力和耐心的事情。它不可能在一夜之间掌握。

换句话说,他们具有成长心态

成长心态意味着你认为你的编程能力是可以通过努力培养的。当你未能学习一个概念或遇到错误时,你不会将这种失败视为描述自己的一种方式。

相反,您将其视为学习和成长的机会。

对于我们许多人来说,成长心态并不是天生的。

当我第一次开始学习编码时,我会遇到一些简单的问题,而我看到我的同伴在几分钟内就解决了这些问题。

这让我质疑自己的智力并怀疑自己在该领域的能力。

然而,随着时间的推移,我意识到编程与我们在学校教授的其他科目不同。

学习编码并不像为了考试而背诵教科书。您不可能花几周的时间来学习它并期望在完成课程后构建全栈应用程序。

这是一项永无止境的终生努力——一项需要一遍又一遍地重复的练习,你花在上面的每一个小时都收效甚微。

我喜欢把它想象成去健身房或骑自行车。在健身房进行一次锻炼后,您不会一夜之间就增肌。你需要每周出现并连续几天重复这个动作,直到你变得更好。

如果你跳过一次锻炼或一个月没有出现,你最终会失去进度并不得不重新开始。

将编程视为锻炼。

可能需要几个月的时间才能看到任何明显的进展迹象,但持续表现并专注于过程是改进的唯一方法。

2. 将编程变成日常习惯

既然我们已经确定一致性是学习编码时的关键,那么如何将其变成一种重复足够多次才能真正看到进步的习惯呢?

学习编码很困难。研究表明,作为人类,我们的大脑倾向于走捷径。

那么……你如何克服走阻力最小的道路的冲动,并说服自己每天都编码呢?

当然,当你有动力时,一开始就很容易坚持成为一名程序员的目标。困难的部分是,当你因为看不到明显的进展迹象而开始感到沮丧时,保持在正轨上。

James Clear 在他的畅销书《Atomic Habits》中提供的一个技巧帮助我让编程成为一种日常习惯。

詹姆斯·克利尔在这本书中指出,当你经常重复某件事并使其成为你日常生活的一部分时,习惯就会形成。

为了将任何行动变成日常习惯,他建议设定一个“执行意图”。

实施意图

实施意图让你能够真正具体地了解你要做什么、什么时候做以及在哪里做。

例如,与其说“我要学习编程”,不如说“我要每天上午 11 点到下午 4 点在我家附近的咖啡馆编码”。

这一实施意图是我特有的,但您可以为自己创建一个类似的实施意图并遵循它。

像这样的实施意图将确保您将编码作为日常工作的一部分并坚持下去,即使是在您感觉不到的日子里。

我发现另一个有用的技巧称为“诱惑捆绑”。

诱惑捆绑

这是将你必须做的事情与你喜欢做的事情结合起来的行动,以便将其变成一种日常习惯。

例如,我们大多数人都觉得去健身房既困难又不愉快。然而,我们喜欢看 Netflix 和听音乐。

如果你将观看喜爱的电视节目的行为与每天晚上锻炼的任务结合起来,你可以欺骗你的大脑期待锻炼。

作为一个咖啡爱好者,只有在编程的时候我才会给自己一杯冰拿铁,这让我更加期待打开笔记本电脑写代码的动作。

这帮助我每天起床编码,最终将其变成了我逐渐喜欢的日常习惯。

要点

总而言之,学习编码是一项艰巨的任务,既耗时又需要大量的练习。

一开始可能没有什么回报,你投入的时间几乎没有什么回报。

然而,就像去健身房或骑自行车一样,你必须把它变成一种日常习惯。专注于过程而不是关注结果,随着时间的推移,你将不可避免地取得进步。

相关文章:

学习编程-先改变心态

编程失败的天才 林一和我很久以前就认识了——我从五年级就认识他了。他是班上最聪明的孩子。如果每个人在家庭作业或考试准备方面需要帮助,他们都会去那里。 有趣的是,林一不是那种连续学习几个小时的孩子。 他的聪明才智似乎与生俱来,几乎毫…...

【Node.js】http 模块

1. http 模块 import http from http // 创建本地服务器接收数据 const server http.createServer((req, res) > {console.log(req.url)res.writeHead(200, { Content-Type: application/json // Content-Type: text/html;charsetutf-8 // 将内容以 html 标签和 utf-8 的…...

S/4 HANA 大白话 - 财务会计-2 总账主数据

接下来看看财务模块的一些具体操作。 总账相关主数据 公司每天运转,每天办公室有租金,有水电费,有桌椅板凳损坏,鼠标损坏要换,有产品买卖,有收入。那么所有这些都得记下来。记哪里?记在总账里…...

Redis根据中心点坐标和半径筛选符合的数据

目录 1.启动Redis​编辑 2.导入maven依赖 3.添加redis配置 4.编写RedisService 5.使用 6.验证 1.启动Redis 2.导入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifac…...

springboot 集成 zookeeper 问题记录

springboot 集成 zookeeper 问题记录 环境 springboot - 2.7.8 dubbo - 3.1.11 dubbo-dependencies-zookeeper-curator5 - 3.1.11 模拟真实环境&#xff0c;将 windows 上的 zookeeper 迁移到虚拟机 linux 的 docker 环境 failed to connect to zookeeper server 迁移到…...

java中的接口interface

一、面向对象基本概念 Java是一种面向对象的语言&#xff0c;其中「对象」就相当于是现实世界中的一个个具体的例子&#xff0c;而「类」就相当于是一个抽象的模板&#xff0c;将抽象的概念模板转化为具体的例子的过程就叫做「实例化」。 比如说人这个概念就是一个抽象化的「…...

多个git提交,只推送其中一个到远程该如何处理

用新分支去拉取当前分支的指定commit记录&#xff0c;之后推送到当前分支远程仓库实现推送指定历史提交的功能 1.查看当前分支最近五次提交日志 git log --oneline -5 2.拉取远程分支创建临时本地分支 localbranch 为本地分支名 origin/dev 为远程目标分支 git checkout …...

uniapp中input的disabled属性

uniapp中input的disabled属性&#xff1a; 小程序中兼容性好&#xff1b; 在H5中兼容性差&#xff1b; 在H5中使用uniapp的input的disabled属性&#xff0c;属性值只能是true或false&#xff0c;如果为0&#xff0c; "都会为true&#xff1b; <input class"in…...

Jmeter连接mysql数据库详细步骤

一、一般平常工作中使用jmeter 连接数据库的作用 主要包括&#xff1a; 1、本身对数据库进行测试&#xff08;功能、性能测试&#xff09;时会需要使用jmeter连接数据库 2、功能测试时&#xff0c;测试出来的结果需要和数据库中的数据进行对比是否正确一致。这时候可以通过j…...

Xcode 14.3.1build 报错整理

1、Command PhaseScriptExecution failed with a nonzero exit code 2、In /Users/XX/XX/XX/fayuan-mediator-app-rn/ios/Pods/CocoaLibEvent/lib/libevent.a(buffer.o), building for iOS Simulator, but linking in object file built for iOS, file /Users/XX/XX/XX/fayuan…...

TensorFlow入门(十三、动态图Eager)

一个图(Graph)代表一个计算任务,且在模型运行时,需要把图放入会话(session)里被启动。一旦模型开始运行,图就无法修改了。TensorFlow把这种图一般称为静态图。 动态图是指在Python中代码被调用后,其操作立即被执行的计算。 它与静态图最大的区别是不需要使用session来建立会话…...

批量执行insert into 的脚本报2006 - MySQL server has gone away

数据库执行批量数据导入是报“2006 - MySQL server has gone away”错误&#xff0c;脚本并没有问题&#xff0c;只是insert into 的批量操作语句过长导致。 解决办法&#xff1a; Navicat ->工具 ->服务器监控->mysql ——》变量 修改max_allowed_packet大小为512…...

翻译docker官方文档(残缺版)

Build with docker(使用 Docker 技术构建应用程序或系统镜像) Overview (概述) 介绍&#xff08;instruction&#xff09; 层次结构&#xff08;Layers&#xff09; The order of Dockerfile instructions matters. A Docker build consists of a series of ordered build ins…...

PySpark 概述

文章最前&#xff1a; 我是Octopus&#xff0c;这个名字来源于我的中文名--章鱼&#xff1b;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github &#xff1b;这博客是记录我学习的点点滴滴&#xff0c;如果您对 Python、Java、AI、算法有兴趣&#xff0c;可以关注我的…...

『heqingchun-ubuntu系统下Qt报错connot find -lGL解决方法』

ubuntu系统下Qt报错connot find -lGL解决方法 问题&#xff1a; Qt报错 connot find -lGL collect2:error:ld returned 1 exit status 解决方式&#xff1a; cd /usr/lib/x86_64-linux-gnu查看一下 ls | grep libGLlibGLdispatch.so.0 libGLdispatch.so.0.0.0 libGLESv2.so.…...

代码整洁之道:程序员的职业素养(十六)

辅导、学徒期与技艺 导师的重要性在职业发展中是不可低估的。尽管最好的计算机科学学位教学计划可以提供坚实的理论基础&#xff0c;但面对实际工作中的挑战&#xff0c;年轻毕业生往往需要更多指导。幸运的是&#xff0c;有许多优秀的年轻人可以通过观察和模仿他们的导师来快…...

OSPF的原理与配置

第1章 OSPF[1] 本章阐述了OSPF协议的特征、术语&#xff0c;OSPF的路由器类型、网络类型、区域类型、LSA类型&#xff0c;OSPF报文的具体内容及作用&#xff0c;描述了OSPF的邻居关系&#xff0c;通过实例让读者掌握OSPF在各种场景中的配置。 本章包含以下内容&#xff1a; …...

uni-app : 生成三位随机数、自定义全局变量、自定义全局函数、传参、多参数返回值

核心代码 function generateRandomNumber() {const min 100;const max 999;// 生成 min 到 max 之间的随机整数// Math.random() 函数返回一个大于等于 0 且小于 1 的随机浮点数。通过将其乘以 (max - min 1)&#xff0c;我们得到一个大于等于 0 且小于等于 (max - min 1…...

EF core 如何撤销对对象的更改

一般情况下 DB.SaveChanges() 就可以正常提交更改了. 但是如何撤销更改, 可以使用下面的代码. //撤销更改 //放弃更改. 防止后面的finally出错 DB.ChangeTracker.Entries().Where(e > e.Entity ! null).ToList().ForEach(e > e.State EntityState.Detached);...

以字符串mark作为分隔符,对字符串s进行分割

int main() {string s "How are you?";string mark " ";string tmp;int cur 0, first 0;//找到第一个标记while ((cur s.find_first_of(mark, cur)) ! string::npos){//获取第一个标记前的子串tmp s.substr(first, cur - first);cout << tmp …...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...