V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wanmyj
V2EX  ›  程序员

会写代码但是缺乏工程能力,该怎么补

  •  
  •   wanmyj · 2024-08-07 15:25:42 +08:00 · 5113 次点击
    这是一个创建于 390 天前的主题,其中的信息可能已经有所发展或是发生改变。

    写 C++五年了,一直流连于各大厂拧螺丝,每个项目里都是上百号人写了十几年以上的代码,在里面修各种离奇古怪的 bug 。

    今天被同事请教一个 MFC 的界面问题,很小的一个 GUI 程序,以为 3 分钟搞定,结果彻底蒙圈了,完全不了解界面那一套,文档都要从绪论开始开。

    感觉自己的代码之路走偏了,完全沦为了大厂打工仔,让我设计开发一款新的桌面应用,该怎么设计框架,设计模块,脑子就一片空白。学那么多 C++的八股知识,看似学到了,实际上无非就是茴字的四种写法。不知道有没有人跟我有同样的困扰,想请问大家该怎么破这个局。

    30 条回复    2024-08-09 09:44:24 +08:00
    flyhelan
        1
    flyhelan  
       2024-08-07 15:37:08 +08:00
    你不是一个人。
    tool2dx
        2
    tool2dx  
       2024-08-07 15:37:41 +08:00
    C++开源工程很多啊,多看看老外怎么写的,多抄抄不就可以了。

    比如 unreal ,比如 webkit ,比如 chrome ,编译一次都够久了,都是巨无霸。
    ih8es9OIzne0959p
        3
    ih8es9OIzne0959p  
       2024-08-07 15:37:55 +08:00
    我算不算是相反的,主 cpp ,副 Java ,react ,vue 。cpp 只用框架,能不造轮子就不造,现在导致代码的功底很薄弱,很少有一次编过,经常犯低级错误将 cpp 的内存机制和 Java 的那一套混淆,导致代码很不规范,之前埋的坑经常爆发。
    F281M6Dh8DXpD1g2
        4
    F281M6Dh8DXpD1g2  
       2024-08-07 15:42:56 +08:00
    隔行如隔山,这有啥奇怪的
    jjx
        5
    jjx  
       2024-08-07 15:50:07 +08:00   ❤️ 8
    没啥
    有了工程能力
    你又会感叹没有设计能力的

    有了设计能力,可能又没有销售能力

    人不到全才和完美
    wanmyj
        6
    wanmyj  
    OP
       2024-08-07 15:56:00 +08:00
    @ajaxgoldfish 真的是完全相反。我现在修的 C++的 bug ,基本都是对象没有正确释放,参数类型强转出错,数据计算精度错误,环境变量错误,反正都是很细节的东西。我倒是很羡慕你的状态,能自己独立挑起来项目大梁,修 bug 改代码就招一两个我这种老学究就完事了
    AoEiuV020JP
        7
    AoEiuV020JP  
       2024-08-07 16:43:14 +08:00   ❤️ 1
    也是, 想自己写点小东西就各种纠结,框架搭不起来,总觉得这样也不好那样也不好,找找教程或者其他开源项目吧,也套不上, 自以为这点小东西实现起来还是没问题的, 实际上纠结半天一行代码都没写,
    szboy
        8
    szboy  
       2024-08-07 16:47:01 +08:00
    深度和广度都需要发展
    liuzhedash
        9
    liuzhedash  
       2024-08-07 16:51:44 +08:00   ❤️ 1
    正常,因为之前你关注的点都是细节的,具体的问题,而没有从 0 开始做一个完整应用的经验
    好比之前你是个小兵,打了几年仗会用 ak47 和火箭筒了,现在让你当连长指挥几个排,武器经验仍然有用,但是更重要的是思考怎么把各个作战单位组织起来,打赢一场战斗
    其实,这也是各个大厂最希望员工达到的状态,完美的标准螺丝钉,不但随时可以替换,而且你离开现在的岗位技能就没用了

    破局的方法也不复杂,就是开始从 0 开始制作一个应用,比如从空白工程开始写一个 Windows 窗口程序
    mcfog
        10
    mcfog  
       2024-08-07 17:02:55 +08:00
    这不是正常的吗,你找个平均的 spring boot 搬砖师傅来请教个安卓 GUI 问题,也是懵逼的啊

    工作这么多年还觉得用同一个语言就是同一个工种,这才是大问题吧
    jufeng
        11
    jufeng  
       2024-08-07 17:31:23 +08:00 via Android
    1. 软考证书考试走一遍,可以补全理论知识
    2. 主动申请承接项目的各个环节的工作参与,即使是讨论群组,会议旁听也可以
    3. 主动跟踪支撑项目全流程从需求端到交付全流程,这个很费精力,还得领导能给机会
    jufeng
        12
    jufeng  
       2024-08-07 17:34:29 +08:00 via Android   ❤️ 1
    这两年最大的体会,就是软件工程首先是个工程,最终目的就是输出一个交付出去,受用户受众认可的软件产品。软件和土木其实没啥区别,只是实现手段和产品形态不一样。
    xing7673
        13
    xing7673  
       2024-08-07 17:34:43 +08:00
    直接点说,放弃 c++,多接触其他语言框架。
    c++做工程个人单打独斗就是时间黑洞。
    用其他语言做跳板多接触业内主流技术框架开拓视野,渐渐就能用这些积木搭建你想要的玩具了。

    当然不是说你主业放弃,因为按照你的描述来看,你主业的 c++在企业里还挺有含金量。
    业余时间平均每天有 1 个小时左右就行
    iOCZS
        14
    iOCZS  
       2024-08-07 17:37:38 +08:00
    MFC 本就是有点年头的东西了,设计理念跟 WPF 就差很多了
    MrVito
        15
    MrVito  
       2024-08-07 20:16:05 +08:00
    问题关键在于,MFC 这玩意和你平时用的 C++,完全就是两个东西呀。就像 10 楼回复的那样,同一个语言,本来就可能差距很大。java 框架更多,你让平时用 A 框架的人去修复 B 框架的问题,肯定不可能的。
    levelworm
        16
    levelworm  
       2024-08-07 20:21:54 +08:00 via Android
    得自己写项目。另外 MFC 这种东西,可能 ChatGPT 会有帮助。
    xuelang
        17
    xuelang  
       2024-08-07 20:56:30 +08:00   ❤️ 2
    这时候需要 ChatGPT 或者 Claude 了,哈哈,本后台写 c++的,用 Claude 快速撸了一个 nextjs 的 web 站 https://gallery.selfboot.cn/

    有算法演示,web 游戏,和工具,代码开源。 看 ai 写,慢慢迭代,也就慢慢懂点前端了
    jones2000
        18
    jones2000  
       2024-08-07 22:35:32 +08:00
    c++ 5 年,只能算刚刚入门。MFC 可以看<深入浅出 MFC>侯捷写的, 看完自己用 win32 写一套类似的 MFC 框架,写完基本就懂了。 少用开源,尽量都自己写。
    GrayXu
        19
    GrayXu  
       2024-08-08 01:37:55 +08:00
    不懂 MFC 这种古董不是很正常嘛。。
    xuanwu
        20
    xuanwu  
       2024-08-08 07:56:12 +08:00
    可以在 gitee 创立一个开源项目,解决工作生活中碰到的一个小问题。
    然后用悬赏功能新建任务,锻炼项目规划、与新开发者交流、任务进度管理、测试验收、预算编排等等能力。
    vitovan
        21
    vitovan  
       2024-08-08 08:49:46 +08:00
    很羡慕楼主啊,现在我写个 C 的字符串拼接都要去查文档,最后还整溢出了。
    MozzieW
        22
    MozzieW  
       2024-08-08 09:12:45 +08:00
    最近杂活干多了,也感觉自己不会写代码了(从头设计、实现一个功能系统),翻出了《代码大全》,常看常新。

    我理解这是一个思维的问题,Bug 改多了,脑子里多解决问题的思路都是找到问题点,然后思考怎么调整代码逻辑,最后解决。

    但是要搭建一个新的,第一步是要了解需求,分解模块,逐步实现,这些也是要思考的。平时看代码很容易看出模块,但是的确太久没主动思考怎么根据需求划分模块了。
    zsc8917zsc
        23
    zsc8917zsc  
       2024-08-08 09:15:20 +08:00
    打开 gpt 让他从创建一个项目开始一步一步的教你
    originals
        24
    originals  
       2024-08-08 09:26:00 +08:00   ❤️ 1
    同 c++五年,一开始也是修 bug ,然后到后面自己负责项目就开始设计架构模块啥的,不过这种机会感觉大厂很少吧,毕竟分工太细人也多,我朋友也是大厂拧螺丝,不过给的钱是真的多哈哈哈
    Od37v61n5s89gXx8
        25
    Od37v61n5s89gXx8  
       2024-08-08 09:54:49 +08:00 via iPhone
    你现在这就是标准的码农啊,要想做工头,就看看工头是咋干活的呗
    LwZiye
        26
    LwZiye  
       2024-08-08 10:28:31 +08:00
    多看,多思考,多重构
    magiclx
        27
    magiclx  
       2024-08-08 13:17:11 +08:00   ❤️ 1
    MFC 是对 Win32 API / Windows SDK 的封装,目的是让你更方便使用 API ,里面用了一些宏和注释的约定,得按它设计思路填写代码。GUI 的东西还不太复杂,复杂的是一些稍微复杂的东西和操作系统设计搅到一起,比如消息机制、事件循环、进程、内存、线程、异常处理,所以现在除非必要,否则界面都用类 Web 的 HTML 或 XML 来表达了,MFC 是微软自己也放弃的,很少场景一定要用这个老古董,大家用的多的不都是 DirectUI 或一些第三方控件吗。你说到的工程能力,不知是不是指一个项目从头开始搭建工程,我想这里的难度分为两部分,一是 GUI 你不熟,其次是从需求到设计你不会转化。对于前者,可以先了解现在主流的 GUI ,然后选择一种满足需求的主流框架,可以询问 AI ,多问几轮,也就能了解了;而从需求到设计是从技术视角到业务视角的转化,本身还是一件事,只不过角度不同。前者吃学习能力,你都辗转大厂了,应该很强,后者吃经验,只能多看多思考,事上练得,急不来。能快速提升功力的,那就找行业内的人指导指导,说不定一点就通。
    qiyilai
        28
    qiyilai  
       2024-08-08 13:57:28 +08:00
    所有框架,特别是大而全那种,都是屏蔽了很多实现过程和细节,一开始只能按照它的规则去填充,后面接触多了,像一些多年的项目也是一样的,短期也搞不清全部流程,大多数情况下一个框架明白了其他都是类似的
    LuckyPocketWatch
        29
    LuckyPocketWatch  
       2024-08-08 18:45:52 +08:00
    初学 C++,看完<c++ primer plus>,后觉得自己只会基本语法,于是学了 Qt

    学完 Qt 。发现算法基本不会,于是学了<算法导论>和<数据结构>
    学完算法。发现对实现不了解,于是学了<STL 码源解析>
    学完 STL 实现。发现不会设计,于是学了<设计模式>
    学完了设计模式,发现对编译一无所知,于是学了<编译原理>
    学完了编译原理,发现缺乏数据库至少,于是学了<数据库原理>
    学完了数据库,发现缺少源代码阅读,于是阅读 levelDB 的源代码
    学完了源代码,发现 C++标准以及到了 C++20 甚至 c++23 了,于是赶紧开始学习 C++20 标准,特别四大组件
    .......
    以上仅限 C++

    但回过头来,我现在就靠 c++基本语法和 Qt 吃饭,就目前而言,能用到的也就 C++语法和 Qt 了

    能用到 == (工作用到 || 面试被问到)
    wanmyj
        30
    wanmyj  
    OP
       2024-08-09 09:44:24 +08:00
    @LuckyPocketWatch 敢问兄台的工龄几何?这里面好几本书我都看了个大概,都没能耐心看完
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5626 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:18 · PVG 11:18 · LAX 20:18 · JFK 23:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.