鉴于自己的工作经历,分享自己对于从学校到现在工作的一些看法和想法,纯属个人意见,欢迎大牛批评指导,也欢迎正在读书的师弟师妹能引以为鉴。
我大学读的是电子技术,工作从事的是嵌入式软件研发相关的岗位,从2015年12月至今,已有2年半的工作经验。在这段时间里,主要接触的是跟单片机,Linux,Android相关的电子产品开发,最庆幸的是,在这期间也接触了不少社会上有名的IT大牛,因为下面这个QQ群,给予了我不断前进的信心,也结识了很多志同道合的道上朋友。
由于自己有一点工作经验,所以刚开始会有很多人问我一些技术方面的问题,我都能帮他们顺利的解决对应的问题,得到了大家的认可和好评,这也就是为什么我创建的群能够吸引这么多人来加的原因,其二也是有不少经验和资料会在群里分享,还有就是我对该群的运营十分成功,至今都是非常活跃的,不像别的群,几个月后,基本就死了。
不管是在工作中还是日常生活,我对技术的东西都属于一个非常狂热的追随者,我喜欢嵌入式,因为它与硬件的贴合,可以实现很多有趣的电子产品,还有一个原因是大学期间,侯老师对我的栽培,后来我出了一本<嵌入式C语言实战技术开发>一书,他也给予了不少的建议和支持。
接下来谈谈本文的话题:从学生--工程师--技术管理之学习,工作,生存三模式。
为什么要这么来划分,这肯定是有原因的。
1、学生时代
我见过不少学生请教我的一些问题,都是问,嵌入式怎么样?学习起来难不难?工资高不高等一系列问题?
相信,作为学生时代的我也经常会去问师兄或者已经在社会上从事技术工作的朋友这些问题。很多人都说,嵌入式炒的概念已经过时了,东西趋向于成熟,工资又不高,刚毕业4、5k,工作一两年也就是8-9k,厉害点的就12k的样子,看看人家搞前后端的同学,搞人工智能的,做游戏的等等,他们一个月好多钱啊,20k,30k,50k一个月比比皆是。于是争先恐后的跑去各大培训机构培训,很多培训结构打着包就业的幌子,于是一大堆同学被忽悠过去了,都很努力,但就是学不会,到最后工作很难找,但有一部分同样学习那么几个月,也很努力,最后找到的工作也很满意,工资也高。想想当时嵌入式其实也是这样子的,很多人跑去培训。
很多人没有想过本质的原因,为什么同样培训,学习同样的知识,大家都一样在努力,可效果为啥就不一样呢?有些人解决问题就很快,可以写很多代码,好像很厉害,有些人工资培训完工资就很高?有些人培训完依旧什么都不会,只是为了工资高而去盲目跟飞学习。有些人,在学校成绩就很好,程序设计考试,甚至是专业成绩就很好,为啥找工作工资就那么低呢?其实,区别不是谁聪不聪明的问题,而是,人家可以很精准的定位问题,人家知道学习这样的技术能够解决什么样的问题,这才是最关键的,你连你学这个能解决什么问题,能做什么事情都不知道,你学再多有什么用?纵有百般兵器你都有,就算你都会使,但只是自己耍,真要有人跟你打起来,你能应付吗?
不管是嵌入式也好,其它各种技术都好。其实只要能解决实际问题,工资又怎么可能会低呢?其实大部分人一开始的学习方法就是有问题的,当然不否定每个人的学习方法,只要成效就行。大部分的人都在纠结那个指针有问题,这个语法哪里错了,要怎么把问题找出来,喜欢钻牛角尖去研究一些奇葩的怪语法,请问?这样学习编程的意义所在?你是否因为它而创造了你的价值?你学习这些东西,语法可以变得很精炼,但,你能解决实际生活中或者工作中的一些具有实际意义的问题吗?大部分人是不行的,就连大学设计个学生信息管理系统,很多人都望而怯步,止步不前,等着大神给他们抄答案,然后纯粹为了应付考试。
大学的老师,很多也是按部就班,喜欢PPT式教学,他们很少引导学生如何去用编程语言解决一些实际问题,一个学期下来,C语言也许就是在CMD的终端上打印几个数字,算几道数学题,C语言课程就结束了,考试就抄几个课本上的题目,就这么考,而上了课的学生依旧什么都不懂。
学生时代,应当培养的是能够运用基础知识去解决一些较为复杂的问题,能够策划设计项目的能力,理论一定要学,因为它是前人不断踩坑的经历,能给你起到一种拨云见日的作用,读完书本,至少你要能清楚,你学的是什么,学完能解决什么问题。网络资源这么丰富,不要懒,多去搜索,看看别人都做了一些什么东西,模仿这些东西,把它实现出来,完全熟练掌握后,要大胆提出质疑并改进,然后和同专业的人讨论,看看别人的看法,一起研究,有一定经验后,自己上网搜索,自己做一些小项目,这才是大学生时代应当做的事情,而不是没课了就打LOL,各种闲聊和做一些无聊的事情。
2、工程师
大学实习或者毕业,不少人开始找到从事技术岗的工作,也从学生时代进阶为工程师时代。我见过不少这样的人,一上来不管三七二十一,就问:
1、谁有XXX代码,给我一份?求求你们,我真的不会写。
2、我这段代码出了啥问题,怎么一直编译不过?我好无奈啊,急啊。。。各种牢骚的求大神。
3、我们公司在做一款产品,是我负责的,但是我不会做,能不能告诉我怎么做?带带我,我真的不会?做出来给你钱。
4、我的代码写着写着电脑关机了,怎么恢复?这很重要啊,急啊,怎么解决啊。。。。
。。。。等等。
能问出这样的问题,不好意思,工程师这个头衔真的不适合你,工程师是指具有从事工程系统操作、设计、管理评估能力的人员。首先不会写,你连设计的本领都没有,接下来,出了问题,基本的调试手段都不会,请问你真的知道怎么调试?别再以我是小白为借口,这种话应该是学生才该说的,不是你该说出口的,你应该降一级。你负责的产品,你都不会做?你为什么不评估你自己的能力以及设计系统的能力?为什么不和上级好好沟通?代码写着电脑就关机了,恢复不了,这又能怨谁呢?都没做好版本管理和备份。等等。。。
还有不少人,是活在自己的世界里,来了公司,领导叫了就干活,不叫就发呆,睡觉,玩游戏等等,干的时候自己闷骚的干,也不和别人讨论。干完发现自己一直在做无用功,领导批评他还有理了,说一直在努力干。你说,你在干啥呢?我要你来就是来帮我做事的,结果你半天没把东西给我搞出来,还做了一堆无用功,好意思说你很努力干?
其实,领导才不管你的过程,你很努力干活不是你说努力就努力的,领导最终看的是结果,结果很容易评判你的过程,结果就是对事不对人,不对人并不是完全否定你个人,而是否定你对这件事的态度和行为。公司都是需要有产值的,你在一定的时间内没有贡献,被炒鱿鱼了能怪谁,怪自己呗,公司最需要的,是能解决问题,能创造价值的人,并不是让着坐着收钱又不做事的。
一个工程师,应该具备的能力就是,在做一件事情之前要先评估项目的各种环境,只有环境成功了,接下来要实施项目的时候,还要学会设计框架,框架需要设计的具有健壮性,可拓展性,易维护性。再下来才是各个模块的具体实现。设计完成以后还需要做各种功能性测试,再下来才是发布版本等操作。很多人这时候就会说了,设计框架,这不是高级工程师或者项目经理才会做的事情吗?我们工程师只要把模块写了不就可以了吗?能问这样的问题,只能说你身处于大公司,很多东西趋于成熟化,一般来说核心的框架都不是你去设计的,而是由更核心的负责人去做的,你只要去填他的东西。但这样难道就意味着你不用去学习了?人都是一个不断成长的过程,换个环境,到了小公司,你就是经理,你就得做那些活,你不愿意干,不好意思,活该你35岁被淘汰,这能怪谁?怪你自己不上进。
3、学习--工作--生存三模式
一、作为一个IT行业的职业者,我们需要面临的三种模式,学习,工作和生存,为什么这么说?
1、学习让我们能更好的工作,而工作能够带来薪酬,能够让自己生存下来,这三种模式是环环相扣的,谁也离不开谁。我们最应该学习什么东西?工作怎么样才能做好,薪酬怎么能变得更高,才能生存的更好。
(1)多关注最新的科技动态,但前提是平时的学习依然是以打基础为主,学有余力,再拓展其它的学习方向,人都不可能一口吃成一个胖子,要一口一口,符合自然规律来。如果你茫无目的,不知道学什么的情况下,那就先学习能够解决你当前遇到问题的方法,然后积累下来,跟写博客一样,其实就是日报,自己给自己写日报,记录一天做过的事情。
(2)学习怎么与人沟通,怎么能够高效的和别人工作,解决工作上的问题,说说高效沟通,举个例子: 我的机器,屏突然不亮了,不知道为什么不亮了。如何解决?
其实你应该这么沟通:我的机器,用的是单片机或是Linux平台,我在屏不亮之前做了XX操作,然后突然就不亮了。你这样一说,问题点就有前后联系,这样就很快的,精准的定位问题,也能够快速的寻找解决方案,事实上,我曾经从事FAE这样的职位,就是帮客户找问题,然后解决问题。怎么找问题,可以反应你思考问题的敏锐程度,能反应你思考问题的状态是否清晰等等。
(3)学习不要说话得罪人,我曾经见到我们群里有这样的人,一上来一言不合就得罪人,关键是他得罪人了还不知道自己得罪人了,一直争辩,后面我就把他给T了,其实这种人,一般是三观不合的,或者他本身就存在问题。
(4)学习自我管理,把现有的事情做好的维护起来很关键,能少出问题就不要出问题,很多时候在公司把事情搞定就没事做了,真的就没事做了吗?越是没事做的时候,越是能够体现出你是否能积极主动的去细心的做好每一件事,哪怕是非常简单的事情也是一样的。
(5)如何生存的更好,那取决你的洞察事物的眼界是如何的,其实工作大部分时间都是在处理业务逻辑,而真正有意义的事情,就是如何去从头参与一个工作项目的实施,因为整个周期都是可控的,做出来了,才是真正的提高。
(6)工作上,技术永远只是工具而已,不要去比较语言的优劣性,CPU功能的强大等等,考虑应用场景以及市场,还有客户的需求,只要是能以低成本能够解决的东西,那就是赚钱的。
(7)安于现状是不可取的,如果你没有从头到尾参与过一个项目的研发,那你迟早得被社会淘汰。
还有很多东西,期待下回分解。