程序员是怎么记住代码的?
程序员能记住所有东西吗?
程序员不会记住他们使用的所有代码,相反,他们倾向于阅读文档,学习基本概念,并使用软件社区来解决问题。大约55%的软件开发人员报告每天至少使用一次StackOverflow来帮助解决编程问题。
使用死记硬背的学习来尝试用心记住所有内容在软件开发中是不切实际的。技术格局变化太频繁,无法尝试记住每一段语法或特定功能。有太多的语言,每种语言都有其怪癖,无法简单地记住您使用的所有内容的内部工作原理。
但是,如果程序员不记住所有内容,他们会做什么呢?让我们来看看软件工程师避免背诵学习东西的三种主要方法。
概念
无论您是自学成才、新兵训练营还是大学毕业生,每位导师或教程都会尝试将这些概念带回家。充分了解软件的基本原理可以更轻松地应用于各种不同的情况。从长远来看,它还使您成为更好的问题解决者和全能软件工程师。
人们经常指出自闭症程序员的盛行,以此来解释开发人员如何能够记住这么多。然而,现实情况是,他们只是对编程的基本原则有很好的掌握,并且非常了解特定语言的怪癖。
从长远来看,作为一名软件工程师,掌握基础知识将为你提供非常好的服务,这意味着你可以避免记住代码。
文档
一般来说,最常用的库和框架都有非常好的文档记录。文档使您的生活更轻松,并且通常是解决您遇到的简单问题的快速方法,尤其是在项目的早期。
入门可能很困难,有时需要大量样板代码。文档意味着您不必记住这些东西,可以直接从创建者那里获得它。
有了好的文档,就不需要使用死记硬背来记住你正在使用的代码。这一切都在那里供你使用,通常由你打算使用其代码的人制作。
堆栈溢出
堆栈溢出是互联网上最有用的资源之一。超过 80% 的开发人员每周至少使用该资源几次。如果你曾经在Google中输入过编码问题,毫无疑问,你会从StackOverflow社区得到答案。
这种发展驱动型环境的美妙之处在于,许多人已经面临同样的问题。它的社区性质意味着人们发布多种方法来解决同一问题,然后最好的方法被投票。因此,程序员不必记住代码,而是可以使用和调整现有的答案。
编码人员必须记住代码吗?
记住代码不是程序员为了做好他们的工作而必须做的事情。事实上,情况正好相反。最好的软件开发人员是了解底层算法的出色问题解决者,而不是可以喋喋不休地完成特定代码或语法行的机器人。
软件工程师不必记住代码就有机会在该领域取得进展。现实情况是,这不会影响你找到工作的机会,也不会影响你在未来五年内能去哪里。
基本原则
虽然编码人员不必记住代码,但强烈建议他们很好地掌握他们使用的技术的基本原理。了解某些语言的特性将帮助您更好地编写并更快地调试问题。
一旦你确定了原则,那就是一个完美的实践案例。长时间使用特定的语言或框架可以让你有一定的流利程度。不幸的是,获得这种流利程度的唯一方法是投入时间并学习基础知识。
相比之下,试图记住一切意味着你不太可能有效和高效地使用你的知识来解决手头的问题。
熟悉
观看更有经验的开发人员通常会让初级人员产生敬畏感。它们的速度和准确性有时令人恐惧。更不用说一些软件开发人员可以键入解决方案的速度了。
然而,这一切都来自熟悉。了解您正在使用的语言以及如何应用它需要时间。有经验的程序员以前会犯过成千上万的错误。但是使用迭代学习过程,他们会变得更好,并且不会再以同样的方式滑倒。
复制代码
许多开发人员远非记住代码,而是重用他们的代码或从其他人那里复制代码。如果您已经在另一个代码库中解决了特定问题,那么采用现有代码并重新调整其用途是有意义的。
当您可以从现有项目中复制和粘贴语法时,记住语法是没有意义的。我警告这一点,你永远不应该复制或使用你不理解的代码。这是许多新开发人员都会犯的错误,不会帮助您成为更好的开发人员。重用代码只有在您熟悉代码时才有意义。
程序员如何记住代码?
程序员不倾向于记住他们学到的每一件事,相反,他们熟悉核心编程概念,然后将这些概念应用于他们学习的各种语言。程序员记住的事情是通过以下方式学习的:
- 不可思议的实践
- 指导他人
- 发表演讲和撰写文章
- 回忆练习
- 阅读文档
- 笔记
没有一种方法可以记住您作为软件开发人员学到的东西。采用不同的方法是获取信息的最佳方式。让我们探讨一下程序员记住他们所学东西的几种不同方式。
实践
日复一日地担任软件工程师可以让您最大程度地接触语言或框架。这是熟悉一般概念和编程特定挑战的最佳方式。
指导
一旦你达到一定水平,指导初级开发人员几乎是理所当然的。这样做的好处是,当你教别人时,学习变得更加巩固。指导迫使你简单易懂地解释事情。它可以帮助您将学习提炼成一口大小的块,您可以为他人提供。
发表演讲和撰写文章
许多公司通过让个人将他们的学习成果反馈给更广泛的团队来促进学习。创建演示文稿或撰写文章的过程使您可以更深入地研究某个主题并尝试将其提炼下来。在整个过程中,您可以更好地了解要向所有人展示的内容。
这个网站上的很多文章都是相同的。我们找到主题并对其进行研究,这有助于巩固我们对主题的理解。
回忆练习
虽然这些练习并非在所有软件社区中都很流行,但回忆练习对于记住代码非常有用。Leetcode和Hackerank被顶级科技公司用来招聘,许多开发人员研究了这些平台几个月。他们可能没有总是适用于现实世界工作的问题,但它们可以让您很好地了解如何解决特定问题。
文档
文档是快速掌握新语言、框架或包的好方法。它是许多广泛使用的编码解决方案之间的成败。它是一种重要的资源,可用于帮助您记住系统的某些怪癖。除此之外,文档中还提供了许多最基本问题的答案。
笔记
近年来,手写笔记已经过时了。但是,保留您的学习记录并写下某些内容以供以后参考是有意义的。我的意思不是复制和粘贴代码以重用。但是,记录您的学习涉及我们上面已经提到的几点。
我个人使用Concept,它很棒。它消除了记笔记的所有痛苦,同时提供了一些非常高级的功能,如数据库和发布到网络。
如何记忆代码?4个很棒的提示
记住代码具有挑战性,因为它既需要理解代码,又需要将其提交到内存中。
我不建议专门尝试记住代码,因为一旦你开始理解基本概念并有足够的练习,它就会自然而然地出现。但是,这里有一些关于如何更好地记忆代码的提示:
- 了解代码:在尝试记忆代码之前,您必须清楚地了解代码在做什么。这意味着通读代码和任何文档以了解每行代码在做什么。
- 分解一下:与其试图一次记住一大块代码,不如尝试将其分解为更小、更易于管理的部分。专注于记住特定的函数或类,然后从那里开始构建。
- 可视化代码: 尝试在你的脑海中创建一个代码的心智模型。这可以帮助您更有效地记住代码,因为您将代码与视觉提示相关联。创建心智模型也将帮助您更好地理解基本概念。
- 实践: 最后,练习是记忆代码最重要的方面。编写的代码越多,就越容易将其提交到内存中。
相关文章:

程序员是怎么记住代码的?
程序员能记住所有东西吗? 程序员不会记住他们使用的所有代码,相反,他们倾向于阅读文档,学习基本概念,并使用软件社区来解决问题。大约55%的软件开发人员报告每天至少使用一次StackOverflow来帮助解决编程问题。 使用…...
华为云NFS使用API删除大文件目录
最近在使用华为云SFS时,如果一个目录存储文件数超过100W,执行 “rm -rf path”时,存在删不动的情况,可以使用华为云API接口,执行异步删除。 华为官网: 删除文件系统目录_弹性文件服务 SFS_API参考_SFS Tu…...

国家金融监督管理总局明确将数据安全管理纳入操作风险管理范畴
为进一步完善银行保险机构操作风险监管规则,提升银行保险机构的操作风险管理水平,国家金融监督管理总局起草了《银行保险机构操作风险管理办法(征求意见稿)》(以下简称《办法》),现向社会公开征…...

.asScala爆红
转载:asScala报错 解决方案: 导入隐式转换 import scala.collection.JavaConverters._ //asScala需要使用隐式转换 代码中的asScala就可能不标红了,如果标红,就直接去掉,去掉就不报错了...

SOLIDWORKS Utilities应用
在实际的生产设计制造中,经常会遇到同一个零件多个版本,有可能再次调用零件的时间已经是很长时间之后,对于版本之间的区别就不会那么清楚,碰到简单明显的零件还可以轻松的找到区别,但是复杂的零件区别的查找可能会造成…...

发现的宝藏开源软件
1.华夏erp https://github.com/jishenghua/jshERP 2.s2b2c商城 后端 lilishop商城 电商 java商城系统: lilishop商城基于SpringBoot 全端开源 电商商城系统 支持小程序商城 H5商城 APP商城 PC商城 。支持业务模式包含 O2O商城 B2B商城 多语言商城 跨境电商 B2B2C商城 F2B2C商…...

【八】mybatis 日志模块设计
mybatis 日志模块设计 简介:闲来无事阅读一下mybatis的日志模块设计,学习一下优秀开源框架的设计思路,提升自己的编码能力 模块设计 在Mybatis内部定义了4个级别:Error:错误 、warn:警告、debug:调试、trance,日志优…...

Python-如何使用正则表达式
如何利用Python使用正则表达式 目录 正则表达式常用匹配规则 编辑re库的使用 match()方法: search()方法: findall()方法 : sub()方法: compile()方法; 通用匹配 贪婪与非贪婪匹配 贪婪匹配 非贪婪匹配 修饰符 转义匹配 正则表达式是处理字符的强大…...

分解质因子,将一个不小于2的整数分解质因数,例如,输入90,则输出:90=2*3*3*5
假设一个不小于2的整数n,对从2开始的自然数k,这个试探它是否是整数n的一个因子,如果是,则输出该因子,并将n/k的结果赋给n(接下来只需要对n除以已经找到的因子之后的结果继续找因子)。如果n的值不…...

C语言,vs各种报错分析(不断更新)
1.引发了异常: 写入访问权限冲突2.#error: Error in C Standard Library usage 1.引发了异常: 写入访问权限冲突 这里是malloc没有包含头文件<stdlib.h>,包含之后就好了 2.#error: Error in C Standard Library usage 这里就是用C语言写程序时使用了C的头文件…...

AR开发平台 | 探索AR技术在建筑设计中的创新应用与挑战
随着AR技术的不断发展和普及,越来越多的建筑师开始探索AR技术在建筑设计中的应用。AR(增强现实)技术可以通过将虚拟信息叠加到现实场景中,为设计师提供更加直观、真实的建筑可视化效果,同时也可以为用户带来更加沉浸式的体验。 AR开发平台广…...

小白到运维工程师自学之路 第六十集 (docker的概述与安装)
一、概述 1、客户(老板)-产品-开发-测试-运维项目周期不断延后,项目质量差。 随着云计算和DevOps生态圈的蓬勃发展,产生了大量优秀的系统和软件。软件开发人员可以自由选择各种软件应用环境。但同时带来的问题就是需要维护一个非…...

SpringBoot 集成 Elasticsearch
一、版本 spring-boot版本:2.3.7.RELEASEElasticsearch7.8.0版本说明详见 二、Elasticsearch 下载和安装 Elasticsearch 下载 kibana下载 ik分词器下载 配置IK分词器 2.1 解压,在elasticsearch-7.8.0\plugins 路径下新建ik目录 2.2 将ik分词器解压放…...

【ES】使用日志记录
1、修改操作 1、要删除Elasticsearch索引的分区下的数据 <index_name>是要删除数据的索引名称。这个命令会删除该索引下的所有数据。 POST /<index_name>/_delete_by_query {"query": {"match_all": {}} }2、删除特定条件下的数据 要删除a…...

svn还原本地代码
svn代码还原 问题描述:在vscode中修改了代码,没有提交,而且不小心点击了svn更新,导致本地修改的最新代码被覆盖,因为没有提交,所以远程仓库中也没有刚才修改的代码记录 解决: 通过vscode的时间…...

zore-shot,迁移学习和多模态学习
1.zero-shot 定义:在ZSL中,某一类别在训练样本中未出现,但是我们知道这个类别的特征,然后通过语料知识库,便可以将这个类别识别出来。概括来说,就是已知描述,对未知类别(未在训练集中…...

【Golang 接口自动化07】struct转map的三种方式
目录 背景 struct转map 使用json模块 使用reflect模块 使用第三方库 测试 总结 资料获取方法 背景 我们在前面介绍过怎么使用net/http发送json或者map数据,那么它能不能直接发送结构体数据呢?我们今天一起来学习结构体struct转map的三种方法&am…...

华为数通HCIA-网络模型
TCP 网络通信模式 作用:指导网络设备的通信; OSI七层模型: 7.应用层:由应用层协议(http、FTP、Telnet.)为应用程序产生对应的数据; 6.表示层:将应用层产生的数据转换成网络设备看…...

端口的解说
端口的定义 端口是指计算机与外部交互的出入口,可以按照所见性分为物理端口和虚拟端口 物理端口: USB、HDMI、PDP、VGA、CUP等虚拟端口:mysql——>25, ssh——>22 、http——>80 、https——>443等 IP地址只能锁定到计算机&am…...

“深入了解Spring Boot: 快速构建微服务应用的利器“
标题:深入了解Spring Boot: 快速构建微服务应用的利器 摘要: Spring Boot是一个基于Spring框架的开发工具,旨在提供快速、方便地构建微服务应用。本文将深入探讨Spring Boot的特点和优势,以及如何使用示例代码构建一个简单的微服…...

华为OD机试 Java 实现【批量处理任务】【2023 B卷 200分】,二分查找
目录 专栏导读一、题目描述二、输入描述三、输出描述四、二分查找五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(…...

C# 2的幂
231 2的幂 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1: 输入:n 1 输出&a…...

linux vi指令大全
vi 使用以及快捷键 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其…...

jdk8使用okhttp发送http2请求
本文主要用于工作记录,在项目中遇到了就记录一下 在早期,原生的JDK8是不支持HTTP/2协议的,所以,要想使用这个特性,需要有web服务器和应用环境的支持, 例如:在VM中增加-Xbootclasspath/p:/Users…...

virbr是什么设备
virbr是什么设备 virbr是一个虚拟桥接网络设备,通常由虚拟机管理程序(如 KVM、VirtualBox 或者 libvirt 等)创建和管理。它用于在宿主机和虚拟机之间进行网络连接,以便虚拟机可以通过宿主机访问网络。 默认情况,libv…...

MyBatis缓存-提高检索效率的利器--二级缓存
文章目录 缓存-提高检索效率的利器缓存-官方文档二级缓存基本介绍二级缓存原理图 二级缓存快速入门快速入门注意事项和使用陷阱理解二级缓存策略的参数 四大策略如何禁用二级缓存mybatis 刷新二级缓存的设置 缓存-提高检索效率的利器 缓存-官方文档 文档地址: https://mybati…...

开心档之CSS !important 规则
CSS !important 规则 CSS !important 规则 CSS是网页中最常用的样式语言,用来改变网页的颜色、字体、布局等等。但是当多个样式规则作用于同一个元素上时,由于优先级的差异,可能会出现样式被覆盖的情况。为了解决这个问题,CSS中提…...

深入篇【C++】手搓模拟实现list类(详细剖析底层实现原理)模拟实现正反向迭代器【容器适配器模式】
深入篇【C】手搓模拟实现list类(详细剖析底层实现原理)&& 模拟实现正反向迭代器【容器适配器模式】 Ⅰ.迭代器实现1.一个模板参数2.两个模板参数3.三个模板参数 Ⅱ.反向迭代器实现1.容器适配器模式 Ⅲ.list模拟实现1.定义结点2.封装结点3.构造/拷贝4.迭代器…...

OnTrigger的几种情况
在Unity中,OnTrigger是一种用于处理碰撞事件的函数。它通常用于监测对象之间的触发器(Collider)交互,并在特定的情况下触发相应的逻辑。在Unity中,有以下几种类型的OnTrigger事件:OnTriggerEnter、OnTrigge…...
地产变革中,物业等风来
2023年7月,也许是中国房地产行业变局中的一个大拐点。 中信建投研报表示,政治局会议指出当前我国房地产形势已发生重大变化,要适时调整优化政策,为行业形势定调……当前房地产行业β已至。 不久前,国家统计局公布了2…...