02.如何用帕累托法则高效学编程?-v03

100 阅读7分钟

帕累托法则与编程学习

什么是帕累托定律

  • 帕累托定律是意大利经济学家帕累发现的,

    • 例如:

      • 意大利约有80%的土地由20%的人口所有.
      • 80%的豌豆产量来自20%的植株等等.
      • 世界上20%的人口占有了80%的财富
  • 也就是说,我们要先把性价比最高的只是学完,这是学习最快的方法

    • 如果我们有100%的精力我们可以这样投资

      • 在5个方向上投资20%的精力获得80%回报,总回报为400%
      • 如果不断的向一个细节投入,且没有带来重大突破(发明发现,商业突破)的话,边际收益是递减的,细枝末节会让人筋疲力竭也几乎没有收益.

帕累托定律与学习

人脑无法学完的的编程语言

  • 编程语言是十分繁琐的,是无法学完的

    • 例如

      • 数据库科学这门学科,可以读到博士,但仍然学不完
      • 没有人类精通Java,只有GPT-4精通Java,因为Java有上万个内置方法.人类不可能都学到,而且以Java的更新速度目前已经更新到Java 20,单人人脑学习的速度是不可能赶上甲骨文公司对Java的更新速度的.
  • 现在有了AI,细枝末节让AI处理即可,如果发现知识漏洞,就问一下AI,工科的目标是解决问题,生产产品,用结果说话.

  • 因为无法学完,所以我们要划重点,我们要删减掉80%的学习内容,优先学最重要的20%,这最重要的20%就能解决我们遇到的大部分问题,那么我们如何找到最重要的20%呢?

如何找到最重要的20%?

化繁为简,集中精力,反复学习核心知识.获取更多的练习时间.

哪里需要用,而且不会,学哪里:

  • 从自己的需求出发,分析自己的业务中需要那些技术,一个编程语言要解决无数的业务问题
  • 我们作为个体需要解决的问题并非那么海量那么面面俱到,因此从需求出发,倒推需要学习哪些知识点是一个好方法.

学会提问

使用帕累托法则学习必然要删减跳跃很多次要的知识点,但有时候这些知识点还是有一些小用处的,那怎么解决?如果发现了不会的地方,我们要学会提问

如何提问

  • 学会从宏观到微观描述我们需要解决的问题,也就是精确描述bug,这是学程序时最重要的技能之一,排查错误,描述错误,找到自己的知识漏洞,不全自己的知识漏洞.

向谁提问

  • 最好的老师是AI

    • 只有AI学的最多:

      • 因为AI把编程语言相关的几乎所有的公开资料都学会了,甚至背下来了
    • 只有AI深入理解编程:

      • AI还能从宏观到微观从理论到应用深入理解编程语言,因为这往往是跨学科的,人类不具备这种能力,例如深入了解Java虚拟机就需要了解操作系统,计算机硬件制造,硬件相关驱动,CPP,最后涉及到数学和物理知识,单单说JVM源代码,没有几个人能完全读完,但是AI可以倒背如流也深入理解了,这时候我们问AI,AI可以深入浅出的回答问题,跨学科的,旁征博引的讲解,这是在现有的教育体制的人类难以提供的,因为现有的教育体制,人类的学习是细分学科的,计算机博士的物理学能力很差.
    • 只有AI能迅速整理思路提供结构化的内容

      • 结构化的内容也就是我写的这种,分点分类的内容,但是人类的分类往往有一些随意和随机性,并不是最终的合格品,人类生产一个合格的结构化的文章要花很长时间,在同样的时间内,AI生产的结构化回答就是比人类的合格率高,结构化好,跨学科解释精准
  • 找人类提问

    • 逮捕网友进行提问

      • 淘汰和AI差距过大的,例如响应慢,回复单条语句没有层次和结构,因果关系错乱,知识点错误.
    • 找朋友同事同学提问

  • 查阅人类的过往的回答

    • 我们遇到的问题,在网上大多是可以找到答案的,如果在中文环境中找不到答案,我们就去英文环境中检索,毕竟我们学的编程语言都是英文的,大部分程序员都是外国人都用英语.

如何删减要学的内容

我们使用的教程大多是人类编写的,人类的文章充满了啰嗦重复和逻辑不清晰,当然啦,也有很多次要的知识的精讲.因此我们要先选一个好的教程

如何选择好的教程?

  • 最推荐的是结构化的文字教程

    • 如菜鸟教程,廖雪峰的教程,他们得内容出来的比ChatGPT还早,但是用的是同样的结构化的格式,
    • 如果没看过廖雪峰的人看了这个文章会以为这就是AI生成的,但是这是编程届常用的Markdown的格式化写法,参考了东尼博赞的思维导图,现在发展为双链笔记.
  • 文字类课程与视频课对比:

    • 文字类课程可以反复查阅,跳过次要部分.可以快速复制代码.
    • 视频课相对低效,但是会传达更多的信息,例如鼠标的操作.文字很难表示只能截图,如果截图清晰依然比视频高效.

删减到不够学为止

删减到学习微微吃力为止,然后在学习过程中我们补全这些内容.

  • 删减过多会让自己举步维艰,毕竟学习要基于之前的基础,删节得当你会发现,当你用到之前需要学的但是你没学过,这时候简单查一下,几分钟就学会了,如果之前系统的学需要学几天,哪些内容也许对别人至关重要,但是对我们也许没有太大的用处.当然可以删除.

从实战中发现要学什么,别学不用的

  • 在实战或者模拟演练中发现自己需要学什么,然后再去学

    • 要用再学,不用不学.
    • 高频使用,就会学很多次,复习很多次,就会深入理解记忆深刻了
    • 如果先学不用,很快就忘了.编程就是要解决实际问题的,类似学游泳,多游才游得好,编程本来是没那么多理论的,不可本末倒置,类似学了很多足球理论,但是不上场踢足球.

总结

学习内容划重点

  • 自己总结使用的频率

    • 优点是适配度高,缺点是慢
    • 在实战中总结,例如写一个网站项目,写一个软件,就知道哪些技术常用,那些技术不常用了
  • 检索别人总结的

    • 优点是快,缺点是适配度低
    • 类似童话故事小马过河,有的技术大神经常用的技术,我们也许一辈子也用不到,要找和我们方向类似的人的资料
  • 详细描述自己的需求,问AI

    • 优点是快,缺点是可解释性差

删减80%内容,深入学习20%

  • 类比

    • 一辆越野车,把能拆的都拆了,只留下最必要的
    • F1赛车没有那么多座位,没有空调,没有后备箱
  • 理解

    • 想要快速入门,就要精简,80%的东西都是锦上添花,去掉了也能用.先用起来再拓展学习即可.
    • 否则就类似小马拉大车,启动不了啊.我们会学的很慢很煎熬很痛苦.小马拉小车,让马快速长大再拉大车是最好的,切不可揠苗助长.