成为 C加加 高级工程师必备的几个条件,全部具备绝对是大牛级的存在

C++这门语言从诞生到今天已经经历了将近30个年头。不可否认,它的学习难度都比其它语言较高。而它的学习难度,主要来自于它的复杂性。现在C++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替C++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器。现在学习java、C#等语言的人数远远高于C++,主要是C++的入门门槛太高,可能学习了一段时间后还做不了什么东西,导致信心大受打击,进而放弃。但是如果想在编程这条路上走的更加长远那么C/C++,就是你在编程路上的筑基石。

接下来大概描述下成为C++高级工程师需要具备些什么:

技术能力

语言

数据结构和算法

很多人都忽视了数据结构和算法方面的知识,尤其是一些编程语言的库做得非常好,几乎不需要自己去实现一些数据结构和算法,导致现在很多程序员不重视甚至忽略这方面的知识。但是,当我们想让我们的程序跑的更快、内存占用更少的时候,这些知识就非常非常重要了。很多程序员都是刚开始的时候不重视这些,但是工作几年后又来补习这些知识。

最开始可能不需要学习的太深入,但是基本的数据结构和算法一定要知道。

数据库

学习数据库的基础知识,并且掌握一种数据库使用,推荐使用mysql,而且最好不要用一些封装好的接口,而应该直接用mysql提供的数据库api,可能对数据库了解的会更深入。

并行

cpu主频已经不能遵循摩尔定律了,现在cpu发展的趋势是多核心。无论是多线程,还是多进程,都是为了更好的利用cpu的性能,提供更好的用户体验。这就要求我们如果要写出高效的应用程序,必然要涉及到并行计算。多花些精力在并行计算上吧,一定会有丰富的回报。

网络编程

这里所指的网络编程是指socket编程。现在C++的应用很多都是在做服务器开发,如何开发一个高并发、大吞吐量、高稳定性的服务器就是我们要考虑的了。

设计模式

设计模式不是具体的技术,更多的是如何让代码更容易阅读、更好扩展、更容易使用。

8.库的使用

C++标准库仅仅提供了一些很基本的功能,所以我们经常会引入一些第三方库。最著名的恐怕就是被称为准标准库的boost库,它提供了我们编程中用到的各方面的技术,文本处理、算法、网络、多线程、图像处理等等,几乎无所不包。其它也有一些专著于某一方面的库,比如ACE是网络通信方面的,TinyXML是解析xml的,OGRE是图形渲染方面的。

操作系统的知识

程序员需要了解的操作系统知识和普通用户是不一样的,一个高手是需要深入了解操作系统的方方面面,而不是停留在使用层面。至于应该了解哪些知识,windows上的去看《windows核心编程》,linux的去看《深入理解linux内核》,应该可以知道自己应该学什么了。

项目经验

以上的内容如果都精通了,也算是个比较厉害的程序员了。但是对程序员来说,项目经验更加重要。一个好的项目可以让你把各种技术进行综合运用,并且能学到一些新的知识。扎实的C/C++程序设计及编码功底,熟悉相关开发环境和调试工具。熟悉TCP/IP、HTTP等通信协议,有多线程、网络编程、大规模并发服务器设计开发经验熟悉海量数据的分布式处理、各种分布式计算模型,或者分布式存储、分布式计算系统的设计模型熟悉nginx/sphinx/lucene/redis等开源引擎原理等。设计模式是程序设计的灵魂,是通用方法,当你面对一个大型项目的时候,如何设计一个有弹性的系统,是所有系统分析员应该掌握的技能。在设计模式的研究上,要结合实际的项目进行。

很多程序员会忽略项目的经验,而单纯的谈技术能力,这是错误的。其实这就是理论和实践的关系,技术就是理论知识,做项目就是实践,理论对实践有知道作用,实践能加深我们对理论的深入理解。

沟通能力

你明白和你能把别人讲明白是两码事。很多时候自己也有这种感觉,自己对这个问题是很清楚的,但是不注重表达的方式,反而把别人讲晕了,越扯越复杂。同一个问题,换不同的人,换不同的表达方式,或许得到的效果就不一样。这充分体现了沟通交流、表达能力的独到之处。

现在做项目通常是以团队方式。在做项目的过程中不可避免地要和别人沟通,这个时候就是考验你的说话能力了。如果方法到位、沟通能力很强,就会事半功倍,否则只能事倍功半。

总结

想要成为一名高级C++工程师是需要时间积累的,不是一朝一夕就可以完成的。所在过程中要懂逻辑,这点其实挺难达到,很多很不错的程序员其实逻辑能力不行,所以我觉得限制了他们更深一层次的发展。或者说限制了他们解决特别复杂问题的能力。要有分析能力。这也是解决复杂问题不可或缺的能力。要会自学,技术发展速度很快,如果没有自学能力会被淘汰的。所以在中国英语要好,不然看不懂最新的技术走向。要有良好的时间管理习惯和意识。当然小所说也飞绝对,欢迎补充。

本文来自企鹅号 - 程序员港湾媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

业务运维部门的岗位价值 V2

业务运维部门有四个方面的岗位价值,按照实现的难易程度排序 效率 质量 成本 安全 效率 这是最容易实现,也是能够输出最大的价值地方。现在的竞争,更多的是 ti...

3704
来自专栏靠谱PM

调研现场

上两篇文章中写到为什么要做用户调研以及用户调研的流程,今天来说下调研现场应该怎么做。

1406
来自专栏灯塔大数据

IBM高级工程师谈数据湖管理

“在我看来,数据湖是一种参考架构,在保证信息管理秩序和信息安全的条件下,提供了获取数据的有效途径。” ? 何为数据湖 数据湖参考架构实际是指分析系统必备的技术...

3589
来自专栏程序员互动联盟

C++都从事哪些工作能挣钱不?

java大行其道的今天我们来谈谈c++,现在学c++的人越来越少了。问题在哪?互联网盛行的年代,能吸引眼球的就是能赚钱的。所以一看招聘,发现做java开发是抢手...

34910
来自专栏PPV课数据科学社区

信息图表-快速引导你学习Python去做数据科学

我想通过学习Python语言来学习数据科学,所以我在谷歌上搜索:“我想通过学习Python语言来学习数据科学。而在谷歌,不一会儿的功夫就列出所有关于Pytho...

3124
来自专栏云计算D1net

基于私有云优势的迁移靠谱吗?

可以肯定地说,几乎每家企业是虚拟化用户,而其中一大部分企业也会同时使用公共云的服务。云计算的普及促进了人们对数据中心虚拟化到私有云迁移兴趣的增加,但许多人仍不清...

2723
来自专栏ThoughtWorks

微服务即演进式架构 | TW洞见

今日洞见 文章作者来自ThoughtWorks:Neal Ford& Rebecca,译者来自ThoughtWorks:禚娴静。 本文所有内容,包括文字、图片和...

38310
来自专栏phodal

为什么说全栈工程师是未来?| 长文多图

谨以此文献给每一个为成为优秀全栈工程师奋斗的人。 节选自《Growth: 全栈工程师学习手册》 ? 技术在过去的几十年里进步很快,也将在未来的几十年里发展得更快...

2728
来自专栏喔家ArchiSelf

再谈<全栈架构师> 一文

在SDCC2016的架构师进阶之路主题,我分享了《老曹眼中的全栈架构师》话题,会后在csdn博客(http://blog.csdn.net/wi...

752
来自专栏IT大咖说

优云新一代智能化运维管理解决方案

摘要 优云软件解决方案中心总监童华权为我们带来优云作为国内在运维领域做得比较深刻的厂商,在运维管理方面的一些见解。 ? 运维面临的挑战 数据中心进入“两化转变”...

83413

扫码关注云+社区

领取腾讯云代金券