IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 1年工作经验的C++程序员,感悟分享 -> 正文阅读

[C++知识库]1年工作经验的C++程序员,感悟分享

工作感悟

从去年参加工作(C++开发工程师),到现在已经一年多3个月了,相比于刚参加工作时的懵懂,现在有了点自己的思考,写出来分享给大家。

我这里想总结3点

  1. why C++ ? (C++场景的特点)
  2. C++工程师的几个阶段
  3. 什么是价值?

写完这三点回头看,发现说的其实是同一件事,“业务”

1. Why C++?

这段比较杂,中心思想是“选择C++,是由业务背景决定的。成为一个优秀的C++工程师,需要掌握很多底层的知识

由于C++低级语言(更接近硬件)的特性,一般多用在”实时性强、高并发“的场景(如搜广推引擎、游戏引擎、金融交易系统、深度学习框架等)。

就个人而言,工作中接触到场景是基于C++的在线服务,“在线服务”的特性,要求写出的程序要有极强的稳定性,满足“365 x 24” 稳定服务不宕机,无性能衰减等。

这其实是一件非常难的事情,如果写的程序很容易有内存碎片的产生,一点数据的波动就可能导致无法正常提供在线服务,要手动重启才能解决。

另外,写高性能的C++的程序,不光要正确的实现业务逻辑,还要对操作系统、硬件结构有清晰的了解。

例如涉及到数据密集型的业务场景时,系统需要处理大量的数据,那我们在设计、实现的时候,就需要考虑怎样做才能获得更高的性能。如“增加L1 Cache的命中率”,“对于某段热点逻辑,是否可以直接写汇编代码来加速处理”。

一个优秀的C++工程师,需要掌握的不光是基本的语言知识,还有操作系统,计算机体系结构,这样才能对自己写的代码了如指掌。

2. C++工程师的几个阶段

结合一年的工作经验,以及对周围同事的观察,一个C++工程师职业生涯发展可以划分为以下的几个阶段。

1. 规范化代码风格,熟悉系统设计,实现业务需求

这个阶段,需要掌握基本的C++语法知识,熟练使用STL来实现需求。在实现需求的时候,也要额外注意自己的代码习惯(如Google的C++规范或公司内部的编码规范)。

工作中的业务需求,经常可能是对已有的项目进行改动,如添加新的功能。这个时候要求我们先要看懂原有系统的设计,思考怎样改动才能对原项目改动较小。如果原来的系统耦合太紧,那可能还涉及到项目的重构,那我们就要注意,如何保证重构后的逻辑跟重构前的逻辑保持一致。

这个阶段可能需要持续1~2年,一方面不仅需要大量的需求来练手,另一方面也需要熟悉优秀的代码是怎么设计的,这个时候就需要去看优秀的开源代码(如TensorFlow,brpc,redis等),去学习。“先看猪跑,看的多了,总有天能吃到猪肉”。

2. 分析性能热点,写出高性能的代码

在这个阶段,随着业务的迭代,原有系统的性能已经不能满足业务需求,这个时候我们需要对系统性能的瓶颈和热点进行分析,看是否有改进的空间,如果瓶颈受限于原系统的架构设计,那需要重新写一个新的系统,来支持业务的发展。

这个阶段可能持续1~2年,一方面公司可能没有那么快的业务迭代周期,对系统性能提出挑战需要一段时间,另一方面掌握各种调试工具,积攒各种场景的调试经验也需要一段时间。

3. 分析场景、业务,对下一代框架,技术的思考

前两点可能更多的是在“”的修炼,更确切的比喻是把自己的刀磨的更快了。到第三点,可能需要"道"的修炼了,更多的是对业务的思考,业务将来的迭代方向会朝哪里,当前的系统是否满足业务的需求?如果不能支持,瓶颈在哪里?系统下一步发展方向在哪里?

这个阶段可能持续3~年,有时不仅需要对业务进行思考,更需要对整个行业的发展思考。在思考以后,更重要的是要有行动,随着软件的日益复杂,即便你是一个10x效率工程师,也无法独立完成一个项目,那就需要你有很强的管理能力或者感染力,召集能干的小伙伴一起干番大事。

3. 什么是价值

最近在想什么是“价值”,读文章的你也可以思考一下,

自己每天写的代码,真的值公司付的工资么?
如果不值,你的价值在哪里?公司为什要花这么高的工资招你进来?

这个问题在昨天终于想明白了,谜底揭晓,对公司来说,真正具有价值的是“业务”。

在”业务“这个大背景下,你写的代码才有价值。

每个公司都有自己的业务,招人进来是希望能让该业务有更大的发展空间

或许是更快的迭代速度“,
或许是解决业务问题的能力“。
或许…

这是公司付你工资的根本原因。

所以我们在学习、思考技术的时候,一定不要脱离业务背景,不能在业务中落地,再牛逼的代码,框架,也是一文不值。

尤其是应届生同学要注意,可能刚入职的时候觉得拿到一个不错的offer就沾沾自喜,觉得自己对公司很有”价值“。但在接下来工作中,如果你不能对业务的产生增益,一段时间后,你对公司的价值会趋近于0,在该公司可能不会有好的发展

切记,真正具有价值的不是个人,是业务。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:27:42  更:2021-07-11 16:28:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 19:08:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码