如果把程序员分级的话 你在第几级?
0级
掌握基础的C++语法,能够编写简单的if-else语句、for循环、switch-case语句等。熟悉C++集成开发环境(IDE),能够逐行输入书中的代码并点击运行按钮,实现输出“hello world”。
第一级
熟悉大部分C++语法,了解面向过程和面向对象编程范式,理解封装、继承和多态的正确应用。熟悉指针、函数指针、回调函数、异常处理、文件操作以及STL的使用,能够解决简单的编译和链接错误。
然而,在独立思考方面有所欠缺,不太清楚如何提出问题,通常依赖百度等搜索引擎进行编程。熟练使用复制粘贴操作(Ctrl+C和Ctrl+V),只要程序达到预期结果即满足要求,能够制作基本的演示项目(Demo)。
第二级
精通大部分C++语法,能够熟练运用面试常见技术点。
了解C++11、C++14、C++17甚至C++20的新特性,在单一技术点面试时表现出色,但在实际操作中可能表现不佳。
尽管缺乏从零开始完成公司级项目的能力,更擅长完成某一子功能。不具备设计整体架构的能力,能够在已有框架上进行增删改操作,对于代码的可读性、可扩展性、边界条件处理、程序性能以及编码规范等方面常常不太重视。
第三级
曾阅读多本经典C++著作,能熟练运用STL、BOOST等经典库,浏览过部分经典库源代码,理解基本原理,掌握常见设计模式,精通C++的众多巧妙技巧,对代码质量要求甚高,遵循编码规范进行编程,充分考虑边界条件,代码的可读性极佳。
在编码过程中常展现出技巧,代码富有创意,自信可以胜过大多数人。然而,过度炫技常常导致开发周期延长,代码膨胀,后期维护困难,其他一般开发者很难理解这种华而不实的代码。
第四级
追求实质而非表面,注重简洁高效而非虚华。
深谙操作系统,编译原理,掌握编译与链接的大部分知识,了解编译器背后的内幕,娴熟运用各类调试工具和性能分析工具;
了解内存对齐,熟悉处理内存泄漏问题的方法,能够解决死锁问题,深入领会CPU Cache、文件系统、进程与线程、TCP/IP、内存模型等领域,参与过系统级项目的开发;
具备强大动手能力,获得需求后能迅速构思方案。了解C++各种方案的利弊,熟悉常见陷阱以及应对之道。
第五级
在国内外各类C++开发者大会上游走,参与各种演讲,分享个人的开发心得和架构设计方案,受到观众的尊敬。像侯捷、张银奎、吴咏炜、潘爱民等一样(排名不分先后)。
第六级
C++标准委员会的成员(虽然有人批评他们的想法,但不可否认,他们确实是顶尖的C++程序员)。
第七级
Bjarne Stroustrup,他是C++之父,对于我们这些C++学习者来说,无需多言。学习C++固然艰苦,但精通又是否有所值呢?虽然面试时可能高谈阔论,但入职后岂不只是日常工作?
语言可能并不是唯一关键,大多数人或许难以达到最高境界,但我们可以专注于精通某个特定领域,例如人脸识别、自动驾驶、游戏开发、音视频处理、网络编程、移动端开发等。同时,我们也应该专注于培养以下三种能力:
- 准确分析问题的能力
- 解决问题的才能
- 管控全局的智慧