一个C/C++程序员的10年总结和5年规划

11 阅读13分钟

为什么突然想起来写这篇文章,是因为昨夜追短剧后迟迟无法入睡,脑海里一直思来想去,突然想起今年上半年和我交接工作的同事苏某对我说过的一句话——突然觉得自己上了这么多年的学和积累的开发经验,以后全没用了,这是他的遗憾。

时间拉回到我刚毕业的那年即2015年6月份,也刚好是前同事苏某和我交接工作的月份,与此不同的是我那会刚毕业,即将进入职场,而前同事苏某即将离开职场进行中年的二次择业。

2015年刚毕业那会,我经过简历投递和现场面试,拿到了XX省属交通投资集团下属科技公司的offer,岗位职责是负责XX省高速收费站内监控系统的搭建和维护。每年年底会陆续开通挺多站点,这时候需要去给新收费站监控中心搭建视频监控系统,而那些已在运营的站点内的视频监控系统需要维护。工作痛点就是经常出差,一个月30天有28天在出差,剩下2天周末休息在家还得保持有问题及时响应,远程解决问题。

国企里面其实没有多少有竞争力的技术,所以视频监控系统是XX省内一家小安防企业定制化的,问题搞不定还得依靠该企业技术人员;国企优势也很明显就是业务垄断,所以XX省内高速公路道路机电和软件系统这块全是我们单位在做。后来因为一个新站点开通,项目上用到了两款以前没有接入过的设备,即北京某视的编码器和摄像机,然后我司肯定搞不定,就需要找到幕后的这家安防公司提供技术支持,然后方案就是我过去合作开发,花了两个月时间,在这家安防公司技术人员的帮助下,完成了这两款设备的对接上线。

初入职场就体会到了社会的险恶,这段工作结束于直属上级对我的PUA、无法实现当初画的饼、以及让我背的锅,内部的勾心斗角我实在无法忍受,就于2017年主动离职了,当然这个合作开发项目经验也为我后来的职业发展路线奠定了基础。

第一份工作离职后,我就离开XX省,然后去了大上海,人生地不熟的我只能联系大学同学,后面也是同学接待和安顿了我。然后每天就是线上约面,线下面试,每天2场,公交地铁来回倒,真的挺累的,关键是一个半月内竟然没有找到合适的岗位,就算有两个意向,最终一个被内推人员挤掉了,还有一个是因为薪资要高了,offer给了要的薪资更低的牛马。也或许是我当时技术太菜了,惨遭放鸽子。

经过不断反思总结,我发现C++的每个方向都有行业壁垒,没有相关经验,基本没有公司愿意培养你,除非你是应届毕业生走的校招。所以社招只能利用行业经验进行跳槽,认识到这一点,我就开始转投安防企业,线上约了杭州某视,然后直接离开上海去了杭州,当然人生地不熟的我再次投奔了杭州工作的大学同学,又是一顿接待和安顿,后面线下去某视现场面试,一下午通过了初面,二面和终面,初面面试官也就是我后面的师傅,也就是当时的小组长,二面面试官是三级部门主管,终面面试官是二级部门主管。记得一面有个问题是你去友商XX面试了么?我说没有。后面才知道,那时候拥有1-3年的行业经验在友商间跳槽是真的很吃香,基本属于点击就送那种。

回到同学住处静等了一周,然后闲的无聊,催了下一面面试官,然后他说他们那时候等offer一个月很正常,然后就帮我催了下人事,结果第二天我就收到了offer,并安排了体检和入职。因为中间gap了几个月,充满了对行业知识的渴望,入职后疯狂看项目文档和代码架构,转正后就开始带新人了,后面我师傅升职加薪了,我也跟着师傅混的风生水起,跨部门带团队干重大项目,参加国际组织互联互通大会,季度绩效最优,年终绩效最优,年终奖翻倍,有付出就有回报,记得最狠的一次就是项目攻关,我让底下的兄弟们凌晨零点先撤了,我继续干到了凌晨5:40,然后回去睡觉的时候,看见早餐店都开始营业了,热气腾腾的包子和粥,第二天准时上班后,人送称号:“某视铁人”。

职场幸事莫过于遇见一个好领导,培养你,重用你,教导你,带着你一路披荆斩棘。

到了一定的年纪,普通人就开始考虑人生大事,2019年底,回家过年期间,武汉疫情刚暴发,考虑到杭州房价以及疫情影响,思索再三,准备离开在杭州奋斗出的"小成就",回家乡省会城市合肥“成家立业”。其实在2019年底我就拿到了合肥某飞的offer,2020年初和师傅说了我的想法,惜别后,入职某飞,开始新的工作和生活。

回来的感觉就是生活成本降低了,生活质量提高了,幸福感也提升了。当时在杭州公司附近租了一个隔间,月租1800,大概15平的样子,除了工作就是在去工作的路上,出租屋就是晚上回来睡个觉,仅此而已。记得我姐一家带孩子去杭州玩,回来合肥的路上我姐和我姐夫说:“他一个人在这边挺孤单的,假如生病了或者出了其它意外,都没有人知道!”,这句话还是我姐回合肥后在微信上和我说的。同样的价格,在合肥公司附近租了一套两室一厅一厨一卫的房子,吃喝全在公司食堂,餐补完全覆盖。周末时间在合肥就和发小们一起吃喝玩乐,然后不定时去兄弟姐妹,亲戚朋友家蹭饭。

从2020年到2026年,在某飞的这段日子,一直在干音视频相关业务,主要就是智慧安防,直播,会议以及VOIP以及自动驾驶等相关项目的开发和维护,这些工作和我之前的安防行业还算对口,毕竟杭州那几家安防头部厂商也都有这部分业务,都会涉及将IPCamera接入到视频监控系统,直播系统,会议系统和VOIP系统,其应用也挺广泛。

玩归玩,闹归闹,从杭州回合肥的这几年,不能忘了正事,于是在2020年买了一辆车,2021年买了一套房,2022年结了婚,2023年有了自己的孩子,到现在2026年7月孩子即将满3周岁,可惜差一点上不了幼儿园,需要等到明年了。

时至今日,再回首,从在校内组建横跨3届百人开发学习团队,到刚毕业的C/C++小白,3年入行(第一家公司),5年懂行(第二家公司),10年为王(第三家公司),我深刻理解了张雪峰老师生前给我们的5条人生经验(由于无法上传相关视频,感兴趣可以自行搜索或者访问原文链接:mp.weixin.qq.com/s/4E0ey13a8…

为了不留职业生涯上的遗憾,其实我早在2023年的时候已经购买了cplusplus.icu域名,在2025年的时候购买了onvif.org.cn域名 ,希望将自己这么多年的开发经验和行业经验沉淀出来,让C/C++学习起来有迹可循,经过将近3年时间的准备,近期我建立了下面两个站点,分享我的经验和心得,后续会一直持续更新,还有挺多内容没有面世。

C++工程化实践指南 网址:cplusplus.icu

ONVIF中文社区 网址:onvif.org.cn

学习C++是一条充满挑战但也极具价值的道路,它的特点可以概括为“门槛高、上限高、应用广”。这是一门能让你深入理解计算机底层原理,并具备强大系统构建能力的语言。

为什么C++的学习曲线比较陡峭? C++之所以被认为难学,主要源于其语言本身的复杂性和对程序员的高要求:

  1. 语法复杂且灵活:C++支持多种编程范式,包括面向过程、面向对象和泛型编程。这种灵活性意味着在解决同一个问题时,你有多种选择(例如,用数组还是vector?用普通指针还是智能指针?),这要求学习者不仅要“会用”,更要理解“为什么这么用”。

  2. 底层概念繁多:指针、内存管理(堆/栈、new/delete)是C++的核心,也是初学者的“拦路虎”。你需要手动管理内存,一个不小心就可能导致“段错误”或内存泄漏。这种“严谨到苛刻”的特性,要求你对代码背后的运行原理有深刻理解。

  3. 庞大的标准库:C++的标准模板库(STL)功能强大,包含了各种容器(如vector, map)、算法和迭代器。虽然能极大提升开发效率,但其本身的复杂性和多样性也增加了学习成本。

  4. 错误调试难度大:C++的报错信息有时非常隐晦,比如一个未初始化的指针导致的崩溃,编译器可能只会给出一个“访问违规”的提示。这需要你学会使用调试工具(如GDB、VS调试器)来一步步追踪问题,调试能力本身就是学习的重要一环。

C++学习之路的阶段与特点 C++的学习是一个循序渐进的过程,通常可以分为以下几个阶段:

  1. 基础阶段:打好根基 核心内容:掌握基本语法(变量、数据类型、流程控制)、函数、数组,以及最重要的指针与引用。 阶段特点:这是最枯燥也最容易产生挫败感的时期。你需要理解C++与C语言的异同,培养面向过程的编程思维。此时的重点是“写得出代码”,能完成简单的计算、排序等小程序。

  2. 核心特性阶段:拥抱面向对象 核心内容:深入学习面向对象编程(OOP)的三大特性:封装、继承、多态。同时,开始接触和使用STL中的基础容器。 阶段特点:这是C++的魅力开始显现的阶段。你将学会如何用类和对象来组织代码,设计出可复用、易维护的程序框架。代码的表达能力和结构会显著提升。

  3. 进阶与实战阶段:深入与优化 核心内容:学习现代C++(C++11及以后)的特性,如智能指针(unique_ptr, shared_ptr)、移动语义、Lambda表达式等。同时,深入理解内存管理、模板编程,并开始进行多线程和并发编程的探索。 阶段特点:这个阶段的重点是写出“好代码”——不仅功能正确,还要安全、高效。你需要开始关注性能优化,理解不同写法背后的效率差异。通过实际项目(如管理系统、控制台小游戏)来综合运用所学知识。

  4. 专家阶段:探索底层与领域深耕 核心内容:研究C++的底层机制,如对象的内存布局、虚函数表原理、RTTI(运行时类型识别)等。同时,在特定领域(如游戏引擎开发、高频交易系统、嵌入式系统)进行深耕。 阶段特点:此时你已经是一名成熟的C++开发者,学习重点转向解决复杂问题、进行性能调优和架构设计。你可能会开始阅读STL的源码,甚至为开源项目贡献代码。 如何走好C++学习之路? 重视基础,切勿跳步:指针、内存管理、面向对象是C++的基石,初期觉得难也一定要花时间彻底搞懂,否则后续学习会非常混乱。 动手实践,项目驱动:学习编程最有效的方法就是敲代码。从书本上的小例子开始,逐步过渡到独立完成项目,在实践中理解和巩固知识。 善用调试工具:不要害怕报错,学会使用调试器去分析变量的值、内存的状态,这是理解程序运行机制和提升排错能力的最佳途径。 选择合适的学习资源:选择一本经典的入门书籍(如《C++ Primer》),配合优质的在线课程(如B站)或社区(如Stack Overflow)进行学习,可以事半功倍。

至于5年规划,按照今年目前这种状态,苟住现在的工作,然后精进音视频技术和行业经验是第一步,亦或者拿完大礼包,然后干个自由职业继续领完失业金。2026年是规划中的第一年,把一些核心技能以及经验沉淀成行业项目中的关键组件,然后搭建好两个分享站点框架。后续4年就是不断完善实战项目材料,采用图文和视频相结合的方式更好的呈现出来,感兴趣的同学可以访问以上两个站点,关注公众号了解最新进展,后续有了一定的行业经验后也可以参与行业开源项目共建,也可以沟通交流你的想法,也或者是答疑解惑,我在公众号后台看见后会积极回复的。

为了不留遗憾,最后再啰嗦一句,上述两个站点都在海外,如果遇见网络无法访问的,需要使用“科学上网工具”进行访问。

最后,世上没有白走的路,人生没有白读的书,你走过的路,你读过的书,会在不知不觉中改变你的认知,悄悄帮你擦去脸上的无知和肤浅。