关于程序员如何精进细节的三个问题。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
liuser666
V2EX    程序员

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

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

    诚心请教各位三个问题

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

    • 关于技术精进这一块,难道只有看开源项目了?但是常常看不懂…比如说 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 可以帮你搜到不少优质资源。
    asLw0P981N0M0TCC
        16
    asLw0P981N0M0TCC  
       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     Solana     2767 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 15:06 PVG 23:06 LAX 08:06 JFK 11:06
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86