菜鸟笔记
提升您的技术认知

如果对C++程序员分层,来看看你在第几层

C++有句俗话说:一年精通 三年熟悉 五年了解 十年用过,如果可以把C++程序员分层的话,看看你在第几层?

如果对C++程序员分层,来看看你在第几层

第0层

掌握基本的C++语法,会写一些基本的if-else,for循环,switch-case等。可以简单的使用C++的IDE,把书上的代码一行一行敲上去,会点击Run按钮运行程序,可以输出hello world。

第1层

熟悉C++大多数语法,了解面向过程与面向对象编程思想,了解封装、继承、多态的合法使用,了解指针、函数指针、回调函数、异常处理、文件操作、STL的使用,可以解决简单的编译链接报错问题。但缺乏独立思考的能力,甚至都不知道如何提问,一般面向百度编程,熟练掌握ctrl+c和ctrl+v操作,只要程序达到过预期的结果就已满足,可以简单的做出个Demo。

第2层

熟练掌握C++大多数语法,熟练背诵大多数C++面经。了解C++11、C++14、C++17甚至是C++20的新特性,面试技术单点时没什么问题,说起来头头是道,但做起来一塌糊涂,没有从0到1做公司级项目的能力,着重于完成某项子功能,没有设计图纸的能力,可以在现有框架上增删改,代码可读性、可扩展性、边界条件处理、程序性能、编码规范等问题往往不太考虑。

第3层

读过一些经典C++书籍,对STL、BOOST等经典库可以熟练使用,看过部分经典库的部分源码,了解基本原理,掌握常见的设计模式,掌握C++的好多奇技淫巧,对代码有洁癖,按照编码规范编程,会对边界条件做详尽处理,代码可读性较高。写代码时经常炫技,代码骚气逼人,自认为可以碾压大多数人。然而炫技通常会导致开发周期长,代码膨胀,后期维护难,其他普罗大众通常看不懂这种炫技的代码。

第4层

重剑无锋,大巧不工,不再炫技开发,简单合理的能够完成需求就好。熟练掌握操作系统,编译原理,掌握编译与链接的大多数知识,了解编译器背后的故事,熟练使用各种调试工具,各种性能分析工具,了解内存对齐,知道如何调试内存泄漏问题,如何调试死锁问题,深入理解CPU Cache、文件系统、进程与线程、TCP/IP、内存模型等知识,参与开发过系统级的项目开发。动手能力强,接到需求后有自己的想法,可以快速给到实现方案。了解C++的各种方案优缺点,常见的坑以及各种避坑方法。

第5层

从0到1设计开发过系统级、高性能的项目,并被一定量级的用户使用过。不再着重于技术单点的实现方案,完全领悟并灵活使用各种设计模式,更着重于整体架构的设计,即设计那一张工程图纸,给出整体的解决方案,追求设计更合理的架构,着重于模块划分是否清晰,着重于高内聚低耦合,着重于系统的健壮性,灵活可扩展性,可以应对大规模需求的迭代与变更。

第6层

混迹于国内国际各种C++开发者大会,各种演讲,分享自己的开发心得,分享架构设计方案,受众生膜拜。例如侯捷、张银奎、吴咏炜、潘爱民等(排名不分先后)。

[图片上传失败...(image-b477ec-1628426161995)]

第7层

C++标准委员会成员(尽管一堆人在喷他们脑袋有坑,但不可否认,他们确实就是顶尖的C++程序员)

如果对C++程序员分层,来看看你在第几层

第8层

Bjarne Stroustrup,凡是我们C门子弟,无需多言吧。yyds! C++之父。

如果对C++程序员分层,来看看你在第几层

最后说几句,学习C++确实挺苦,精通又有什么用呢,面试造火箭,入职不还是拧螺丝嘛!语言可能没有那么重要,我们多数人可能永远也到不了第6层,但我们可以尝试去精通某个领域,例如精通人脸识别、自动驾驶、游戏开发、音视频开发、网络开发、移动端开发相关的业务等。

我们也要着重于提高自己的这三种能力:

  • 分析问题的能力
  • 解决问题的能力
  • 掌控全局的能力