不是萌新和不是大神的程序员还应该如何提高自己?

简介: 在编程这条路上,很多人在经历了从菜鸟阶段的入门之后,往往有开始迷茫了,因为此时正处于一个不是萌新,因为很多东西你都会了,但是也不是大神,因为还有很多你都不会的尴尬阶段,觉得学习什么方面都进度比较慢,的确对于编程人员而言都会要经历这个阶段,那么如何才能突破这个阶段的瓶颈,向大神进阶呢?本文就为你分享。

简评:在编程这条路上,很多人在经历了从菜鸟阶段的入门之后,往往有开始迷茫了,因为此时正处于一个不是萌新,因为很多东西你都会了,但是也不是大神,因为还有很多你都不会的尴尬阶段,觉得学习什么方面都进度比较慢,的确对于编程人员而言都会要经历这个阶段,那么如何才能突破这个阶段的瓶颈,向大神进阶呢?本文就为你分享。


想法和问题

当程序员已经处于中级时,应如何提高自己?有很多关于“学习编程”的资源,能够让人从 0 到新手(虽然这些资源中大多数的质量是值得商榷的),但是怎么样才能将中级水平提高到专家级?如何构建允许我在高级别编写代码的心理模型?

在这篇文章中,我将讨论关于普遍性能改进的一些理论,然后讨论一些程序员用于实践的方法(以及我对这些实践的想法),然后是我对改进成为中级或更优秀程序员的最佳方法所作出的结论。

关于普遍性能改进的快速指南
我最近一直在阅读大量关于性能改进的内容,大多数文献使用 K. Anders Ericsson 的研究作为起点。他是性能研究的杰出面代表,几乎在所有涉及这个主题的书中都被引用。他今年发表的书《Peak: Secrets from the New Science of Expertise》,浓缩其 30 多年的研究,易于理解,这也是我推荐给大多数新手的单个最佳资源。

简要总结上下文:
  • 改进任务的执行来自于开发更好的心理模式,更好的心理模式通过有意或有目的的实践。
  • 为了能够实现改进,必须能够定义什么构成改进性能并且分解实现步骤。
  • 实践和性能是不同的,最好的实践方法几乎从不是性能。例如:一个想要提高击中的棒球运动员应该花费 30 分钟在练习场中练习 200 个投球(实践),而不是用 2 个小时去比赛中观看 15 个投球(性能)。


提高方法

我发现人们建议的大多数关于编程的改进方法就是基于性能的。阅读代码,阅读关于代码的内容,编写代码,做项目,谈论代码等等。如果他们在自己的工作之外做这些事情,那么程序员基本上肯定会有所提高,但似乎不是很有效率。

如果我想更擅长于编程,但每周我只想从自己的时间中花几个小时致力于编程呢?什么是建立更佳心理模型的最有效方式,以便于我可以做出更明智的决定? 《Peak》一书中关于刻意实践的一个首选例子是音乐家。想要提高特定乐器的技能或学习一首新的音乐,是有经过定义的,标准化的方式的;包括一个音乐家在几个月的时间里学习一首新音乐的例子——每日只是刻意练习 5 分钟。而在编程中,我们没有大量的明确目标或改进措施(即:在某一段音乐作品的错误的数量),但其他的我发现都没有这个比喻接近。

那么,我们如何得到我们作为程序员的性能反馈循环?是的,我们有特定片段代码的反馈循环,无论代码是否工作,它的性能和健壮性如何等等。我们对于系统的稳健性有一个更长的反馈循环,因为它们在负载下会跌倒或随着时间的推移会变得笨拙。但是我们并不经常得到问题方法的实时反馈。

下面是我用来学习编程的方法,有些地方很不错,也有些地方值得改进:

通过编程挑战实践
我享受于编程挑战,但一般来说,我发现它们不值得去接触一种新的编程语言。它们提供弱反馈循环——你的程序要么产生正确的输出要么不产生——并且不会给你对设计过程的反馈。这个方法可能会介绍一个新的算法或一个你不熟悉的语言的新功能,但在实践方面,很弱。比起“实践”,它更接近于“性能”,并且你处理的是人为的问题,而不是真正的问题。

我发现的一个例外是由 @ericwastl 的 Advent Of Code。编程问题很好地模拟了现实生活中的问题(需求定义明确,但是边缘情况没有写入规范并且必须隐含),并且对于解决方案有多么设计良好具备即时反馈,因为对每个抛出额外需求或一些其他困难的问题有 part 2,这意味着你必须重新评估你的原始解决方案有多少精心设计。这并不完美,但我喜欢看到我的解决方案具有挑战性,并且经常不得不重新考虑我的解决方案的结构和设计,当我达到 part 2 的时候。

做业余项目
做业余项目,如果你有一个的话,将是投入额外编程时间的伟大方式;如果你做一些你喜欢的事情的话,你就不会觉得这像工作。不幸的是,因为项目参差不齐,所以你可能不会真正学到东西。如果你的业余项目与想要学习的编程内容相一致的话,那么恭喜你,这是一个好选择,否则它只是性能 vs 实践的另一个版本。即使在最好的情况下,如果主要目标是生产某种东西,那就意味着实践和学习得排在后面。

阅读关于编程实践的书
阅读编程书籍是一个快速提升知识的很好方式,我认为它应该是几乎任何“提高编程”方案的一部分。然而,它并非是让人能够一劳永逸的银弹。纯粹的知识获取可以帮助你知道有哪些可用的选项,当你碰到某个问题的时候,但知识不能代替更好的心理模型。

最终建议
不幸的是,我没有能够得出具体的结论。也许答案是,需要有编程教练或导师,以便可以得到针对性的反馈和具体的实践建议。也许这学科还太年轻,没有正式的性能改进方法,不像古典音乐训练和运动训练。
在评论中告诉我你的想法。我特别想听听那些通过教学/训练/指导而高水平产出的程序员的看法,或者在这样的老师下学习的人。
如果我对程序员的性能改进有任何更明确的想法,一定会再写一个后续帖子。谢谢阅读。

本文摘自码农网,译者小峰 原文有修改
英文原文:How Does One Improve as an Intermediate Programmer?
相关文章
|
存储 SQL 分布式计算
Fusion Insight大数据平台介绍
1. 概述 华为Fusion Insight是一个分布式数据处理系统,对外提供大容量的数据存储、查询和分析能力。Fusion Insight在Hadoop集群上又封装了一层,类似于开源的CDH,HDP等大数据平台。
6098 0
|
4月前
|
数据采集 人工智能 监控
GEO优化核心:高权重新闻信源筛选与AI收录实战指南
在 GEO(搜索引擎地理优化)实操中,新闻信源的质量直接影响内容的 AI 收录率、关键词排名及转化效果。多数开发者面临两大核心问题:1. 低价值信源浪费成本:部分新闻平台价格低廉(30-50 元 / 篇),但发布后未被 AI 抓取,无法为 GEO 排名提供权重支撑;2. 广告属性触发审核拒绝:含联系方式(电话、微信号)的软文易被平台判定为广告,导致审核驳回,影响发布效率。
|
4月前
|
Ubuntu Linux 开发工具
掌握Ubuntu编辑器命令模式(Vim命令模式完全入门指南)
教程来源https://www.vpshk.cn/本文详解Ubuntu下Vim编辑器的命令模式,介绍其核心操作与三种模式切换方法,提供常用快捷键速查表,并通过实战示例帮助零基础用户快速掌握高效文本编辑技巧,提升Linux系统操作效率。
|
9月前
|
存储 关系型数据库 MySQL
Django模型开发:模型字段、元数据与继承全方位讲解
本文将全面介绍 Django 模型的关键知识点,包括模型字段类型、映射、常用配置选项以及模型继承等高级特性,帮助开发者快速掌握模型设计与使用技巧。
320 0
|
11月前
|
测试技术 持续交付 开发工具
吞噬混沌:CodeBuddy与流程利刃,斩破游戏开发的蛮荒时代(二)
本文参加CodeBuddy「首席试玩官」大赛,探讨游戏开发流程规范与智能工具赋能。文章涵盖质量保障体系(每日构建、代码审查、测试会议)、开发工具链、紧急情况处理(热修复与回滚机制)及代码风格指南。重点介绍CodeBuddy在各环节的作用:优化构建、智能评审、加速修复、保障风格一致等。作为贯穿生命周期的智能助手,CodeBuddy连接工具链、提升效率、沉淀经验,助力团队实现高质量开发目标。未来游戏开发需结合规范与技术,CodeBuddy将成为不可或缺的智能向导。
523 7
|
弹性计算 Linux 数据安全/隐私保护
阿里云幻兽帕鲁联机服务器搭建全攻略,速来抄作业!2025新版教程
阿里云提供2025年最新幻兽帕鲁服务器申请购买及一键开服教程。4核16G配置支持8人,70元/月;8核32G配置支持20人,160元/月。选择配置、地域、操作系统后,点击【一键购买及部署】,约3分钟完成创建。本地安装STEAM客户端并登录,进入游戏选择多人模式,输入服务器IP和端口(8211),即可开始游戏。详细教程及更多问题解答请参考阿里云幻兽帕鲁游戏专区。
675 20
|
Java 测试技术
5分钟使用Moodle搭建在线学习管理
Moodle 是以课程为中心的组织模式,围绕课程的创建、关联老师和学生,开展教学和学习活动,来构建强大的在线学习管理平台。Moodle 通过对课程关联资源和活动,来设置课程的PPT、视频等教学资源和作业、考试、反馈等教学活动。Moodle 还有提供很多实用的功能,如更多的系统选项、课程能力模型、成绩报告及更多的课程活动等。
|
机器学习/深度学习 人工智能 前端开发
阿里巴巴D2 前端论坛最全视频来了!(附PPT下载) | 6大专题持续更新
D2 前端技术论坛 (Designer & Developer Frontend Technology Forum, 简称 D2),是由阿里经济体前端委员会主办的面向全球前端领域的技术论坛,立志于建设一个促进业内交流、引领前端领域发展的平台。目前 D2 已经成功地举办了13届,为国内外前端领域的开发者和设计者提供了共同探讨行业发展的机会,以技术会友、一起分享技术的乐趣。
27137 0
阿里巴巴D2 前端论坛最全视频来了!(附PPT下载) | 6大专题持续更新
|
人工智能 自然语言处理 知识图谱
K-BERT | 基于知识图谱的语言表示模型
K-BERT | 基于知识图谱的语言表示模型
765 0
K-BERT | 基于知识图谱的语言表示模型
|
存储 SQL 缓存
数据库:SQLServer中in和 exists函数用法笔记
今天给大家分享一下SQLServer中in和 exists 用法,希望能对大家有所帮助。
数据库:SQLServer中in和 exists函数用法笔记

热门文章

最新文章