回顾一下转行自学那年的一些心得体会,仅针对零基础的同学。首先说明,我的学习方法,在我看来,并不是很科学,所以最后投了近百份简历,只拿到了两个offer。但是,起码我这么学习,也转行成功了,虽然有运气成分。
如果我现在来看,我的学习计划里一定是缺了什么,导致我险些转行失败。下边我结合我当时的学习,以及后来的经验,总结了一些学习心得。
1.零基础转行三个必备的要素
1.1 扎实的算法理论知识
理论知识的学习,主要就是规控算法了。这个之前的文章分享过学习资源了。这是转行的前提,仅仅是前提。学会这些,并不能让你转行成功。
1.2 会写代码
按照我的理解,一个小白转行自学,如果是像我一样,做算法工程师,那么留给c++的学习时间并不是很多,可能只有三四个月时间。所以想通过这几个月从零基础掌握编程,是比较困难的,起码我没做到。这三四个月更多的是针对面试去做准备,能够应对面试就行,代码能力以后入行了,慢慢提高就行。所以大家不用太过于恐惧写代码这件事,以后写多了就好了,当前任务就是不要在面试中,被代码这项内容拖后腿了。c++学习资源,之前的文章里有总结过。
1.3 相关的项目经验
这个就比较难了,也是拉开差距,获得面试机会的关键。我想,我当时一定是因为没有相应的项目,导致得不到面试机会。因为理论知识,大家都了解,这个并不能引起面试官关注。而项目经验,每个人都不同,遇到的问题也不同,这个才是面试官感兴趣的地方。
其实github上很多规划控制相关的开源项目,我之前的文章也总结过,大家完全可以找一个项目,去仔细学习,并且,最重要的是,仔细测试这个项目,去发现它的bug。通过bug学习,是很有效的。
2.两个快速学习规控算法的方法
2.1 通过写代码去理解算法
当我深入学习了规控算法理论知识后,其实理解的并不深入,也无法通过这些理论知识,去和其他竞争者拉开差距。另外,单纯去学习一个算法,有时候会很难理解,这个时候,如果一边写代码,一边学,或者对照着开源代码去学,就更容易理解。所以学习规控算法,学的差不多的时候,必须要通过代码去深入理解。
开源项目在我之前的文章里总结过,可以挑一些看看,一边看代码,一边学加深算法的理解。
2.2 通过分析和解决bug去真正理解算法
真正能够拉开差距的是,你解决过什么项目bug,对经典算法做过哪些优化。所以,通过项目里的bug去学习代码和算法,是非常有效的。就是在实际工作中,分析并解决一个bug,可以让人快速且深刻的理解相应的算法,这个是单纯看理论知识无法比拟的。当然,扎实的算法理论基础是前提。
这一点,正是我当初自学时候欠缺的。即便我理论知识掌握的很扎实,但是没有实际解决过项目bug,没有对经典算法进行过优化,这个就导致面试官没有问题发起点,他只能问理论知识,这个就比较空洞了。理论知识很扎实的人太多了,为什么要招一个零基础社招转行的人呢。
3.如何找项目及找bug
这个是拉开差距的关键,尽量去找项目,找不到项目,找开源项目也行,就仔细的去测试,找它的bug,并且修复这个bug,给它提pr。或者找到开源项目可以优化的点,去优化它。这些前提是,要先充分了解这个项目,并且自己做大量的测试。
那么如何找项目呢?
代码能力足够的,可以自己写一个,然后去调研一下目前行业内的痛点,试着去解决它。
没有实力自己写项目的,就去github上找开源项目,去看这个项目的commit,分析作者如何去解决bug的。然后,自己去详细测试这个开源项目,发现它的bug,修复它的bug。这些写到简历里,是非常适合当做问题来提问的。
4.关键的5分钟自我介绍
现在想来,这个是我犯的一个很大的错误,我当时,就准备了一份自我介绍,背的滚瓜烂熟,但是我介绍的毫无目的,就是阐述简历上已经有的文字。如果是这样的自我介绍,就完全浪费了这宝贵的5分钟了。
首先,面试不同的公司,自我介绍得做相应的变动,虽然是自我介绍,但其实是在引导面试官,引导面试官去提问题。另外,不同公司的业务不同,自我介绍就需要结合公司业务,去做准备,重点强调与之相关的内容,让面试官知道,你能带给公司,带给这个岗位什么。
以上就是我的一些心得,仅供像我一样零基础转行的朋友参考。写的不对的地方,请忽略。