为啥很多人觉得编程难学?

看到推特上网友菜脯写的一条推文:

菜脯:我大概知道,为啥很多人觉得编程难学了。

因为对我来说,编程过程就是 看资料------开始写------遇到问题------查资料------解决问题------继续写------继续遇问题------继续查资料........

这个循环似乎会一直持续下去,不像有些工作,难度会逐步收敛,要一直一直动脑子,太难了 😂

不知道是我菜,还是大佬们也会这样。

看起来你是在写程序,其实你做的是产品,那就不是简简单单的编程,无法像刷 Leetcode 那样,刷一刷就熟了,而是要面对软件工程中的各种问题。

所以你面临的问题一直在变,大部分时候你不是在解决代码的问题,是在解决类似于:

  • 我怎么把需求抽象成设计?
  • 我该选择哪个技术方案?怎么找到最佳实践?
  • 这个技术、框架我没用过,怎么快速用它实现我要的功能?
  • 这个 Bug 我该如何定位和修复?
  • 这个 Bug 是解决了,但是这段代码我怎么重构才能避免问题?

这里面其实最容易的反而是代码问题,要实现一个函数,搜索一下可能别人已经写好了,要解决一个 Bug,用错误信息搜索一下可能 StackOverflow 已经有人解决过。

难的是你怎么把这些代码放在一起能满足你的需求,还能运行的高效,还要好维护,这些事不是 ChatGPT 或者 AI 短时间能替代的了的,需要很多年的积累。

其实也没啥捷径,只能是投入时间去不断地学习优秀的代码,不断地实践,比如实现功能,重构代码。

所以有人说三年才能成为一个领域的专家,说的没错,但是对于软件开发领域,有无数小的领域,就拿前端来说,也许三年你能成为 JavaScript 专家,但是你还要学会 CSS、HTML,还要会打包工具,还要 React 或者 Vue,还要状态管理。

除了这些基础的知识,再往上还要涉及系统设计、面向对象、设计模式这些。如果有团队了,还要学习一些项目管理和团队管理的知识,就算天纵奇才,并行学,三五年可能也是过于乐观的。这也是为啥上次 Grey Brockman 说学习 ML 比学软件开发快多了!

要想提升一点学习速度,也不是没有办法,我的经验就是尽可能早的构建自己的知识树,把某一个领域当成自己知识树的主干,主干不断长大长粗,并且在其他知识领域添枝加叶。

因为当你有了一棵自己的知识树,那么你就能有一个地图,知道该往哪发展,该补哪部分知识,会更有目标;另外当你有一个粗的主干,那么你可以借用主干的知识来学习枝干的知识,效率会高很多!

如果没有主干,就像有些人懂很多领域知识,但又只懂点皮毛,什么都不精,那样不是知识树,而是知识的灌木。

当你的知识树逐步成型,这样才能真正做到难度逐步收敛。

相关推荐
java1234_小锋3 分钟前
Spring里AutoWired与Resource区别?
java·后端·spring
风象南7 分钟前
Spring Boot 定时任务多实例互斥执行
java·spring boot·后端
崎岖Qiu8 分钟前
【深度剖析】:结合 Spring Bean 的生命周期理解 @PostConstruct 的原理
java·笔记·后端·spring·javaee
毕设源码-郭学长11 分钟前
【开题答辩全过程】以 基于Springboot旅游景点管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
全栈技术负责人20 分钟前
前端团队 AI Core Workflow:从心法到落地
前端·人工智能·状态模式
前端 贾公子40 分钟前
深入浅出 CSS 属性:pointer-events: none
前端·css
曾几何时`41 分钟前
二分查找(十)1146. 快照数组 pair整理
java·服务器·前端
夏河始溢1 小时前
一八二、webpack、grunt、gulp、rollup、parcel、vite 对比介绍
前端·webpack·gulp
别或许1 小时前
python中的异步调用(直接使用教程)
java·前端·python
xkxnq2 小时前
第四阶段:Vue 进阶与生态整合(第 47 天)(Vue 项目目录结构解析:每个文件夹的作用与规范)
前端·javascript·vue.js