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

关于程序员如何精进细节的三个问题。

  •  
  •   liuser666 · 2021-06-24 02:00:00 +08:00 · 6030 次点击
    这是一个创建于 1253 天前的主题,其中的信息可能已经有所发展或是发生改变。

    诚心请教各位三个问题

    • 在学一门语言或者技术的时,候学到深入了,是否就没有视频资源了,只有看书了或者查官方文档了?

    • 关于技术精进这一块,难道只有看开源项目了?但是常常看不懂…比如说 powertoys 的开源项目,我觉得主要的问题是它们用的平台 api 太多了,隔个几行就得查一查…另外构建工具也是个门槛,不同的开源项目往往根目录下面各种.config,人都要麻了。所以所谓技术大牛,其实就是比谁的平台 api 记得多、数据结构用的好以及工具用得熟咯? 233

    • 最后是问一下关于后续如何发展…其实我不准备以码代码为生啦,就是一个兴趣爱好,但是现在的状态是感觉自己进步很慢。想独立开发一个软件吧,磕磕绊绊几天也能做出来,用到各种功能的时候就去 stack overflow 查怎么办,最后代码就写了几千行吧,查文档查得手疼。各种性能优化也挺想学的,但是不知道切入点在哪,比如.Net 的性能优化怎么学呀?…像《 C#8.0 和.NET 3.0 高级编程》这一类的书我也看了,覆盖范围很广,但是细节不足…!!!真的很希望能看那种做大型实际项目的的教学视频(最后能偏底层)!!!能给我跟着学一学…就是有关于 cmake 怎么配置,几种构建工具怎么混合使用的,项目怎么起来的,顺便还能学一学数据结构、设计模式是怎么运用在实际项目的那种(我觉得这种教程应该是没有),因为我真的很想成为一个能独立构建类似 chrome 这种大型软件(我知道 chrome 里貌似有很多奇巧淫技)能力的人哈哈,所以最后的问题是,现在我已经到了可以磕磕碰碰写项目的阶段了,后续如何成为一个能独立构建 chrome 能力的人呢? PS:我知道 JAVA 的教学资源貌似还挺多的…但是吧,出于对安卓卡顿的愤恨,我一直觉得 Java 就是垃圾,所以不想学…如果你不同意请尽管骂我。

    另外奉劝跟我一样的小白,做稍微偏底层一点的东西,C 和 C++是逃不掉的,学得越熟练越好。

    43 条回复    2021-06-26 10:16:57 +08:00
    3dwelcome
        1
    3dwelcome  
       2021-06-24 02:15:17 +08:00   ❤️ 3
    学习最好方法,就是看高手的源代码,自己建项目仿写。看视频只是被动输入,说不定过几个月有别的事情,你就忘记七七八八了。

    这时代挺好,有 github 的存在,程序员又是一群特别热爱分享技术的人群,我每次逛 github 都有新的收获,就像女生逛商场那种感觉。

    提升技术总体是螺旋形上升,和爬山一样,可以选择观光电梯(直接调用开源解决方案),也可以选自己爬艰难坡道(尽可能自己弄明白底层原理)。一个理想化的码农,最少要写三十年代码吧,前路漫漫,多学点总是没错的。
    liuser666
        2
    liuser666  
    OP
       2021-06-24 02:56:07 +08:00
    @3dwelcome 所以我应该多看看 awesome c ++之类的?
    3dwelcome
        3
    3dwelcome  
       2021-06-24 03:06:08 +08:00
    @liuser666 我觉得你应该看不进,随便翻一下 chrome 源代码,就能感受到了。

    身处现在信息爆炸的时代,C++这种十年磨一剑的技术,已经跟不上时代节奏了。

    可能兴趣才是最好的导师。
    liuser666
        4
    liuser666  
    OP
       2021-06-24 03:31:07 +08:00
    @3dwelcome 是的,确实看不下去。谢谢您的指导。
    lfzyx
        5
    lfzyx  
       2021-06-24 08:54:26 +08:00   ❤️ 1
    通过视频资源学编程还是转行吧,连官方文档都不通读真不要入这行了
    shon
        6
    shon  
       2021-06-24 09:01:36 +08:00 via iPhone
    同有类似的困惑。但我觉得视频,文档,开源项目都是技术的不同表现形式,不管通过哪一种,目的应该是透过其掌握技术原理。当一个大蓝图已经在心里刻画出来,那么手上的键盘就只是你表达的工具了,表达的熟练程度需要时间来积累。
    NoUltimate
        7
    NoUltimate  
       2021-06-24 09:03:09 +08:00   ❤️ 3
    安卓卡顿不是安卓的问题么,和 java 有啥关系
    acmore
        8
    acmore  
       2021-06-24 09:06:16 +08:00
    看书看视频无用,系统地学只能系统地忘。
    需求驱动学习是唯一的方法。
    kop1989
        9
    kop1989  
       2021-06-24 09:15:21 +08:00   ❤️ 24
    精进的唯一渠道就是解决需求。
    开发程序是软件工程,是工程学,应用学。千万不要学屠龙之术来骗自己。

    现在大厂的面试为了标准化已经走歪了,但你自己心里要明白。一个文学巨匠的真正水平是体现在自己的文章中,而不是体现在他能背诵多少本辞典。
    kingzeus
        10
    kingzeus  
       2021-06-24 09:16:46 +08:00
    学好编程语言很重要,可以让你在实现想法的时候没有阻碍。
    但是编程语言很多,总有学不过来的时候。
    所以编程语言很重要,但不是关键。程序员的核心能力是解决问题。老板并不会关心你的代码里变量用了拼音来命名,还是用英文来命名的
    研究开源软件,最重要的是看他如何来解决问题的,如何设计系统。至于用了啥 api,这些反而没有太多借鉴意义了
    读万卷书,不如行百里路。找个自己感兴趣的题目,真正的做下去,才会有进步
    lulu7
        11
    lulu7  
       2021-06-24 09:25:53 +08:00
    也有些冷门视频可以深入学习,比如《程序员修炼之道》这本书的出版社合作出的系列视频: https://www.zentao.net/redirect-index-19145.html

    还有本《程序员生存手册》可以考虑程序员职业的后期发展: https://www.zentao.net/redirect-index-19146.html
    youyouyou0123456
        12
    youyouyou0123456  
       2021-06-24 09:39:05 +08:00
    多输入就行了,感觉你现在输入的还不够多,才会觉得找不到精进方法。光想没啥用的,多输入才能产出。
    no1xsyzy
        13
    no1xsyzy  
       2021-06-24 09:44:01 +08:00
    学而时习之,不亦悦乎?

    古今异义:「习」不是「练习」而是「实践」
    louisdio
        14
    louisdio  
       2021-06-24 10:02:57 +08:00
    @kingzeus 有同样的疑惑,学习了,正在尝试做自己感兴趣的项目,将兴趣保持下去。对我来说,做程序员的原动力应该是创造的乐趣,技术能力、工资的提升、都是寻找乐趣的过程中自然而然实现的。
    Natsuno
        15
    Natsuno  
       2021-06-24 10:14:22 +08:00
    @lfzyx
    “通过视频资源学编程还是转行吧,连官方文档都不通读真不要入这行了”
    也没必要这么说吧,并不是针对你个人,只是经常看到行内的一些程序员对想入行或学习编程的人说“你是这样学习的,趁早转行”,除开那些伸手党,每个人的学习方式都不一样,并不意味着看视频就比看文档低级,况且 LZ 也看了文档和书,只是不知道如何切入实际应用。毕竟大家都是普通人,不是看完文档就能直接输出项目的,视频也是一种参考资料。
    to LZ
    上面有老哥说的对,需求驱动学习才能有更好的理解。文档提供的是一些基础语法和 demo,如何把这些串联起来,可以通过做具体项目实现,以我个人的学习经验,在自己看完文档没有头绪,我也会去油管找一些项目的视频,从头到尾看一遍如何搭建项目,油管和 github 可以帮你搜到不少优质资源。
    qwertyzzz
        16
    qwertyzzz  
       2021-06-24 10:15:00 +08:00
    @kop1989 天天都能看到你~哥们是利物浦球迷吗
    Cy1
        17
    Cy1  
       2021-06-24 10:21:12 +08:00
    安卓底层又不是 Java 写的,卡顿关 Java 什么事。。
    arbit
        18
    arbit  
       2021-06-24 10:26:36 +08:00
    @Natsuno 老哥说的很在理,我觉得每个人学习方式不同,阶段也不同,开始的时候读文档可能会枯燥,看视频会更容易入门,后期技术熟悉进步了可以继续研读文档发现视频所没讲到的,但是这种说通过视频学就转行有点过了,难道学习方式还有高低之分,看文档就会比较有优越性吗
    zen1
        19
    zen1  
       2021-06-24 10:29:43 +08:00   ❤️ 1
    1. 任何东西当深入到一定层次后资料都会变少,不仅仅是程序技术。
    2. 看不懂说明看得少,或者这个项目的难度已经超出了你当前的水平的极限。看得多不如写的多。而且最重要的是不要扎到细节里而出不来,宏观上看思想嘛
    3. 切记眼高手低吧。怎么把实际业务抽象化,再用代码实现这就是个很高的要求了。而且几千行也就是个 demo 吧。怎么独立构建 chrome 我不知道,因为我也没有这个能力。但是我觉得一个人想做成这种规模还是挺难的,至少精力上就不够。诚如 linux 现在也是社区一起维护。
    不清楚你是不是已经工作了,我觉得有实际工作经验的人可能也很少会问出这些问题,也可能是我狭隘了
    最后你所追求的能力也是我希望拥有的。
    x940727
        20
    x940727  
       2021-06-24 10:32:50 +08:00   ❤️ 2
    我觉得没头没脑的看源码没有什么卵用,要说真的想精进,学好英语,去看看顶级计算机大学的公开课,比如 CMU 的 15-213 MIT 的 6.824 ,然后多看看计算机基础的书籍,多看看业界顶会的论文,然后能在工程界实践出来的框架,系统是怎么实现的,技术精进的很快的。说白了,你要先知道,为什么会有这些东西存在?就比如 MapReduce,最开始支撑这些存在的理论是什么样的,第一代版本为什么会这么设计,往后有没有对初始设计进行重构,如果有,是因为什么原因,然后又是怎么设计的。你这样就能理解大佬的思想,吸收大佬在一代代更新中汲取的经验。
    loryyang
        21
    loryyang  
       2021-06-24 10:35:37 +08:00
    你既然只是兴趣,还是多做偏应用层面的学习吧,上层的机会多,变化多,比较有意思。你搞底层,也就局限在学习了,很容易无聊
    比如你学个 Python,学个机器学习(这真不难),然后自己搞点用上模型的小玩意,这个挺有意思的
    另外技术的深度,说实话,你不在业内,你不在一线,接触不到那些东西的。开源说实话,你也就看看代码,从代码里面不一定能看到背后的思考和折中
    lplusk
        22
    lplusk  
       2021-06-24 11:14:09 +08:00
    技术是工具,工具是用来解决实际问题的。牛逼的产品和项目诞生之前都会有实际的需求和问题,如果你没有解决复杂实际问题的需求,就没有必要精进。为了精进而精进,看再多也只是闭门造车。
    jones2000
        23
    jones2000  
       2021-06-24 13:11:27 +08:00
    首先,开源的东西是别人写的, 所以不要把开源插件的功能算成你自己的能力。 除去开源的东西,你还会什么? 不会的就自己去补。
    然后说下读开源项目,光读代码屁用都没有, 你当看小说呢,浪费时间。 首先要根据这个开源项目有什么功能,自己去查资料,自己用代码实现。然后再去跟开源的代码比较, 哪些地方自己写的比他好, 哪些地方写的不好。这样才能提高你的查阅资料能力,分析能力,代码能力,设计能力。
    GrayXu
        24
    GrayXu  
       2021-06-24 13:14:46 +08:00
    轻吐槽,为啥看开源项目会选择看 powertoy 。。。你看这种项目当然是会看到大一堆平台 API 了
    lux182
        25
    lux182  
       2021-06-24 13:22:25 +08:00
    @kop1989
    securityCoding
        26
    securityCoding  
       2021-06-24 14:21:17 +08:00
    我个人比较笨 ,给我看也看不明白 . 一般是找个感兴趣的开源项目 , 弄清楚主体结构,开始动手抄代码 ,一行一行抄代码时才知道自己明不明白
    nullcoder
        27
    nullcoder  
       2021-06-24 14:25:41 +08:00
    唯一精进的方式是跟着高手学。看高手输出的博客和代码为下策;与高手远程过招,参与开源项目等协作为中策; 能坐在高手旁边,参与高手的工作,持续观察,不时 challenge 为上策;
    zhanggang807
        28
    zhanggang807  
       2021-06-24 15:20:55 +08:00
    @zen1 赞同
    godgc
        29
    godgc  
       2021-06-24 17:12:29 +08:00   ❤️ 1
    当你觉得学到某个阶段没有辅助内容可以帮助 精进的时候其实也代表你目前应该在自己的项目中去做实践了,在实践的过程中关注细节,保持宏观上的统一和微观上的“讲究”,再来一点个人心得总结,我认为是这样的
    pansongya
        30
    pansongya  
       2021-06-24 17:48:07 +08:00 via Android
    语言只是皮 内功心法 数据结构和算法
    matrix67
        31
    matrix67  
       2021-06-24 17:50:24 +08:00   ❤️ 13
    别说数据结构和算法了,当你工作几年就会明白,以下几个任何一个都可以超过 90%程序员:

    1.把事情想明白,说清楚,跟别人商量好
    2.写代码,注意边界条件和编码规范,写单测,基本做到无 bug 提测
    3.工作中做好计划和进度跟踪,沟通和汇报,不把问题遗留到变成事故
    4.思考和分析,如何优化目前的工作流程,引入工具和方法,提升生产效率
    5.把自己工作中用到的技术用熟,搞清楚原理,优点短处,适用场景
    6.不断接触新技术思想和工具,完善自身知识体系结构
    7.深入学习至少一个常用开源项目,源码层面系统掌握这项技术
    8.持续坚持学习和技术内容输出,每个星期产出 2 篇原创技术文章
    v2Mark
        32
    v2Mark  
       2021-06-24 19:04:46 +08:00
    @matrix67 这才是最真实的
    duhb
        33
    duhb  
       2021-06-24 20:17:38 +08:00 via iPhone
    @lfzyx #你能把官方文档全部都通读完?确定嘛😩
    sleepm
        34
    sleepm  
       2021-06-24 21:40:28 +08:00
    关键点是发现问题的能力,和解决问题的能力
    liangkang1436
        35
    liangkang1436  
       2021-06-24 22:52:31 +08:00 via Android
    我之前也是仗着自己英语底子好,坚持看官方文档,结果为了学 idea,光 idea 的帮助文档我就看了一个多月,明明视频一个星期就能看完的,最关键的是,看完了文档,吸收的效果并不好,所以我也开始转变观念,看视频学习确实也是一种高效的入门方式
    eudore
        36
    eudore  
       2021-06-25 08:45:11 +08:00
    看代码写代码
    paoqi2048
        37
    paoqi2048  
       2021-06-25 10:56:51 +08:00
    @matrix67 总结到位
    baoyexi
        38
    baoyexi  
       2021-06-25 11:09:51 +08:00 via iPhone
    精进个人理解如下:
    1. 基础知识牢固,算法,语法,体系结构都算。
    2. 在自己的专业领域多学习著名开源项目。学架构看看怎么实现更容易维护和新增功能。学算法看看怎么高效处理问题。
    3. 结合以上 2 点解决自己项目中的问题,不断迭代。

    至于文档和代码细节这种东西都是需要了才去搜,专门去通篇看感觉像进入了汪洋大海一样,而且边看边忘。还是要边学边用边思考才能转化为自己的。想起故人一句话,学而不思则罔,思而不学则怠。
    dany813
        39
    dany813  
       2021-06-25 11:11:55 +08:00
    @matrix67 很棒
    Accessing
        40
    Accessing  
       2021-06-26 08:03:06 +08:00


    视频更新必然是缓慢的,其中的内容大多是比较基础和成熟的。在深入学习方面 视频<书<文档<源代码




    看不懂源代码没关系,这是个需要学习的功夫,逢山开路,遇水搭桥,遇到什么问题解决什么问题。

    如果看不懂源代码,那正是你要学习的时候,如果感觉很轻松,那就没有意义了,这就像学英语那样,遇到不懂的单词是很正常的,如果都懂那反而不正常,那不叫学英语那叫看杂志。

    如果每次开枪都命中靶心,只能说明你离靶心太近了。



    任何手艺都不简单,不要想学个编程自己就成天才了,看几本书觉得自己了不起了就能搞定了,都需要刻苦长期的努力,如果你只想玩玩看,那么你的水平就是玩玩看的水平,如果超水平发挥了那是意外。
    aaronlam
        41
    aaronlam  
       2021-06-26 10:04:46 +08:00
    @matrix67 感觉这才是比较靠谱的路线。。
    MarkLeeyun
        42
    MarkLeeyun  
       2021-06-26 10:14:32 +08:00
    大型实际项目的的教学视频,,这个只能去公司才能有机会把。
    MarkLeeyun
        43
    MarkLeeyun  
       2021-06-26 10:16:57 +08:00
    @matrix67 确实。这些才是精进之路。顶起来。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1254 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:02 · PVG 02:02 · LAX 10:02 · JFK 13:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.