赞
踩
最近知乎上有这么一个回答,坚持c++还有意义吗?或者说C++如何进阶?
在这里讨论c/c++的开发方向的好坏,本来就是一个极具争议的话题。就好比和大家讨论:谁是世界上最好的语言一样,个中都有强手。而技术方向也是,每一个方向都存在高薪和出色的公司。所以这里的讨论分享根据个人的看法和普遍行情做交流。
首先就开发方向而言,大致可以分为四大块:
嵌入式开发其实可以分为两大类:一类是不带操作系统,一类是针对带操作系统的Linux。带操作系统的当然还有其他,这里就拿Linux操作系统做讨论。
不带操作系统的,大家最熟知的就是MCU,这是很多同学大学时期就会接触的东西。比如智能家居,或者说给门做一个开关等等,这些对于刚开始做开发的同学来说,是比较酷。但是从这个场景也可以看得到,MCU是更适合单人或是小团队做的项目,不太适合大项目的多人合作。因为本身MCU的特点就在于轻量级,很小。很多公司项目就是一到两个人即可。选择这个方向的很多是以电子,通信,自动化或是机械设计相关专业的朋友,也就是计算机边缘专业的朋友会选择MCU,那如果是计算机相关专业的朋友可能就会选择Linux相关的,选择MCU的很少。
回归到话题本身,对于方向的选择就是个人的爱好与自己经验的选择。有些朋友可能就是喜欢做MCU,面向爱好编程,这里就不做讨论。这里我们更多讨论的是“面向薪资编程”,可能很俗气,但个人认这是相对客观的选择标准。
说MCU好吧,是的,MCU很容易学,不是很难。如果是想做软件开发,做硬件不行吗?
做硬件是可以的,硬件是软件的支撑。但是对于一名程序员来说,对于运用的多样化还是靠软件去支撑。也因为如此,软件开发的薪资会比硬件多很多。所以,如果不是特别喜欢,愿意为爱发电的化,还是建议大家做软件。
这里不推荐,不是因为没有市场,毕竟国内而言,好的,优秀的硬件大厂也不是没有。只是作为软件开发的角度来看,它的成长性不强,多人协作的能力不强,不适合大项目。这里大项目的理解是人数上的大项目,而不是金额上的。
嵌入式的很多岗位属于制造行业,其特点是靠硬件和人力成本上的利润获利,而软件对于制造行业来说就是半卖半送,不会以软件作何核心来体现。比如手机上的软件,
而Linux嵌入式比MCU好的点在于,至少是到操作系统的,其使用场景相对复杂。先说应用开发,以上位机,界面化开发为主,能选择的方向:QT等,其项目单一,迭代时间很长。然后是内核驱动开发,主要是产品厂商,可能会有少部分会有Java开发,大概率是的芯片原厂。
那说到这里,不少朋友可能会说,那到底如何选择技术方向呢?
其实很多现在大家所说的程序员的35的危机,大多来自于此,一个方向做了三五年,一眼就看到了八年十年后自己的样子,它的薪资成长性和技术成长性已经看到头了。另一方就是来自于内卷。
就上面已说的岗位而言,MCU 的薪资成长性,从新手到五年,是由区别的,但是五年到十年的提升就比较一般了,技术成长性也会一般。
而嵌入书,上位机,这种,如果是进大疆等这种龙头企业就没法谈,所以我们今天讨论的是一般性,不会拿最顶和最差做特例去谈。
说到龙头企业,这里和大家分享一下offer如何选择,特别是对于应届生而言,很多时候对于薪资和平台之间两难。
第一,看公司。公司是在什么平台,平台和公司有关,和你无关,但是公司好不好还是和自己有关的。行业往后排。
第二,看团队。大的公司是有不同的团队的,选择好的团队,也就选对了之后处事的同事人群,这对于自己之后的学习提升会有很大的帮助。
第三,看薪资。在好的平台公司,除非体量差别特别大,如果差不多,就看薪资。
第四,看技术方向。
很多人不理解,为什么把技术方向放在最后。
这么说吧,现在Java很火,不少的c/c++开发的程序员都转了Java和go,原因并不是说看好这个方向,大部分的实际情况还是在于,招聘的大小公司多,薪资高。其实也就是"面向薪资"编程。至于有人说的隔行如隔山,那大家可以想想,同样是编程,这座山能有多高,而且作为一名程序员而言,学习能力是必备的基础技能。
你能够让好的企业面试通过了你,并给你开出满意的薪资,然后让你转一个技术方向。说明他们认可你的学习能力,给你学习的时间。那自己还在担心什么呢? 当然,还是之前说的,自己对于目前的技术方向有追求就另说。
桌面开发的技术体系和上位机很像。c/c++的桌面开发以QT/MFC为主。其薪资也有很高的。比后端不会低。但是薪资的成长性上,五年和十年也不会太大。
游戏开发的好处在哪里呢?你可以完全不用担心没有应聘的岗位,岗位一直都会有,只要PC机还在,游戏产业还在。就会有大把的岗位。不像是区块链,搞不好就没有了。
游戏开发的话主要是游戏客户端开发和服务器开发。那这两个方向如何选择呢?如果薪资差不多的话,选服务器开发。
后台开发就比较泛了,比如前面说过的游戏服务器,还有金融,网络安全等等。但是总体来说,没有桌面开发那么多,更比不上Java。后台开发有很多,但是c/c++后台开发不一定每家公司都有。如果说你在的公司目前有c++后台开发或是以前没有现在准备有,说明相对来说该公司还是不错的。c++面向的是组件开发,要用到c++后台开发就是需要去造一些轮子。
这里是比较推荐大家,如果是准备扎根于c/c++这个方向,可以优先考虑c++后台开发。
原因有四:
第一,c++后台开发是常年公司招人却又招不到人的岗位,不是说它不卷,而是对于这个岗位的公司来说,基本上都是本着宁缺毋滥的原则。所以只要技术到位,薪资还是很客观的。而且大部分是大厂,对于学历的要求也是相对较高。
第二,c++后台开发基本上是大厂必备,对于想要进大厂的c++程序员,它是不错的考虑。
第三,c++后台开发工程师的培养周期很长,比如说Java ,你身边有没有工作四五年的Java程序员被3个月的新生代顶替掉的现象,而这个确确实实存在。而c++后台开发很难速成,它的慢也让很多本身是做c/c++的最后选择去做Java,python了。
第四,c/c++后台开发它是比较庞大而复杂的体系。比如A公司做即时通讯,B公司也做即时通讯,但是他们的代码框架是不一样的,日志也不一样,流媒体编码也不一样等等,这也就是为什么招聘的这个岗位的时候更注重程序员对计算机原理,底层技术的理解和学习能力。也正是这种非一成不变让技术岗位更具成长性和竞争性。
既然说了c++后台开发是c/c++后台开发者不错的选择,但是面对其要求肯定也让不少人感到困惑:我是不是适合呢?
前面咱们也提到了,正是因为c++的内容很多,所以至今是没有出现c++大一统的框架来解决所有的问题的。还有不少的朋友甚至觉得做c/c++后端开发 只要把TCP/IP协议学好就可以了。
这里分享给大家分享一份c/c++Linux后台开发的学习技术路线,自己可以对照的参考,查漏补缺。
作为个人目前觉得对于对c/c++后台开发体系总结完善程度最为详细的学习路线,来自于零声教育的这份学习提升路线:
主要从七大模块提升:
LinuxC++后台开发文档视频+代码资料学习路线免费领取
https://docs.qq.com/doc/DYU5FYm50dnltV0RG
如果是想在c/c++后台开发方向得到有效的快速提升(不是所谓的速成),他们的课程体系是大家绕不过的具有参考意义的提升路线。从学习路线中可以对c/c++后台开发方向的技术栈体系有一个清晰的认识。
从他们的高概率的大厂学员offer反馈可以对c++后台开发这个岗位在目前市场上的需求和薪资有一个更加深层次的了解。
所以不管学习与否,对于这样一个完善详细的提升技术路线,是值得大家去获取参考的。
LinuxC++后台开发文档视频+代码资料学习路线免费领取
https://docs.qq.com/doc/DYU5FYm50dnltV0RG
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。