为什么我认识的机械工程师都抱怨工资低?

为什么我认识的机械工程师都抱怨工资低?

5千字长文干货!本硕7年机械,毕业自学C++转型工业方面软件,机械目前的待遇与所学的知识面宽度和难度是完全不匹配的,主干课程主要是以传统机械为主,材料力学、理论力学、流体力学和机械原理等等课程难度远远大于C语言,即便是有C语言、单片机和自动控制等课程也不会重视,这就导致机械专业的小伙伴儿毕业只能找结构工程师和工艺工程师,还有很多转型销售的。机械当年也是学校分数线数一数二的高,毕业被计算机碾压不悲催吗?

967b8443e7741d56647afb315ba712e7.jpeg智能工厂

1、机械行业的现状和未来,作为机械专业的小伙伴儿要学什么

现在的工业4.0、智能制造、智能工厂怎么智能化呢?曲柄滑块机构这个玩的再花也是第二次工业革命的东西,第三次工业革命已经是计算机集成制造系统了,现在经历的第四次工业革命是热门的物联网、大数据、人工智能、视觉、机器人等技术与传统工业交叉融合。现在的智能化,包括自动驾驶汽车也是传统汽车作为本体,加上激光雷达、视觉等等传感器,最核心的就是控制器和控制算法。激光雷达和视觉为什么推动自动驾驶汽车发展了呢,也不是偶然,激光雷达和视觉是在AGV里面先成熟应用的,比如亚马逊的智能仓储系统就是靠AGV。AGV和自动驾驶汽车没有本质区别,只是AGV要求没有自动驾驶汽车那么高,但SLAM算法是通用的。在亚马逊的AGV智能仓储系统之前,车间不都是人开的叉车吗?时代抛弃你是不会打一声招呼的。

74007e75d5ebeae77d13f371b9856b74.jpeg工业设计加工及有限元工业软件/CAD/CAM/CAE

我现在所做也就是C++工业软件相关的工作,即便是机械专业的小伙伴儿想继续为工业发展贡献力量,换一个方式不行吗?非要死磕结构工程师吗?非要死磕工艺工程师吗?作为机械专业这么基础的学科,而且在工业软件被卡脖子的时代背景下,如果对工业软件核心技术是什么,由什么国家掌握这是非常不应该的。某些高校Matlab被禁用的时候不是就有网友说,为什么这么多软件工程师开发不出来Matlab呢?Matlab可以说是工业软件,那些simulink仿真很多内部算法都是经过工程经验积累的,有的模块都是MIT、斯坦福这些的名校开发。工业软件完全不同于一般的企业管理软件,难度根本不是一个量级。企业管理软件很少涉及复杂的算法,基本都是以业务逻辑为主。CAD模型在计算机中怎么表示?用到的是拓扑学。CAD模型怎么显示?需要的是计算机图形学。CAM又怎么生称数控G代码?需要的是微分几何。CAE又怎么求解复杂结构件的受力问题?用到的是有限元分析,有限元是做什么的呢,是偏微分方程的数值解法,那CAE还需要什么呢,大规模稀疏刚度矩阵的存储和求解。工业软件都是数学的工程应用,来不了虚假。

aa1f005e05f853025e5a70e8b27720aa.jpegCAD三维模型在计算机中的拓扑表示方法

工业软件这么重要,关系到全球产业链分布的问题,互联网这么繁荣为什么不投入资金开发工业软件呢?互联网现在主要是做什么呢,主要是解决资源分配和效率问题,并没有触及行业的灵魂,大多也会造成社会问题。比如外卖小哥安全问题、成熟共享单车到处堆积如山、互联网社区低价卖菜造成农民收益空间极度压缩危机未来的菜篮子等等。这些快速整合资源赚钱非常快,比如共享单车一年不到轻轻松松赚几十上百亿,工业软件投入10年都赚不了钱。真正可以从根本上改变机械行业,真正理解机械行业需要什么改变的没有人比机械的小伙伴儿更懂,机械行业想改变靠互联网是靠不住的,互联网喜欢赚的是热钱快钱,而机械行业天生重资产赚不了快钱,真正能革新制造业的力量还是来源于机械专业懂软件的小伙伴儿,计算机专业是不会知道制造业经验多么重要,也就无从说起怎么把制造业的经验建模提炼出来知识反作用于制造业。

·下面是7000字长文,结合我的经历探讨机械专业转型的问题,希望给正在困惑的小伙伴儿一点思路。

534f9c43389dcea469c666f16f6b91ce.jpeg

如果你真的对目前的工作很不满意,有两条路线非常靠谱一是自学C++转型,二是考研,哪怕是考个985的机械专业研究生,毕业找工作转型也不难。机械专业也有研究机器人、视觉、深度学习故障诊断等前沿技术的,做这些方向毕业找软件是比较容易进大厂的。我读研做的就是智能优化算法,找软件工程师工作的时候也是有点儿帮助。考研人数每年大幅增加,有读研想法的小伙伴儿,别犹豫了,再犹豫就没机会上车了。我14年考研的时候才170万人,21年已经突破400万了,非常恐怖。我如果没有读研究生,我现在的工作肯定也是在工厂老老实实呆着,对于普通本科的小伙伴儿,或者对于原本专业就业不满意的小伙伴儿,读研又是一次重新来过的机会。

·现在什么专业都在跨考计算机,都在转码农,作为万金油机械如何避开卷的漩涡呢,机械想考研的小伙伴儿可以看一下:

2、了解和机械关系比较密切的自动驾驶汽车、机器人等前沿技术

110d85072b23e5cd03efc6f5e5a3b0b9.jpeg

自动驾驶汽车怎么自动呢,第一步就是靠激光雷达、视觉、GPS等传感器感知环境。

0e94fc9b95dda6934f2b20508e108efc.jpeg自动驾驶汽车控制框图

从自动驾驶汽车的控制架构很明显看出,传统汽车已经成为一个被控对象,传统汽车设计和制造技术已经非常成熟,传感器和控制算法才是核心。有小伙伴儿会说自动驾驶汽车不是已经很多人研究了吗,还有机会吗,其实如果你关注自动驾驶汽车技术发展的话,现在自动驾驶汽车还是在起步阶段。具体怎么衡量前沿技术所在的阶段呢,国际上有一个技术成熟度曲线,自动驾驶技术目前L4级别还远远不能大规模商用,最终的全自动驾驶是L5级别,还需要非常多的技术亟待攻克。

·看图中Autonomous Driving Level 4,就是目前主流的自动驾驶研究方向。

03edbcca36e1c2f6e7863bb2d931d084.jpeg前沿技术的成熟度曲线

3、C/C++编程和数据结构与算法的学习

软件和算法对于工业多么重要,你看工业金字塔的塔尖是什么技术,是企业管理软件吗?显然不是,ACIS和Parasolid等等是什么呢,是CAD/CAM/CAE的内核,内核相当于什么呢,类似操作系统的内核,工业软件能做什么功能不是一般的软件工程师决定的而是内核。芯片设计的EDA也是工业软件。

04d1e8f1b9f371736d5df77f3699221c.jpeg

这些内核都是由什么巨头开发呢?看下面的图就是主流工业软件内核的开发公司,制造业的强大仅仅在硬件是远远不够的,软件和算法才是支撑制造业智能化升级的基石。

aa4757cf99afcafcb2371b67e6f13d47.jpeg

如果你想学C++,也不想安装Visual Studio等开发环境,初学者安装开发环境也是问题,很多小伙伴儿搞几天还不知道怎么写代码和调试,学习C++不如直接就用在线开发环境,C++基本熟悉了再去本地做复杂的程序也不迟。推荐一个非常简单易用的在线IDE,Compiler - Code, Compile, Run, Debug online C, C++,看下图1分钟可以学会使用,下面还有一个经典的链表数据结构源码,直接copy到开发环境里面运行即可。Linux内核开发者Linus Torvalds说过一句话,软件免费才是最好的,现在Linux应用不是越来越多吗?机器人控制器基本都是Linux吧。

e0e3322a24c6718794e4c1d21fc46131.jpeg在线开发环境

·C++链表实现demo源码,调试通过的代码

#includeusingnamespacestd;

structlistNode{

intvalue;

listNode*next;

listNode():next(nullptr){}//默认构造函数listNode(inttheValue):value(theValue),next(nullptr){}//带参构造函数};

intmain(){

listNode*head=NULL,*node=NULL,*pListEnd=NULL;

node=newlistNode(1);

head=node;//链表头指针pListEnd=node;//链表尾指针

node=newlistNode(2);

pListEnd->next=node;//链表的尾节点的next指针指向新的nodepListEnd=pListEnd->next;//链表的尾节点指针后移到新的尾节点

node=newlistNode(3);

pListEnd->next=node;//链表的尾节点的next指针指向新的nodepListEnd=pListEnd->next;//链表的尾节点指针后移到新的尾节点

listNode*pNode=head;

intindexNode=0;

while(pNode!=nullptr){

cout<<"链表节点&nbsp;"<<indexNode<<"的值: "<<pNode->value<<endl;

pNode=pNode->next;

indexNode++;

}

return0;}

与其抱怨不如改变,机械专业好与不好已经不重要,放在人生长河看来所学的四年机械不过是一小段时间而已,当你真正开始学习编程的时候,每天并不痛苦,是为自己的梦想奋斗的感觉。数据结构方面本科只学过链表而已,实际上还有堆、红黑树、AVl树、hash表、map、set等等。我刚开始对这些数据结构完全不了解,就是看一个数据结构的理论刷几道相关的算法题。找不到C++的工作那我刷题就不停止,找到C++工作的时候我已经刷了500多道题,现在回想起来那段时间我都不知道怎么走出来的。

·数据结构与算法多重要,看一下常见的C++算法面试题。链表、二叉树等等都是算法面试高频考点儿。

771d60a5ca669d36629d3951a484c44e.jpeg

很多小伙伴儿会纠结学C还是C++,是直接学C++还是先学C,纠结在这样的起点问题完全没有必要。我刚刚开始学C++的时候也是非常纠结,到底要学什么。学习C++首先需要解决的问题是你要进入什么行业,能具体到职位是最好的。比如Qt C++软件工程师、Linux C++软件工程师等等。当你期望的工作是具体职位的时候,目标就非常明确,学什么就看期望职位要求什么能力。C++主要是应用在机器人、自动驾驶、工业软件、游戏等等对性能要求非常高的场合。高性能软件的开发就需要扎实的数据结构与算法能力、设计模式能力等等。这些能力都是吸引比较长的时间积累,突击不会。

人最宝贵的东西是生命。生命对人来说只有一次。因此,人的一生应当这样度过:当一个人回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧。【钢铁是怎样炼成的】

C++学习的过程中可以收集一下常见的面试题,这些面试题都是可以找到答案的,基本都是需要结合代码才能理解深刻。

.C++内联函数是什么?内联函数能否是递归函数?

.解释C++的this指针,以及其应用场景。

.函数重载和运算符重载有什么区别?

.C++运行时多态是如何实现的?编译时多态是怎么实现的?虚函数是什么?纯虚函数是什么?基类的析构函数是否必须为虚函数?

.析构函数是否可以重载?

.struct和class有什么区别?

.指针和引用的区别?

.深度拷贝和浅拷贝的区别?拷贝构造函数如何定义?拷贝构造函数和赋值构造函数有什么区别?

.C++继承中的钻石问题是什么?怎么避免?

.new和malloc,delete和free有什么区别?

.智能指针有哪些?shared_ptr使用中存在什么问题?

.i++和++i运算符如何重载?效率有什么区别?

.C++中的vector、list、set、map、unordered_map和unordered_set底层的数据结构是什么?常用的查找操作时间复杂度各是多少?这些容器使用时如何选择?

·自学C++并不需要很多钱,而是经历,选择基本两本经典的书入门是非常快的,选择一本C++的经典入门资料,再选择一本数据结构与算法额入门资料,两本书足矣。

猜你喜欢

转载自blog.csdn.net/danpianji777/article/details/125615109