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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
程序员爱钓鱼19 分钟前
Go语言实战案例-判断一个数是否为质数
后端·google·go
程序员爱钓鱼24 分钟前
Go语言实战案例-读取本地文本文件内容
后端·google·go
_丿丨丨_4 小时前
XSS(跨站脚本攻击)
前端·网络·xss
天天进步20154 小时前
前端安全指南:防御XSS与CSRF攻击
前端·安全·xss
拾光拾趣录7 小时前
括号生成算法
前端·算法
拾光拾趣录8 小时前
requestIdleCallback:让你的网页如丝般顺滑
前端·性能优化
前端 贾公子8 小时前
vue-cli 模式下安装 uni-ui
前端·javascript·windows
拾光拾趣录8 小时前
链表合并:双指针与递归
前端·javascript·算法
@大迁世界8 小时前
前端:优秀架构的坟墓
前端·架构
期待のcode8 小时前
图片上传实现
java·前端·javascript·数据库·servlet·交互