V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liangkang1436
V2EX  ›  程序员

关于学习材料的疑问,这个问题困扰我很久了,求过来人解答

  •  1
     
  •   liangkang1436 · 53 天前 · 4377 次点击
    这是一个创建于 53 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当我想要学习一项技术并开始搜索相关技术博客的时候会搜索到很多文章,这些文章之间差别很大,虽然说的都是同一项技术,但是表述方式,深度,都不一样,有客还会有错误,作为一名技术学习者真的不知道如何选择, 后来,实在是懒得选择了,我开始尝试直接去看官方文档和源码,得益于自己英语的底子还不错,能学得下去,学习的效果也还不错,经常能有心得体会,对架构,对技术的全貌和能力边界都有切实的理解,但是这种学习方式太慢了。太慢了,源码就不说了,光 apache 的那个官方文档就好长,别人在这个技术上可能就花一个星期,我得花一个月还不止。求大佬解惑,我到底应该怎么学习。

    第 1 条附言  ·  53 天前
    以 log4j2 举个简单的例子,看各种博客,基本上都是教你配置如何将日志写入到文件中,但是我只有看了官方文档之后,才知道 log4j2 可以跟各种信息平台对接,比如 kafka ,也可以直接配置写入数据库,各种 appender ,此外,log4j2 可以直接把数据记录成 CSV 文件,各种 layout ,以前我都会自己写代码来实现这个功能,说白了,我看了官方文档之后,才知道 log4j2 能干哪些事(能力边界),但是光是看 log4j2 的官方文档,就花了我一个多星期接近两个星期 ,但是别人不去了解这些,他这两个星期去学习别的新的技术,我就感觉自己落后了
    57 条回复    2022-05-10 17:08:33 +08:00
    ericgui
        1
    ericgui  
       53 天前
    用 google ,搜英文文章
    wd
        2
    wd  
       53 天前 via iPhone   ❤️ 1
    你想求速成,可是你想想如果有速成方法官方文档为啥不写呢?入门看看别人的文章,系统掌握还是看官方文档。
    xuanbg
        3
    xuanbg  
       53 天前
    你想学得快,就要学会「不求甚解」。就是要学会放弃当前无用的知识。
    liangkang1436
        4
    liangkang1436  
    OP
       53 天前 via Android
    @xuanbg 按需求学习是吧?
    greengreengo
        5
    greengreengo  
       53 天前
    我都是看官方文档整体了解一下,然后详细看自己要用的部分和相关部分,差不多大约有 2 ,3 成是可以不用马上看的
    cominghome
        6
    cominghome  
       53 天前   ❤️ 1
    人生那么长,不要把自己的职业生涯终点定在 35 岁,自主学习你又不着急,慢慢来。

    ps: 不一定要追求原汁原味的英文原版文档,找找翻译版试读一两节,大概还是能识别出译者水平的
    yufeng0681
        7
    yufeng0681  
       53 天前
    优秀文章获得回报的 商业模式还没有真正出来。
    1 、大部分用户付费意愿不强烈(少数人付费没用)
    2 、文章 copy 就走,无法形成保护门槛(专利级别的保护成本高)
    3 、知识管理的方法论薄弱。 技术人员各自为战,协同写作还没出现,大家处于分头写阶段
    liangkang1436
        8
    liangkang1436  
    OP
       53 天前 via Android
    @yufeng0681 GitHub 上倒是有开源的学习笔记,很多人共同修改,但是经常被培训班直接打包拿走
    yyysuo
        9
    yyysuo  
       53 天前   ❤️ 9
    两种学习模式,首先是工作模式,工作任务都是有 deadline 的,一定要不求甚解,追求速度,以解决工作任务为第一要务,这样能迅速的积累信心,了解你正在干的到底是什么事情,你正在使用的技术是个什么样子,千万不要打破砂锅问到底,这样会浪费大量的时间。并且以使用为导向,工作能力也会迅速提升,做好第 1 点,基本上职场就没什么大问题了。其次是长期的原理学习,就是你目前感觉效果不错的方法,这种适合业务的积累与提升,决定了你职场的上限,这点大部分人其实做得不好,有的人一辈子都不做深度学习,其实也什么大关系。

    至于教程太多,可以试啊,试多了就有经验了,有直觉了,随便看看就知道哪个教程更靠谱一些。
    singerll
        10
    singerll  
       53 天前   ❤️ 4
    我的建议是别学那么多,用到哪学到哪,最主要都是要学会思考和举一反三。
    比如你举得 log4j2 的例子,那么多花里胡哨都功能可能你一辈子也用不到,而等你需要对接 kafka 时,你能够想到:log4j2 能不能直接对接 kafka ?如果不能有没有什么第三方插件?等等,这才是最主要的。
    beisilu
        11
    beisilu  
       53 天前   ❤️ 2
    说个不好听的,“感觉自己落后”,卷 nm 呢。
    人是为了生活工作的,如果你总是这样焦虑我建议你先休息休息
    codefever
        12
    codefever  
       53 天前
    如果你不知道如何选择,就把你自己的水平和情况以及需求说清楚,会有大佬给你指出最适合你的教程。但是别人一个星期能学会的你要学一个月就有点离谱了,这个看你和谁比,你要和那种天才比完全是凭空制造焦虑没有必要,你要是和普通人比,那真的先静下心来找找自己的问题,可能是基础太差了。
    312ybj
        13
    312ybj  
       53 天前
    我最近封闭在家也会想这方面的问题, 学一个知识,博客里是有,但是层次不齐。 上次碰到一次死锁问题,博客有很多,但是很多概念都是照搬的,没有自己的理解。 我找了本书《 MySQL 技术内幕 InnoDB 存储引擎》,里面有句话说得很好“不要相信网上的传言,去测试,根据自己的实践做出决定,学会自己思考”, 后来我把 索引 锁 事务的知识又复习了一遍, 死锁问题解决了,同时对于整个知识体系又有了理解与认识。 当然总结也很重要, 我用了飞书文档的思维导图和文档来记录知识点,时不时地看一遍,写完了之后会分享到技术群里
    liangkang1436
        14
    liangkang1436  
    OP
       53 天前
    @beisilu 哈哈哈,老哥骂的好!
    liangkang1436
        15
    liangkang1436  
    OP
       53 天前
    @yyysuo
    @singerll
    谢谢老哥,你的回复对我有帮助
    wu67
        16
    wu67  
       53 天前
    学习、入门的话, 应该还是官方文档比较靠谱. 如果你要确定某些问题 /行为的疑问, 应该是联系作者(issue/email), 或者到 SO 上面去搜一下, 直搜中文很大概率搜出来的是那种垃圾内容农场(当然大部分情况还是能搜到一些靠谱的, 只是如果问题比较偏, 大概率就是农场了)
    arthas2234
        17
    arthas2234  
       53 天前
    工具类的可以先建个索引,知道它能干啥,等需要的时候再详细研究
    tianyou666shen
        18
    tianyou666shen  
       53 天前
    修 bug 找爆栈网 写例子按照 demo 和官方文档 学技术又快又全靠网课视频
    Jooooooooo
        19
    Jooooooooo  
       53 天前
    分清 工具使用 和 技术知识.
    Vincent103
        20
    Vincent103  
       53 天前
    我感觉找个大佬带是最快的方法了,可惜大佬都没那么多时间
    ffgrinder
        21
    ffgrinder  
       53 天前   ❤️ 2
    有没有一种可能,你所谓的“慢”才是正常的速度?

    解决问题的时候我回去看 blog ,但是解决了问题之后还是要仔细去阅读专业文档的(包括但不限于教科书,官方文档之类)。

    不能因为国内环境浮躁就去做逐利的事情,我真是深有体会。
    libook
        22
    libook  
       53 天前
    1. what:先去看一下技术的简介,了解一下是啥;
    2. why:去看一下技术适用于哪些需求场景,不适用于哪些需求场景;
    3. how:看一下如何使用这个技术。

    在 how 阶段,我个人习惯这样的优先级:
    1. 官方 document 、manual 、guide 、tutorial 、get started ;
    2. 系统性的教学书籍,实体书或电子书;
    3. 知名大牛的系统性教学博文;
    4. 普通博文、视频、公众号。

    学的话其实也不一定要全都看完,根据自己的需求有侧重点看就行,一般好的文献每一章节开头都会有简介,暂时用不上或不被其他章节依赖的可以先不看。
    Cielsky
        23
    Cielsky  
       53 天前 via Android
    对我来说,不管是求速成还是求深入,第一步都是先快速过一遍,留个大致框架,知道哪些重要。
    documentzhangx66
        24
    documentzhangx66  
       53 天前   ❤️ 1
    1.学习本来就是一件非常奢侈的事情,因为需要花很多时间。

    很多中间层次的从业者,因为没有时间去系统化地、完整地学习,造成水平无法提高,进而只能停留在竞争最为激烈的中间层圈子,导致恶性循环。

    2.学习资料的作者,并不知道学习者的知识情况,因此作者只能尽量把能写的东西,都写上去。

    3.学习者,在学完之前,也并不清楚知识依赖与架构,因此全部学完才是最稳的,但也最消耗时间。

    建议,你想进入竞争相对轻松的上层圈子,你就只能更卷,别人玩乐你学习,别人休息你学习,来提高自己,没有别的捷径。
    liangkang1436
        25
    liangkang1436  
    OP
       53 天前 via Android
    @Cielsky 首先看到技术的全貌,然后再开始学习细节
    liangkang1436
        26
    liangkang1436  
    OP
       53 天前 via Android
    @documentzhangx66 学习时间这一条真的扎心
    liangkang1436
        27
    liangkang1436  
    OP
       53 天前 via Android
    @documentzhangx66 谢谢你的回答
    documentzhangx66
        28
    documentzhangx66  
       53 天前   ❤️ 3
    我也是很多年后,才意识到这个问题。

    我关注了几个年入百万的大牛,我很好奇他们是怎么学习的,结果我发现,他们可以连续几年不上班,专门拿来学习和实验,而且他们自己甚至可以投入几十万元去租借设备拿来做配套实验.....他们也不需要照顾父母、家人、孩子,因为没他掺和,这些人吃喝玩乐能活的更快乐...

    有一件我印象很深的事情,某数据库群,因一个问题吵起来,几十亿的数据,某种表结构,性能会怎么样。几个大佬吵了起来,但其中一个大佬,从设计实验、准备设备、搭建环境、制作实验数据、写代码,连续花了几天时间,证明了自己的想法....其他人呢?在上班,在奶孩子,在陪老婆...

    普通人,连续 2 个月没收入,就完蛋了,更别提专门花几天时间去探索一个小问题。同时普通人只能去找那种竞争激烈的工作,还加班多,哪有时间去学习,去研究。

    这就是恶性循环。

    如何破局?只能牺牲自己的娱乐与休息时间,变得更卷,别无他法。
    AmberMmoe
        29
    AmberMmoe  
       53 天前
    @ericgui 赞同,换一种搜索方式就发现格局打开了哈哈
    ryd994
        30
    ryd994  
       53 天前 via Android
    “log4j2 可以跟各种信息平台对接,比如 kafka ,也可以直接配置写入数据库,各种 appender ”
    所以呢?你用得到这些功能吗?
    用得到,见第二条。
    用不到,那你不需要知道这些功能。

    “log4j2 可以直接把数据记录成 CSV 文件,各种 layout ,以前我都会自己写代码来实现这个功能”
    这个问题不在于你是不是 log4j2 大师。而在于你在重新发明轮子。在写代码实现这个功能之前,先问问自己,这个功能别人用不用得到。如果别人有可能用到,那别人很可能已经发明过这个轮子。然后再有的放矢地搜索: https://lmgtfy.app/?q=log4j2+csv

    学海无涯。搞学术的需要格物致理,不懂的一定要搞懂。搞工程的一定不要这样,你的工作是有什么工具能用就用什么,重点是花最小的成本把问题解决掉。你的时间也是成本,所以在开干之前,先想一想,你在干什么,你为什么要干这个,有没有别人已经干过这个,能不能利用现成的工具?
    kg2019
        31
    kg2019  
       53 天前
    极客时间(付费)+ 经典书籍
    huntagain2008
        32
    huntagain2008  
       53 天前
    小白我觉得还是看官方社区的技术文档更靠谱。比如笔记本电脑装 ubuntu 安装 AMD 显卡驱动,AMD 官网给的驱动安装文档和网上的傻瓜博客都只会让小白遇到“依赖”之类的错误就强制安装,甚至遇到软件包冲突的也要小白不管,就是莽就是干,这种后果很可能系统整个坏掉。看 Debian.org 的文档,就写的思想或者原则就是杜绝这些操作的,完全为了系统稳定,而且 Debian 关于软件包的介绍和网上随便搜的完全不是一个次元的。根本就是两个概念。所以,我认为学习材料还是找权威、社区、泛用、教科书级别的更好一些。
    zt52875287
        33
    zt52875287  
       53 天前
    唉,卷海无涯
    offswitch
        34
    offswitch  
       53 天前
    你说的这些毫无意义,正常不会直接用 log4j 发送到 kafka 。
    gugugagadun
        35
    gugugagadun  
       53 天前
    @yyysuo 双手双脚同意。工作模式,扩展视野;休闲模式,扎实基础知识
    billlee
        36
    billlee  
       53 天前 via Android
    Blog 从来不是系统学习的渠道。针对某项特定技术的博客要么是学习笔记性质的,这类完整度和可信度都不高。要么是针对某个特定问题的深度分析,这种也不适合用来入门。
    1000copy
        37
    1000copy  
       53 天前
    讲给我,我就忘了。展示给我,我就记住了。我参与进来,我就明白。
    1000copy
        38
    1000copy  
       53 天前   ❤️ 1
    liangkang1436
        39
    liangkang1436  
    OP
       53 天前 via Android
    @ryd994 那对于工程用到的技术,有必要花时间深入学习吗?比如 spring 全家桶框架
    levelworm
        40
    levelworm  
       53 天前 via Android
    感觉开源工具鲜有完善的书籍,而且功能碎片化,很多解决方案就是堆砌一些开源工具,成熟的团队不怎么愿意自己开发些工具了。所以深入学习既没有必要也没有可能。我觉得最好就是善用 stackflow ,有什么需求就用工具名加需求进行搜索,搜不到就说明肯定不支持。

    至于 RTFM ,这个自然是有用的,问题是哪里有时间每个工具都去翻文档?如果团队内没有大佬带,那就只能遇到一个问题翻一次。最后就是熟能生巧。
    lamCJ
        41
    lamCJ  
       53 天前 via Android
    同感,项目技术文档和功能实现脱节大部分都有,只是看严不严重,一般团队越大越专业的软件团队 /公司情况越好。毕竟写好和维护文档的及时性要很多精力。

    不过问题也不大,肯定还是会看文档,如果文档不完善,踩坑较多就去看代码的命名,注释,测试用例,issue 这些,如果写的好的代码,基本上折腾一点时间也能解决问题。

    如果还不行就要考虑弃坑了。除非你是纯学习目的,或者需求非用不可没其他选择的情况,我觉得没必要浪费时间看太多源代码。
    zooo
        42
    zooo  
       53 天前
    关于学习,这个话题让我想起,阮一峰的一个博客
    https://www.ruanyifeng.com/blog/2022/04/weekly-issue-202.html
    liangkang1436
        43
    liangkang1436  
    OP
       53 天前 via Android
    @zooo 谢谢分享,我去学习一下
    Euthpic
        44
    Euthpic  
       53 天前
    估计你搜索用的关键词只是简单的"log4j",所以会看到大量入门文章.稍微加下关键词,比如 log4j 的某某特性,你会发现有很多精彩的资料
    liangkang1436
        45
    liangkang1436  
    OP
       53 天前 via Android
    @Euthpic 我是在 log4j 官方文档里找的推荐教程博客
    FrankHB
        46
    FrankHB  
       53 天前
    如有可能,尽量看第一手来源。
    一般来讲,不要指望别人消化过给你反刍(……D 区.jpg )出来的东西的内容质量,包括纸质出版物,因为本质上对作者的能力和责任心没有门槛限制(说不定理解能力比你还烂),于是跟你花时间踩坑跟随便看什么网文没根本差别。(这种类型的文献里最靠谱的一类也许是综述论文,对作者要求比较严格,写太烂可能圈内社死。)
    就算恰好你看到的二次来源没有误导也没有明显的废话,你仍然几乎没可能确保甚至确认里面有没有相对遗漏重要的东西(这个“能力边界”的问题你自己也发现了)——如果一旦需要更权威的来源,那这里看的基本就是沉没成本——因为横竖都得重新过一遍,才能确定。如果你没有事先从一手来源熟练提炼内容的本事,这里阅读的复杂度就是 O(n)往上。
    这特别针对“学习笔记”。你不是作者的导师,你没义务花精力替作者审查内容。——别信多看别人的文章就能加深理解的鬼话:这类文献中自己的独创的启发性理解通常极其稀薄,除非你是要学习写作文,否则基本不如直接看书。
    博客类的内容,你只适合看发表明确带有具体观点的评论、关于某个时事(可能是当事人观点或者小道消息)的独家报道或者解决极其具体问题的实例,这些内容就是一手来源,不需要寻找更权威的替代。
    有权威背书的教程可以看,但是这算是降低门槛(降低读者理解的门槛和作者推广的门槛)用的。如果你恰巧已经对理解一手来源没有障碍,看这种内容还是免不了浪费时间。此时,通常只有在你需要向其他人言传身教时,才有必要参考这些内容。
    内容太多不是问题,因为看技术文献本来就不应该通读。如果你觉得自己不能很快通过阅读 preface/foreward/introduction 和有限的正文快速找到感兴趣的内容,说明你现阶段可能不够具备这个能力。这时候,看权威推荐的教程可能更适合你。但这基本可以肯定花(相对)更长的时间——这是无解的,毕竟内容的数量摆在那;况且教程类的东西经常强调非引用性照应说不定还穿插习题,额外开销就更难压缩到 O(n)以下了。
    FrankHB
        47
    FrankHB  
       53 天前
    @zooo 我太不同意这里提到的几个说法。
    1.正因为记忆力如此重要,才不应该浪费在机械背诵上。
    最应该花费记忆的是存那些帮助你找到第一手资料的索引,包括自己阅读技术文档后形成印象——而恰恰不是原文。这样才有可能接近及时获取所需的持久信息的效率的最大化。(当然,看多了自动记住了的东西也不需要刻意忘掉。)
    不能上网被逼得记住东西,和你看多了自然记住的东西,即便表面看起来相同,实际上用起来的熟练程度也完全是两码事。
    所以看起来最笨的方法,虽然实际不一定是最笨的,但的确是比较笨的;这种看似主动实际被动记忆技能,属于 features of the last sorts 。
    如果自己没有形成索引的能力(这其实就是看一手资料提取感兴趣信息的能力的主要部分),那么看二手来源也是可以的,但应该筛选。最有价值记住的是那些容易关联到比较查验权威性的一手来源的资料上,包括综述论文;另外的例子是英文维基百科条目名(虽然不是每个条目都配得上浪费记忆;反正不少条目可以内链间接索引到)。
    2.“大量的练习”没有错,但是这里没明说的是,怎么度量“大量”。
    实际上,大量不是单独看你处理了多少字面上的材料,而是有使用经验的加权。
    比如上面提的,为什么自然记住的东西比强行去记住有效?因为前者通常就是大量使用的结果,跟只是记住完全不是一个概念。
    3.专业技术证书是服务于特定的行业和特定的人的,其中的含金量很大来源于“承认”。
    这不是你最终能从学习里获得足够回报的保证,例如你不去某些职位工作这些证书可能就一文不名。
    如果没有被特定涉众承认的刚需,偏离自身需要去考证可能得不偿失——学了很多实际没用的内容,和被迫通读技术文献中无用的细节浪费的资源效果是类似的,甚至还不如后者能高(装)大( 13 )上一点。
    FrankHB
        48
    FrankHB  
       53 天前
    @FrankHB 淦,不知道我这里回复框怎么抽风,贴过来几个地方语序乱了……
    ……算了,不一个个纠正了,反正汉顺字序不影响阅读(
    em70
        49
    em70  
       52 天前
    你的学习方法是应付学校考试那一套,根本不适合技术学习,技术是依赖实践的,你的学习方法好比看书学游泳,看书学开车一样荒唐可笑. 技术正确的学习方法是目标驱动,比如我一看 log4j2,可以做企查查,天眼查那种公司关系图谱啊,那我就做一个天眼查呗,带着这个动机,我就可以不断产生问题,然后查资料,写代码,调试代码,把东西做出来我就掌握这个技术了。你的动机要是为了面试,为了考证,你学的全是纸上谈兵
    liangkang1436
        50
    liangkang1436  
    OP
       52 天前 via Android
    @em70 别说的这么绝对,官方文档里有大量的示例代码,我基本上都会自己实践一遍帮助理解
    zooo
        51
    zooo  
       52 天前
    @FrankHB
    阮一峰的博客只是一种观点
    有些我也不认同

    copy 下,以前 v 站别人的观点,供大家学习
    学习的两种模式
    1) 工作模式
    工作任务都是有 deadline 的,一定要**不求甚解**,**追求速度**,以解决工作任务为第一要务,这样能迅速的积累信心,了解你正在干的到底是什么事情,你正在使用的技术是个什么样子,**千万不要打破砂锅问到底,这样会浪费大量的时间**。并且以使用为导向,工作能力也会迅速提升,做好第 1 点,基本上职场就没什么大问题了。
    2) 原理学习
    就是你目前感觉效果不错的方法,这种适合**业务的积累与提升,决定了你职场的上限**,这点大部分人其实做得不好,有的人一辈子都不做深度学习,其实也什么大关系。

    上面的都出自 v 站别人的帖子,非原创,只是收集下来了,供大家学习。
    zooo
        52
    zooo  
       52 天前
    那么关于 2 )原理学习,自然就需要深入学习,求甚解,这样也方便 理解记忆 !
    而对于 1 )的模式,不用记忆,通过不断的应用实践(用多了),自然就记住了;或者说是对于最最常用的知识点,刻意记忆。
    zooo
        53
    zooo  
       52 天前   ❤️ 1
    对于应该用第一种模式学习的,千万不要用第二个模式,既浪费了时间,又会因为学习成本大,而落后于别人,落后于市场。

    那么,学习的第一步是分清这两种情况。
    zooo
        54
    zooo  
       52 天前
    对于:别人在这个技术上可能就花一个星期,我得花一个月还不止
    可能这个技术学习就是第一种情况,工作模式,会用,解决实际问题了,就是好的学习,跟紧需求,更上一层是跟紧市场。

    对于:说白了,我看了官方文档之后,才知道 log4j2 能干哪些事(能力边界),但是光是看 log4j2 的官方文档
    明确需求后要先去做调研,调研有各种渠道,问大佬,问前辈,发帖子,google 搜索,问同行公司等等。
    只要调研清楚后,你大概就对不同的技术的能力边界(功能)了解,然后再是技术选型(选择哪个工具),再学习(通常调研后,通过判断你会觉得当前学习的技术最适合学习 or 应用,最有价值)。
    liangkang1436
        55
    liangkang1436  
    OP
       52 天前 via Android
    @zooo 一针见血地指出了我的问题
    em70
        56
    em70  
       52 天前
    @liangkang1436 #50 在驾校里天天练过桥,爬坡,学了还是不敢上路,经验学科需要实战,实践遇到问题再去看理论,工程师又不是科学家
    Dlin
        57
    Dlin  
       52 天前
    @beisilu 卧槽,我笑了,哈哈哈,
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1358 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:16 · PVG 02:16 · LAX 11:16 · JFK 14:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.