第一次写博客也不知道写什么,只是自己感觉进入到了比较迷茫的阶段,后续想通过手写一个项目来麻痹自己(项目涉及的方面相对多一些,想通过博客的方式记录下来整个过程,权当做是自己的笔记好了),先写一篇回忆博客练下手,也是记录自己这几年的职业生涯。
回想自己入坑码农行业,严格意义上讲,是从大三才开始的。同样是大学,有的人入校门就是冲着保研去的,比如我的室友,一直在学习,有空就去图书馆,专业成绩没得说,专业第一,还是班长,拿一等奖学金的学霸,最后也是如愿保研华科。对比我自己,大学前两年相对比较荒废些,打游戏较多,专业成绩整体也只是专业十几名,中上水平,不上不下的很尴尬,又不是很想考研(好吧,不自欺欺人了,还是觉得自己考不上好的学校),直接找工作吧又没什么拿得出手的技能,就陷入了恐慌之中。
大三上学期的9月份,上届学长学姐来分享找工作的经验,有Java,Android,c++,嵌入式,因为那个做嵌入式的学长说了好多,让我把前面几位学长学姐的分享都给忘掉了,就觉得,哇,嵌入式是个好东西。于是分享完后跟着学长继续请教了一些问题,学长说大三都过去一个月了,现在入门有点晚,嵌入式的门槛稍微高一点,不到一年时间,明年秋招不一定能找到好工作。自己当时也很迷茫,觉得不学点东西没法找工作,学这个门槛又有点高,但是毕竟那会年轻气盛,我才不管你门槛高不高,就入坑了,开启了为期十个月的自学生涯。
学习过程(其实也可以说心路历程,哈哈):
1. 第一步,从卸载lol开始,然后就是捣鼓电脑,装虚拟机。刚开始那会跟着网上免费视频入的门,装Linux虚拟机,用的红帽,来回装了好几回才成功,自己都鄙视自己了。
2. 装好虚拟机后学习C语言基础,虽然大一大二有过c和c++的课,但学习环境是VC++6.0,命令行很不习惯,更别说什么GCC编译了,就自己搜了些免费视频和书(《 鸟哥的Linux私房菜》)继续学习Linux命令,当时课上都在看电子书。觉得自己从进大学校门以来,从没这么专注的干过一件事,就这么一点点的学习,转眼一个月就过去了。算着秋招时间,自己根本学不完,心理压力越来越大,就又问了学长这么下去是不是就完了,学长建议我先稳住,去好好学习C语言,尤其是指针操作
3. 当时班长建议我买个51单片机学学,既可以学C语言,又可以学硬件,然后我立马买了个arm9 2440开发板。。开发板到手我就跟着视频一步一步做测试,一周后发现自己啥也不懂,就想着要不还是单纯回去学习C语言吧。。跟着一些视频资料学习了怎么在Linux下写程序,常用命令,GCC编译器,C语言的各种基础,数据结构,上课时候就看《C程序设计语言》和《C语言完全手册》(不是说谭浩强老师的书不好,是我自己确实很难吸收),当然了这是我迫不得已的情况下才上课看的,大学课堂还是有很多知识要学习的,这也导致我一些专业课程后面期末考试前要预习好久。就这么上课看书记笔记,下课跟视频敲代码,每天晚上也是学习到一两点(之前是打游戏到一两点,哈哈),很快就到了12月,因为得准备期末考试,暂时把学习搁置了几周
4. 寒假回家带了2440和51小车(课设内容),自己憋在一个屋子里看了一个月视频,写代码,然后把51单片机小车的功能都自己写完跑了一遍,C语言也算是基础打得比较好了,多进程,多线程,socket编程也是入门了,常用数据结构也能手写了,但进度其实很慢,因为2440拿回去就吃灰了。。
5. 返校后,了解到另外一个同学也在学嵌入式,他是买了课程,我说那我也得买点课程看看,他的课程里老师语速较慢,我不是很习惯。第一期视频正好还是C语言基础,大概看了目录,觉得再买有点浪费时间,同学则是已经学到第三期驱动开发了,对比下我只有C语言基础。就上网看嵌入式视频的评价,然后入手韦东山的免费视频看一下怎么使用裸板,了解了uboot,kernel,驱动,文件系统,应用程序,交叉编译。其实个人感觉韦东山的入门视频对于当时的我来说已经是相当高的难度了,但养成的习惯没改,跟着视频敲代码,思考,也是照葫芦画瓢用汇编和C语言写了自己uboot,就是点个灯,移植内核,根文件系统,写应用程序测试(也是点灯)
6. 觉得韦老师的授课风格个人比较喜欢,就买了他的后续两期付费视频,做驱动模块开发和应用软件开发,学习驱动模块时候,感觉太难了,就只是在照搬代码,也不清楚自己在干什么,只是了解了字符设备驱动,块设备驱动,网络驱动这些基本概念和input子系统什么的,学到一半有些扛不住,但还是在5月中旬把视频学完了,然后找学长问,我学这个怎么写简历啊,学长说什么?你还没做项目,赶紧做俩项目啊,驱动学习比较难,你学习的也只是入门,很难靠驱动找工作的。就跟着韦老师的视频做了个电子书和数码相框,跟一块学习的同学做了个网络安全传输文件和基于motion的移动检测,就到暑假了。。
7. 暑假跟着班长参加了电赛,做了个基于STM32的小系统,做的效果也不好。。名次比较差,但收获还是蛮多的,电赛过程中自己手焊电路,还用到了51,MSP430,STM32,相当于常用单片机我基本都有所接触了。先学习arm再回头做单片机的感觉就是,单片机程序其实跟arm的裸机基本上是一样的,看电路底板图,通过寄存器操作CPU和外设电路,就发现uboot和驱动开发自己也可以入门了。再就是刷笔试题,跟同学互相讲项目,看谁能讲通,关键点在哪,8月底才开始投简历,然后9月开学后翘课去听宣讲会,笔试,面试,自己还算是比较幸运吧,面了就6家,九月底就签了offer了,进了一家比较心仪的安防公司,学习前的目标其实就是进入这家公司,做嵌入式应用开发,后续十月份也没继续找工作。
8. 然后自己就扮演起去年学长的角色,去给下届学弟学妹们分享。还真是个循环,哈哈。后来就跟老师上课了,有个关系还可以的专业老师上课说得准备找导师做毕设了,我下了课赶紧联系这位老师能不能做我导师,老师名额暑假就已经满了,这可能就是机会总是留给有准备的人吧,自己一直都是慢半拍。我就去跟班长了解下我适合跟哪个老师,班长建议我跟系主任(本人电子信息系),虽然没给我们上过课,但他嵌入式项目很多,挺和蔼一人,我就直接去联系了。大四上跟着老师做了基于arm11的视频点播器,每周末都要跑去本部跟着研究生们一起学习,汇报,学了很多硬件方面知识,类似232接口,485接口,网卡芯片,各类传感器等等,还要调示波器,当时还纳闷,我到这里来是干什么的。后来也有Linux上的软件开发,系统移植是上届的研究生做过了,加了无线网卡,连接上设备就可以看视频,用到Apache,网页开发是与我同届的一个计算机专业学生用PHP开发的,跟他了解到他其实大二就参加这个项目了,大三则是已经出去实习了,当时就觉得自己弱小的心灵受到了二次伤害,怎么这么多优秀的人啊,大二我还带着室友们在召唤师峡谷驰骋呢,真的是没有对比就没有伤害。好在自己心态还算良好,也不在意别人到底如何优秀,就但行好事莫问前程(现在明白了是问前程也问不到),就继续做那个项目,还是有所收获的,之前学驱动时候云里雾里,接触硬件层后,感觉对嵌入式系统理解更深刻了。
9. 因为我做的项目是上届研究生做的,我只是把项目又重过了一遍,导师觉得后面论文查重不好过,让我在做个新项目,只能跟着导师的脚步继续走下去,是一个在树莓派上做的物联网关系统,然后已经支持GSM和Lora协议,我负责的是把4G模块加上,就自己搜了很多资料,逛了多家淘宝,多次逛电子市场,最后加了个4G模块,软件上倒也没做什么大改动,但也算实际参与了一个项目,加上自己去那个公司每天要坐地铁,转公交,单向通勤就需要一个半小时,每周去三到四天,连续去了两个月,公交地铁上闲着没事就看书,不知不觉就把《C专家编程》,《高质量C编程指南》,《C缺陷与陷阱》读完了,对自己的编程思维确实提升了一些。因为每天三小时的通勤,过得其实真的蛮累的,后来导师也给了辛苦钱,哈哈。这个项目是在一个小公司做的,涵盖了前端设备(我参与)和后端平台开发,涉及到电路设计,软件设计和结构设计,了解了一个实际产品的落地,后续也用这个写了毕设论文顺利毕业。
回首整个大学,我觉得自己是个很幸运的人,从学长,班长和导师得到了很大的帮助,用大三大四两年弥补大一大二两年的荒废。
接下来就是18年本科毕业,做摄像机开发,工作中相继碰到了三位很好的师父,带着我工作学习,了解业务,做应用开发,学习如何与人合作,沟通交流,入职半年就开始自己带项目,成功做好了几款产品。写到这里,再回想自己,从事嵌入式应用开发已有将近三个年头,总结自己近些年的做的开发工作,专业方面就是在嵌入式Linux环境下进行C语言编程,涉及多线程,网络编程等,用到各种应用层的网络协议,第三方库,也会涉及很多工具,类似经常调试死机的gdb,查看进程系统调用的strace,网络抓包tcpdump等,这些也算是一个嵌入式软件应用开发的基础技能,但做的更多是其实是业务层面的,如何理解产品需求,如何设计解决方案,怎么实现,如何夸组沟通,如何跟测试部沟通,如何跟技术支持沟通解决现场问题,如何跟客户对接,跟分公司沟通等等。毕竟软件开发工作还是要面向人开发的,不可能说每天只面对电脑敲敲代码就完成工作内容了,当然这只是我一个普通的渣渣一线码农的狭隘想法。
思绪再拉回迷茫的事,还差4个月就毕业三年整了(不知道为啥突然想到了梁朝伟的台词“明明说三年,三年后又三年”),如果大学时选择读研,顺利的话,今年刚毕业,没走过的路也不清楚会是怎样。很清楚自己就是一个普通人,不是那些后浪,没有什么引以为傲的经历,资本,只是新一代的韭菜。至于工作,也不是挣大钱的互联网,嵌入式工作还是要积累很多基础知识。都说人在二十多岁时最容易迷茫,找不到方向,自己都还没过25岁的生日,正处于这迷茫的中间段,我也不知道自己迷茫什么,但终究是有一些焦虑。老男孩里的歌词说的挺好的,当初的愿望实现了吗,事到如今只好祭奠吗。这么说来是自己没有了目标,小学时候是要考个好初中,初中则是考个好高中,高中期望上个好大学,大学时愿望就是顺利毕业找一份工作,一路按部就班的走来,突然没了学业上的固有走法,就一头栽进了社会,就好像独木舟突然冲进了太平洋,三百六十度的远方。然后就是三年下来,自己的解决问题能力确实变强了,但基础却更薄弱了,今天没有学长指路,也没有班长和导师帮助,上次的恐慌还是在大学,那时候是通过学习解决的,要不迷茫的时候就继续学习吧。既然做安防这个行业,那自己的基本音视频素养还是要培养下,接下来准备写一个从音视频采集到编码,网络传输,解码,播放的小项目起手,网上确实有很多案例了,但自己还是想重新造轮子,学习新知识的同时整理下自己已学的却已遗忘的旧知识。
不知不觉就写了这么多,语言比较随意,但发现原来自己还是挺喜欢写东西的,第一篇博客就到这里结束吧。