作为程序员,该如何提升自己的编程水平?

2023-10-27

1500字3个角度说明如何提升编程水平。

一、如果你是初学者,这几个方法给你:

1.1 刻意练习

在编写代码之前,首先我们可以先了解这门编程语言的基本用法和常用的概念,编写基本的程序。

一般来说敲代码是步骤是:明确需求——设计程序——编写代码——完善程序,在这个过程中我们可以设定明确的目标,在开始练习之前,确定你想要实现的具体任务,例如实现一个算法,设计一个应用程序,或者解决一个编程问题。将目标写下来,可以让你更清晰地了解需要完成的任务,并且可以跟踪你的进展。

1.2 看视频编程

看视频也是一个不错的编程方式,初学者可以通过视频入门,知道我们学的是什么?怎么安装、怎么用?看完一遍视频后,边敲边思考,多去手动尝试,减少路径依赖。

  • 从优质的在线教育平台(如Coursera、Udemy、edX等)或开发者社区(如YouTube、Twitch等)中找到适合自己的编程视频。最好选择与自己所学语言和技能水平相符的视频。
  • 安排好学习时间,可以将学习时间分为较小的时间块,以便更好地掌握内容。也可以尝试在每天的特定时间段进行学习,以建立良好的学习习惯。

1.3 读纸质书籍

读书不在多,而在精。往往有那么几本书,可以深刻地影响我们:

  • 读了之后可以引发我们的兴趣
  • 读了之后可以打通我们对某一块知识的理解
  • 读了之后可以提高我们的认知
  • 读了之后能让我们快速入门

......

类似这样的书其实很多,可能一开始我们由于我们的知识体系还不够完善,这导致我们并不能完全无头,可以多读几遍。当我们的知识体系在不断完善的过程当中,这时候再去看之前一些看不懂的内容,可能就看懂了。

二、不知道怎么进阶,这几个方向给你:

2.1 重视计算机基础

具体相关的计算机专业课程无外乎就是那么几门:《C/C++程序设计基础》、《数据结构》、《算法分析和设计》、《汇编语言程序设计》、《计算机网络》、《操作系统》、《数据库系统》、《编译原理》等等。

要知道真正拉开差距的都是计算机基础,如果你有时间,可以抓紧学习专业课。

2.2 积攒项目经验

为什么要做项目呢,因为一个完整的项目是可以比较系统的,是一个可以把理论付诸实践的机会,从某种程度上讲,做一个或大或小的项目,能起到正向激励的作用。

例如,学完 前端课程后,是不是也可以自己来搞个小网站呢?再比如,学了 Java Web 开发,是不是可以搞个类似的图书管理系统呢?

2.3 勤思考、多总结

不管是编码类的技术基础学习成长,还是相对抽象的问题解决,还是技术领导力成长。只要是成长,只要能够抓住这两个关键就一定能够成功。

第一个就是反思,能够敏锐地反思自己的不足,然后不断去修正自己的心态和行为让自己蜕变。

第二个就是总结,总结的过程是不断梳理自己的过程,把自己迷迷糊糊,是是而非的东西分类归类,而且总结越多就能够用好时间的复利,就能够越促进成长。

三、工作后的提升也很重要

3.1 重构

已经工作的程序员可以考虑重构,可以重构别人的,也可以重构自己的代码,每次做完都有不一样的收获。

重构时,我们会去思考模块设计的不足:

  • 逻辑是否有漏洞
  • 模块是否高内聚
  • 是否与其它模块有较强的耦合
  • 是否方便维护与扩展
  • 分层是否合理
  • 是否有冗余代码
  • 编码是否规范
  • 命名是否清晰
  • 注释是否完善
  • 是否还有更好地实现方法
  • 是否有与其它模块公用一些数据
  • 各模块交互的数据能否更简练

……

在工作中重构的机会是非常少的,一般只有这两种情况:现有方案漏洞太大或项目更迭改动太大,所以大家一定要珍惜每一次重构的机会。

3.2 不要局限于当前项目

很多时候大家都是根据公司的业务来实践,这导致我们不可能处处都参与,我们经常去一个正在进行的项目,但我们从来没有机会从开头来配置我们的项目,创建应用程序的基础,或影响架构。

在特定的框架内行动,往往会掩盖我们的灵感。所以我们可以创建自己的小项目,选择相应的语言、技术、框架,从0开始搭建。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

作为程序员,该如何提升自己的编程水平? 的相关文章

  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab
  • 在文本文件中写入多行(java)

    下面的代码是运行命令cmd并使用命令行的输出生成一个文本文件 下面的代码在 Eclipse 的输出窗口中显示了正确的信息 但在文本文件中只打印了最后一行 谁能帮我这个 import java io public class TextFile
  • 比较两个文本文件的最快方法是什么,不将移动的行视为不同

    我有两个文件非常大 每个文件有 50000 行 我需要比较这两个文件并识别更改 然而 问题是如果一条线出现在不同的位置 它不应该显示为不同的 例如 考虑这个文件A txt xxxxx yyyyy zzzzz 文件B txt zzzzz xx
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • Calendar.getInstance(TimeZone.getTimeZone("UTC")) 不返回 UTC 时间

    我对得到的结果真的很困惑Calendar getInstance TimeZone getTimeZone UTC 方法调用 它返回 IST 时间 这是我使用的代码 Calendar cal Two Calendar getInstance
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • Java 中的“Lambdifying”scala 函数

    使用Java和Apache Spark 已用Scala重写 面对旧的API方法 org apache spark rdd JdbcRDD构造函数 其参数为 AbstractFunction1 abstract class AbstractF
  • 如何在 Java 中测试一个类是否正确实现了 Serialized(不仅仅是 Serialized 的实例)

    我正在实现一个可序列化的类 因此它是一个与 RMI 一起使用的值对象 但我需要测试一下 有没有办法轻松做到这一点 澄清 我正在实现该类 因此在类定义中添加 Serialized 很简单 我需要手动序列化 反序列化它以查看它是否有效 我找到了
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • Jersey 客户端请求中未设置 Content-Length-Header

    我正在使用 Jersey Client 访问网络服务 如下所示 response r accept MediaType TEXT PLAIN TYPE header content length 0 post String class 其中
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 如何从 Maven 存储库引用本机 DLL?

    如果 JAR 附带 Maven 存储库中的本机 DLL 我需要在 pom xml 中放入什么才能将该 DLL 放入打包中 更具体地举个例子Jacob http search maven org artifactdetails 7Cnet s

随机推荐

  • 学习Go语言中的文件操作函数并实现文件的压缩加密上传功能

    学习Go语言中的文件操作函数并实现文件的压缩加密上传功能 近年来 随着互联网的发展和数据的爆炸增长 文件的传输和存储变得越来越重要 在处理大量文件时 很多开发者可能会面临文件压缩 加密和上传的需求 而Go语言作为一门功能强大且高效的编程语言
  • 【转载】《IT经理世界》:腾讯的瓶颈

    腾讯网科技中心总监程苓峰曾在 IT经理世界 上发表过一篇文章 腾讯的瓶颈 通过与分析师对话的形式 分析了腾讯当前所面临发展瓶颈 并表示 在领先业务上 腾讯擅长的微创新没问题 但在一个新业务上面对领先对手 就需要革命式创新 微创新不管用 全文
  • Java基于百度API的图片文字识别

    使用之前需要获取对应的项目API KEY SECRET KEY 这些参数在使用API的时候必须用到 用于生成access token 如何获取这些参数 在百度开发者中心申请一个 通用文字识别 项目 然后就可以获取到这些参数 十分钟快速教程
  • gradle构建 程序包com.sun.image.codec.jpeg不存在,解决方法

    Gradle构建错误 程序包com sun image codec jpeg不存在 D Projects EclipseProjects JavaDog sample y2018 date0912 批量下载 DpiUtil java 12
  • 面试官:HashMap 为什么选用红黑树这种数据结构优化链表?

    文章目录 前言 自平衡二叉查找树 Self Balancing Binary Search Tree AVL 红黑树 R B Tree AVL与红黑树异同 应用场景 前言 关于HashMap的详解文章请移步 深度剖析HashMap一篇文章就
  • Linux--shell--3--()、(())、[]、[[]]、{}

    一 小括号 圆括号 1 单小括号 命令组 括号中的命令将会新开一个子shell顺序执行 所以括号中的变量不能够被脚本余下的部分使用 括号中多个命令之间用分号隔开 最后一个命令可以没有分号 各命令和括号之间不必有空格 命令替换 等同于cmd
  • 二级索引查询注意事项(2)--单表访问方法(三十七)

    前面说了explain参数的type代表访问数据库的方法 如果用主键和唯一二级索引 测试最快的const方法 若用普通索引 则是ref 还有ref or null range是代表区间查询 若用index则代表查询联合索引的非最左边索引 最
  • 3D建模Cocos Creator3D:发射器模块(ShapeModule)

    推荐 将 NSDT场景编辑器 加入你的3D工具链 3D工具集 NSDT简石数字孪生 发射器模块 ShapeModule 公有属性 属性 作用 position 相对于挂载节点的位置 rotation 相对于挂载节点的旋转 scale 相对于
  • 软件测试银行金融项目如何测?看看资深测试老鸟的总结,一篇足够...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • iOS GitHub上排名前 100 的 Objective-C 项目简介

    主要对当前 GitHub 排名前 100 的项目做一个简单的简介 方便初学者快速了解到当前 Objective C 在 GitHub 的情况 GitHub 地址 https github com Aufree trip to iOS blo
  • 关于Unity创建项目时进度栏一直不动的问题

    关于Unity创建项目时进度栏一直不动的问题 近日在使用UNity过程中 创建一个新项目时 一直在转圈圈 是魔力转圈圈 一时半解不知是何原因 因为没有任何的提示 没有找到报错 关闭UNity Hub后 再次重启仍然会有这个问题出现 看了看项
  • Flink1.16 on Yarn hadoop3.1.1 提交任务失败解决

    一 背景 项目基于华为 mrs 平台 hadoop3 1 1 想升级 flink client 客户端从 1 11 0 到 1 16 0 1 11 0 已经用了两年了 flink 已经发布到了1 17 增加了很多新特性 速度和稳定性都会更好
  • 二叉链表实现二叉树

    1 题目描述 编写一个二叉链表类 试写出求二叉树结点数目和二叉树叶子节点的数目 只要写二叉链表的前序输入 先序中序后序输出 求节点数目和求叶子节点数目的方法 2 设计思路 二叉树一般多采用二叉链表 binary linked list 存储
  • 【101】西门子S7-200说明介绍

    一 西门子S7 200概述 SIMATIC S7 200 Micro 自成一体 结构紧凑 性能良好 功能强大 多种通讯方案 并且具有操作简便的硬件和软件 当然还有更多特点 SIMATIC S7 200 Micro PLC具有统一的模块化设计
  • 程序员提高代码能力的方法看这一篇就够了

    程序员的代码能力其实不应该仅仅局限于代码本身 而是围绕写出好代码所需的综合能力 你可以从以下几个能力维度谈谈如何提高代码能力 一 计算机基础知识 作为程序员 需要具备以下计算机基础知识 1 数据结构和算法 这是编写高效代码的基础 程序员需要
  • NMOS和PMOS使用总结

    MOS管应用电压的极性和我们普通的晶体三极管相同 N沟道的类似NPN晶体三极管 漏极D接正极 源极S接负极 栅极G正电压时导电沟道建立 N沟道MOS管开始工作 同样P道的类似PNP晶体三极管 漏极D接负极 源极S接正极 栅极G负电压时 导电
  • SVC分类经典Iris数据集

    今天做了一个用SVC分类经典Iris数据集的训练 在数据预处理上出了点奇怪的岔子 对原始数据中的string转到float这步一直不成功 转换函数没错 用的是load txt里面的converters 一直报错 但是被我机智 愚蠢 地手动处
  • Tomcat安装部署及多实例部署介绍

    Tomcat 一 Tomcat相关简介 二 Tomcat安装 三 多实例 一 Tomcat相关简介 1 Tomcat简介 Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个servelet容器 按照Sun micros
  • word如何首页和目录不编辑页码

    按照下面的方法 从第二页或者是需要的地方设置页码即可 页码从任意页开始 1 将光标定位于需要开始编页码的页首位置 2 选择 插入 分隔符 打开 分隔符 对话框 在 分隔符类型 下单击选中 下一页 单选钮 3 选择 视图 页眉和页脚 并将光标
  • 作为程序员,该如何提升自己的编程水平?

    1500字3个角度说明如何提升编程水平 一 如果你是初学者 这几个方法给你 1 1 刻意练习 在编写代码之前 首先我们可以先了解这门编程语言的基本用法和常用的概念 编写基本的程序 一般来说敲代码是步骤是 明确需求 设计程序 编写代码 完善程