V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
proxytoworld
V2EX  ›  问与答

大家如何实现编程能力的进阶,从学习完语法到能够写项目

  •  
  •   proxytoworld · 2023-02-25 13:48:32 +08:00 · 3491 次点击
    这是一个创建于 672 天前的主题,其中的信息可能已经有所发展或是发生改变。

    也学过不少语言了,rust 、go 、python ,总是学完语法,不能完成一个项目,看开源项目,感觉也很难看进去,没办法达成编程能力的进阶。

    有啥好办法能够突破初学这一层呢

    31 条回复    2023-02-26 14:02:57 +08:00
    CalebWayne
        1
    CalebWayne  
       2023-02-25 13:55:47 +08:00
    我是通过看机构视频
    sulaimanpro
        2
    sulaimanpro  
       2023-02-25 14:07:37 +08:00   ❤️ 2
    其实混的好不好,还是多方面的。技术只是基础,业务理解能力也很重要,只有业务理解了,才能从各个层面抽解代码,让代码看起来简洁高效。
    上一层讲,能完成编码业务,只是个打公仔,你还得学会驭人,把你的想法交给手下人去干好。
    再上一层讲,从概率上讲,一个医生能实现财务自由的途径,绝对不是精进医术。一个程序员想实现财务自由,决定不是精进技术。钥匙从来不在锁上,你得去别的地方找找。
    zapper
        3
    zapper  
       2023-02-25 14:27:08 +08:00
    软件工程,你得拿做工程的思维去看,学语言只是实现工程的一种主要手段
    hsfzxjy
        4
    hsfzxjy  
       2023-02-25 14:30:46 +08:00 via Android
    你得先有一个想做的项目的基本设计,然后直接上手就好了
    cmdOptionKana
        5
    cmdOptionKana  
       2023-02-25 14:42:35 +08:00   ❤️ 1
    循序渐进啊,先做小项目!

    小项目你不可能做不出来,比如一个 TODO 工具。

    做出来之后,可以在 todo 的基础上加上传图片的功能、加基础的 markdown 功能、加单用户登录,再加多用户登录…… 这样玩一下,基本上感觉就慢慢有了。

    然后再找稍大点的项目,比如论坛,或者多用户的博客平台等等,看你自己兴趣。

    或者你最终想做一个怎样的项目,说出来,让大家帮你拆解一下,拆成一个个可以轻松完成的小任务。
    yangzhezjgs
        6
    yangzhezjgs  
       2023-02-25 14:55:28 +08:00   ❤️ 2
    首先,你要理解所谓编程的本质是什么?
    是建模,简单说就是首先将现实中的人或物映射为数据表,然后把他们的互动过程转化为对数据的操作( CRUD )。
    所以项目关键不是编程语言,而是实现整个建模过程的设计思想——面向对象建模和实现工具——数据库和 web 服务框架。
    第二,最基本的建模思路就是针对功能需求用软件工程里的用例图,对象图(静态),时序图(动态)等分析建模,然后实现阶段,首先模块化分解,然后每个模块按照 MVC ,设计数据表和对应的操作函数。
    第三,就是进阶部分,你要开始学习非功能需求,包括性能(响应时间,吞吐量),高可用等,这些就要回到更本质的层面,包括学习多线程,网络编程,分布式等等。
    ugpu
        7
    ugpu  
       2023-02-25 15:06:00 +08:00
    不是你学了语言学到了就是会些代码了,
    我们学习编程的目的是 通过学习他 学会了一项技能 我们用这个技能能去做点什么
    摆脱应试教育的思维. 我们学习是认知 认知后去做点什么. 不是他能给我们做点什么 习惯 我们用他做点什么
    gant
        8
    gant  
       2023-02-25 15:12:06 +08:00 via iPhone
    just do it
    Skifary
        9
    Skifary  
       2023-02-25 15:31:32 +08:00
    只有真正做,遇到问题和解决问题以后才会有收获的感觉。

    纸上得来终觉浅,绝知此事要躬行
    whileFalse
        10
    whileFalse  
       2023-02-25 15:54:03 +08:00 via iPhone
    1. 下载一个简单项目,确保能跑起来
    2. 开改

    甚至都不需要提前学习语法。
    daimubai
        11
    daimubai  
       2023-02-25 15:55:37 +08:00
    @sulaimanpro #2 答不对题,好为人师
    panlatent
        12
    panlatent  
       2023-02-25 16:06:53 +08:00 via iPhone
    我觉得你没进行下去,没遇到一个让你感兴趣的项目,或者逼着你前进的项目。

    兴趣是最好的老师,找一个感兴趣的东西开始吧
    proxytoworld
        13
    proxytoworld  
    OP
       2023-02-25 17:33:13 +08:00
    @zapper 不是专业开发,对于项目中开发之间合作的流程还不太清楚
    proxytoworld
        14
    proxytoworld  
    OP
       2023-02-25 17:33:51 +08:00
    @cmdOptionKana 你做小工具会构思代码结构吗
    proxytoworld
        15
    proxytoworld  
    OP
       2023-02-25 17:38:47 +08:00
    @yangzhezjgs 感觉你讲的,醍醐灌顶,太强了
    sulaimanpro
        16
    sulaimanpro  
       2023-02-25 18:06:49 +08:00
    @daimubai 你说的对,听你的
    renmu
        17
    renmu  
       2023-02-25 18:24:47 +08:00 via Android
    说明你没有学精过一个语言,不然你会发现学新语言做个小东西是个手到擒来的活,很多东西都是与语言本身无关的
    ychost
        18
    ychost  
       2023-02-25 19:24:36 +08:00
    万变不离其中,如果搞 WEB 基本看下对应语言的热门框架就行了,两三天就能上手,最多五天熟练使用,但是如果是搞游戏、搞桌面之类的就需要花大力气了
    opengps
        19
    opengps  
       2023-02-25 19:50:05 +08:00   ❤️ 1
    完成项目的出发点不是技能多么高,而是需求足够强,你想做成的事你会主动排除困难找到对应的资源(比如技术,比如代码)
    cmdOptionKana
        20
    cmdOptionKana  
       2023-02-25 20:41:37 +08:00
    @proxytoworld 代码结构先别管,先写,一堆堆代码胡乱地堆在一起也无所谓,先把功能实现了,然后回头再改。

    改一遍,后续偶尔看教程或看别人的源码,肯定会看到别人的代码结构,由于你原本写过改过,印象就很深刻,可以马上参考起来。
    techstay
        21
    techstay  
       2023-02-25 20:48:06 +08:00
    代码这个工具是用来完成任务的,只要你有一些点子,就可以想着用新学的工具去实现一下,哪怕是十几行的脚本也没关系,能力就是在这个实践的过程中逐渐培养出来的。
    lzgshsj
        22
    lzgshsj  
       2023-02-25 20:56:13 +08:00
    看看软件工程相关的吧,从需求分析开始
    alne
        23
    alne  
       2023-02-25 21:18:32 +08:00
    @proxytoworld 不用构思,想到哪做到哪儿。
    等改不下去了就知道该重构了
    daimubai
        24
    daimubai  
       2023-02-25 22:26:19 +08:00
    @sulaimanpro 我不是你 dad ,别听我的
    richangfan
        25
    richangfan  
       2023-02-25 22:34:08 +08:00
    我是从想做个网站开始,根据他所需要的技术来学习的。这样就不会出现学了技术却找不到项目的情况。
    ClericPy
        26
    ClericPy  
       2023-02-25 23:00:56 +08:00   ❤️ 1
    以前也挺迷茫的, 后来发现自然而然就达到了... 过程中很难总结什么必经之路, 简单说几个有印象的点

    1. 计算机基础真的是润物无声地帮到我, 好多需求从未接触过, 但却能很快就上手解决
    2. 代码量似乎似乎真的是个笨方法却又极端有效, 万行 /十万 /百万行的自己回头望, 真的一层层鄙视过去的自己
    3. 软件工程的很多东西提前学了很难用到编码里面, 但是如果代码量上来了, 很多瓶颈和 bug 其实都可以在那些范式 /开发原则里面找到标准答案, 算是一种弯路超车的感觉
    4. 项目有时候到一定规模, 会遇到开发或设计瓶颈, 那些架构师的书里的解决方案真的省了不少脑细胞
    janus77
        27
    janus77  
       2023-02-26 01:55:15 +08:00 via iPhone
    多看别人的项目代码,不要只关心自己做的一两个模块,多从整体出发思考问题,看问题的角度不一样 你就能知道为什么这个地方要这样设计
    KIRAYOMATO
        28
    KIRAYOMATO  
       2023-02-26 02:13:41 +08:00
    多写,项目都是一点一点写起来的,一边写一边学
    andy20160606
        29
    andy20160606  
       2023-02-26 09:49:06 +08:00 via iPhone
    计算机语言是触类旁通的,只是语法特性略有不同,先熟练掌握一门语言即可。

    之后继续夯实基础,数据结构玩明白,做需求时,能提高效率,leetcode 上面的练习就不错

    最后找个公司实习,有个半年时间,独立开发模块就没什么问题了
    timelessg
        30
    timelessg  
       2023-02-26 10:00:14 +08:00 via Android
    想办法进中大厂,被需求推着很快就 ok 了
    Thecosy
        31
    Thecosy  
       2023-02-26 14:02:57 +08:00
    功能的实现过程其实跟语言无关,做下去就对了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2839 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:29 · PVG 15:29 · LAX 23:29 · JFK 02:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.