Wei He 🇺🇦
3.5K posts

Wei He 🇺🇦
@weihe
Designer,国家健将级杠王, Two Dots 认证铁公鸡玩家,ex-北漂,ex-深漂,ex-杭漂,ex-英漂,ex-坡漂


看起来你是在写程序,其实你做的是产品,那就不是简简单单的编程,无法像刷Leetcode那样,刷一刷就熟了,而是要面对软件工程中的各种问题。 所以你面临的问题一直在变,大部分时候你不是在解决代码的问题,是在解决类似于: - 我怎么把需求抽象成设计? - 我该选择哪个技术方案?怎么找到最佳实践? - 这个技术、框架我没用过,怎么快速用它实现我要的功能? - 这个Bug我该如何定位和修复? - 这个Bug是解决了,但是这段代码我怎么重构才能避免问题? 这里面其实最容易的反而是代码问题,要实现一个函数,搜索一下可能别人已经写好了,要解决一个Bug,用错误信息搜索一下可能StackOverflow已经有人解决过。 难的是你怎么把这些代码放在一起能满足你的需求,还能运行的高效,还要好维护,这些事不是ChatGPT或者AI短时间能替代的了的,需要很多年的积累。 其实也没啥捷径,只能是投入时间去不断地学习优秀的代码,不断地实践,比如实现功能,重构代码。 所以有人说三年才能成为一个领域的专家,说的没错,但是对于软件开发领域,有无数小的领域,就拿前端来说,也许三年你能成为JavaScript专家,但是你还要学会CSS、HTML,还要会打包工具,还要React或者Vue,还要状态管理。 除了这些基础的知识,再往上还要涉及系统设计、面向对象、设计模式这些。如果有团队了,还要学习一些项目管理和团队管理的知识,就算天纵奇才,并行学,三五年可能也是过于乐观的。这也是为啥上次Grey Brockman说学习ML比学软件开发快多了! 要想提升一点学习速度,也不是没有办法,我的经验就是尽可能早的构建自己的知识树,把某一个领域当成自己知识树的主干,主干不断长大长粗,并且在其他知识领域添枝加叶。 因为当你有了一棵自己的知识树,那么你就能有一个地图,知道该往哪发展,该补哪部分知识,会更有目标;另外当你有一个粗的主干,那么你可以借用主干的知识来学习枝干的知识,效率会高很多! 如果没有主干,就像有些人懂很多领域知识,但又只懂点皮毛,什么都不精,那样不是知识树,而是知识的灌木。 当你的知识树逐步成型,这样才能真正做到难度逐步收敛。

















