学习编程-先改变心态
编程失败的天才
林一和我很久以前就认识了——我从五年级就认识他了。他是班上最聪明的孩子。如果每个人在家庭作业或考试准备方面需要帮助,他们都会去那里。
有趣的是,林一不是那种连续学习几个小时的孩子。
他的聪明才智似乎与生俱来,几乎毫不费力。他只需阅读或听到一个概念一次,就可以轻松地将其内化。
完成学业后,林一继续获得英国最负盛名的大学之一的奖学金。当我不久前和他交谈时,他告诉我他打算学习编程,因为他想成为一名软件工程师。
然而就在两个月后,林一告诉我他的计划发生了变化。他不再想成为一名软件工程师,因为编程“不适合他”。
当他告诉我这件事时,我大吃一惊。
班里的天才觉得编程太难了?
与此同时,我注意到许多在学校平均成绩为 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 模拟真实环境,将 windows 上的 zookeeper 迁移到虚拟机 linux 的 docker 环境 failed to connect to zookeeper server 迁移到…...

java中的接口interface
一、面向对象基本概念 Java是一种面向对象的语言,其中「对象」就相当于是现实世界中的一个个具体的例子,而「类」就相当于是一个抽象的模板,将抽象的概念模板转化为具体的例子的过程就叫做「实例化」。 比如说人这个概念就是一个抽象化的「…...
多个git提交,只推送其中一个到远程该如何处理
用新分支去拉取当前分支的指定commit记录,之后推送到当前分支远程仓库实现推送指定历史提交的功能 1.查看当前分支最近五次提交日志 git log --oneline -5 2.拉取远程分支创建临时本地分支 localbranch 为本地分支名 origin/dev 为远程目标分支 git checkout …...
uniapp中input的disabled属性
uniapp中input的disabled属性: 小程序中兼容性好; 在H5中兼容性差; 在H5中使用uniapp的input的disabled属性,属性值只能是true或false,如果为0, "都会为true; <input class"in…...

Jmeter连接mysql数据库详细步骤
一、一般平常工作中使用jmeter 连接数据库的作用 主要包括: 1、本身对数据库进行测试(功能、性能测试)时会需要使用jmeter连接数据库 2、功能测试时,测试出来的结果需要和数据库中的数据进行对比是否正确一致。这时候可以通过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”错误,脚本并没有问题,只是insert into 的批量操作语句过长导致。 解决办法: Navicat ->工具 ->服务器监控->mysql ——》变量 修改max_allowed_packet大小为512…...

翻译docker官方文档(残缺版)
Build with docker(使用 Docker 技术构建应用程序或系统镜像) Overview (概述) 介绍(instruction) 层次结构(Layers) The order of Dockerfile instructions matters. A Docker build consists of a series of ordered build ins…...

PySpark 概述
文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的…...
『heqingchun-ubuntu系统下Qt报错connot find -lGL解决方法』
ubuntu系统下Qt报错connot find -lGL解决方法 问题: Qt报错 connot find -lGL collect2:error:ld returned 1 exit status 解决方式: cd /usr/lib/x86_64-linux-gnu查看一下 ls | grep libGLlibGLdispatch.so.0 libGLdispatch.so.0.0.0 libGLESv2.so.…...
代码整洁之道:程序员的职业素养(十六)
辅导、学徒期与技艺 导师的重要性在职业发展中是不可低估的。尽管最好的计算机科学学位教学计划可以提供坚实的理论基础,但面对实际工作中的挑战,年轻毕业生往往需要更多指导。幸运的是,有许多优秀的年轻人可以通过观察和模仿他们的导师来快…...

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

uni-app : 生成三位随机数、自定义全局变量、自定义全局函数、传参、多参数返回值
核心代码 function generateRandomNumber() {const min 100;const max 999;// 生成 min 到 max 之间的随机整数// Math.random() 函数返回一个大于等于 0 且小于 1 的随机浮点数。通过将其乘以 (max - min 1),我们得到一个大于等于 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 …...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...