大哥,我毕业已经工作两个月了,在一家小公司,岗位和描述的不一致,感觉就像调试一样,写代码的机会很少也没人带,
我想转嵌入式,您有什么建议的方向吗,或者是学习路线?
这个粉丝的问题应该是大多数粉丝都会遇到的问题,很有代表性,
针对这个粉丝所述问题,
简单分析一下,
希望对这个粉丝会有所帮助。
本文只从软件角度来讲解
所有的事都有两面性,不论大公司还是小公司,都各自有自己的优点和缺点,
不论是央企、研究所、上市公司、大中小民营企业,
都会有一堆的人吐槽,
都有人想进去,也有人想出来,
妥妥的围城。
小公司决策一般都是老板或者几个合伙人来制定,
受创始人的学历、经历、人脉、眼界、性格、眼界、格局等因素影响非常大,
什么都想做,但是缺人缺市场、
产品经常换,
门槛高的进不去
门槛低的产品,市场基本上都是血流成河、横尸遍野,
一大批小公司只能当炮灰。
小公司的招聘,
工资开的不高,
但是又要求员工能独挡好几面,
巴不得找来的人立刻马上就上手干活,
会画电路图、又会调试驱动,最好还会写上位机,
最终结果是:
hr为了完成任务,只能想方设法 把人先弄进来,什么承诺都敢答应
所以很多粉丝朋友发现去了公司之后,
经常发现自己做的事情和招聘要求会有一定出入。
经常出现:面试做开发,进去做fae、测试。
除此之外,
很有小公司主营产品已经开发的差不多了,
后期只需要一些技术人员做好维护工作即可,
而前面研发人员很有可能被压榨+持续997很长时间了,
老板画的大饼迟迟不兑现,
当初的部分核心人员发现自己被榨干最后一滴血后,
并且毫无希望的时候,
就提桶跑路了!
而留下来的人也是窝了一肚子火,无法静下心带新人
在之前他们可能很用心,带新人,
手把手教他们,
可后来发现,辛苦带出来的徒弟,
公司没有任何表示,
遇到不上路子的徒弟,还可能在背地里捅刀子,
教会徒弟,饿死师傅,
各种委屈叠加在一起,
也就不会再愿意手把手教任何人了。
一般都是丢个资料,叫徒弟自己去看。
大部分刚毕业的学生,是根本无法独立承担项目的,
即使硬着头皮布置了任务,
还要手把手给新人讲解项目架构,用到的技术细节,
最后结果就是:
这都快赶上3倍工作量了。
而评估工作量的时候,这还不能算在师父头上。
综合来看,还不如一开始就自己做。
小公司优点也很明显,
很多粉丝给一口留言,
刚到公司,领导直接给了几十G代码和一堆技术文档,
代码编译一遍可能都要很久,
那么应该如何快速上手一个项目呢?
一口君建议先按照以下步骤来学习:
不同的项目,不同的平台,
开发环境差别很大,
编译、镜像烧录、版本管理、git使用、代码编辑器、各种测试工具、调试工具的使用都不尽相同
强烈建议先把这些内容过一遍。
一口君常用的嵌入式驱动领域开发工具主要包括:
Source Insight、notepad--、
beyongd compare、Git、
FTP server、TFTP server、飞Q、
vmware、ubuntu、
xshell、secureCRT、ATK xcom、cmder、
Keil、
wireshark、科莱、netassist、tcpdump
作为新人,初次接触代码,
看到浩瀚的代码,通常都会无从下手,
这绝对不是在校期间,
写个数组,写个排序算法的难度,
几乎很少不懵逼的,
所以强烈建议,在条件允许的情况下,
搭建好产品测试环境,
将产品所有功能全部测试一遍,
代码一定是根据功能来编写的,
根据功能去查看对应的代码,
会事半功倍。
嵌入式软件开发有可能涉及的几个方向:
不论哪一种,都建议先搞懂框架,以驱动为例,
比如艾为科技的GPIO扩展芯片aw9523的驱动,
对于老手来首,这是一个很简单的硬件,
但是新手要想看懂这个驱动,除了基本的c语言、linux基础操作外,还需要掌握:
阅读电路图、查看用户手册,驱动模块化编程、内核编译、内核镜像烧写、
设备树、platform、i2c、GPIO、sysfs、attr、input子系统,
getevent -lr 等等知识点
如果是第一次接触驱动,
这些知识点,很多新人可能听都没听过,
但是要想真正搞懂这个驱动模块,
这些都是必须掌握的。
如果你运气好,有一个成熟的师父愿意手把手带你,
首先带你分析电路图,搞清楚信号线的连接关系,
然后找到驱动入口,分析设备树硬件信息的功能及解析,
然后再讲解 gpio注册和高低电平控制、pinctrl子系统、i2c子系统、应用层如何通过sysfs实现与内核通信,input子系统、如何获取input子系统上报事件。。。。
那么基本上就不会走很多弯路,
但是这往往是奢望,
很多师傅可能只会和新人说:
这个是电路图,这个是驱动文件,这个是厂家给的资料,
自己看!
不懂的多百度!
师徒也是同事,
同事就一定会有竞争关系,
这个阶段,对于新人来说,
学会做人,就显得非常重要!
技术要想大幅度提升,一定要多做项目
零碎知识点,就像盲人摸象,
每个人、不同阶段看到的、理解的都会有一定的局限性,
每一个项目覆盖到的技术点,有多有少,
不同平台、库、接口,
设计不同的中间件、子系统、架构…
只有通过一个个项目,
被无数个bug摧残、蹂躏,
才能真正成为技术大拿!
除了学习好本职所需要的技术之外,妲己还需要注意其他能力的培养。
如果毕业之后进入大公司:
进入了小公司:
不论哪种公司都要:
制定自己的学习计划:
马无夜草不肥,
人无横财不富!
要想超越自己的竞争对手,只有不停地卷!
很多老铁说,天天加班,累得要死,
根本没时间学习,
这纯粹是找借口,
大家可以看下面文章,我当时是如何有效利用自己的业余时间,
写了我人生第一本书的:
《我是如何利用业余时间写书的?—时间管理》
技术对于我们大部分人来说,只是一个进入职场的敲门砖,
想在本领域继续提升,还有很多因素,
在国内90%的技术人员,
到了一定年限后,技术的因素就不再重要了,
本文就不展开叙述了,
而且有些东西没法明面说,
你想唠,可以加一口君好友,
陪你唠出血!
任何时候一定要记住:低头做事、抬头看方向!
跳槽一定要慎重,
首先确定好:
如果思考完这4个问题之后,还是决定跳槽,那做好以下几点准备:
小公司的管理,他的生存之道,
思考他为什么能存在,
思考如何改变,换做是自己,如何做得更好?
一旦提出了辞职(别人通过其他途径知道你要离职),不管别人如何挽留,你只能走
不要相信再过几个月给你升职、加薪的这种承诺,
对方不过是想在这几个月抓紧找一个备胎,接手你的项目。
但也别无脑得罪人,大家好聚好散,
活着都不容易!
至于该粉丝问的如何学习嵌入式Linux,可以参考下面文章:
https://mp.weixin.qq.com/s/mq6IhgO5JcBnAUBX5CP9Ww
针对想跳槽,缺乏项目经验的朋友,
一口君还录制了一个物联网课程,
学习完该课程可以添加该项目到简历,提升竞争力:
https://mp.weixin.qq.com/s/q3q7jVA2LcfeayGhZIlLow
很多粉丝朋友已经学习掌握了这个项目,并顺利找到了工作,希望对你有所帮助。