很有趣的现象,我们去面试大厂的时候会发现,不管是社招还是校招,他们面试或者笔试都是会考算法的,想拿到大厂的offer,你就不得不去学习数据结构和算法,这一点理由够不够让你去学习。
但是反过来看看小公司,某些小公司能看懂代码就能进去。为什么现实的差距会这么大呢?
我们先聊一个更常见的事情——找对象,如果从妹子的角度来说,如果不能从你的身上看到未来发展的潜力,那么你觉得你们能在一起多久呢?毕业季一夜之间变成了分手季。
这些大厂看起来是不是和妹子有异曲同工之妙,他们更加在意你的基础是否扎实,未来的潜力大不大,能不能培养成一个优秀的程序员。
我之前在一个小公司做过一年的开发,那要求真的是能看懂代码基本上就可以了,不会写没关系,会用Ctrl + C和Ctrl + V就可以,我们一直戏称自己是CV程序员,公司项目最多的业务逻辑就是增删改查,复杂一点就是统计查询。
试想一下,这样待下去,十年积累如一日,数年以后,还只是个只会CRUD的boy,新毕业的大学生要的工资比你低,加班比你还猛。如果你是公司老板,你会怎么办?
那时候我明白一件事,为什么大家都说35岁是程序员的坎,CRUD的操作和工地上的搬砖工没啥区别,大家吃的都是青春饭,干的都是体力活,没有知识沉淀的我们,一定都会被行业淘汰掉的。
想要在行业里长久的生存下去,就要不断地丰富自己的知识,我们为什么不去学习最新追潮流的技术,而要去学习这些看起来一辈子都用不上的知识呢?
很久以前,我也是这么想的,追求最新的技术,学习最前沿的框架,但是最后发现没什么卵用,开发的时候,还是只会调用相关的接口,做基本的CRUD操作,遇到性能瓶颈,还是不会去处理。原来自己只是个前沿的CRUD boy的而已。
我们学习知识是为了用,是为了解决实际工作问题,很多不需要自己实现的框架,并不代表什么都不需要了解,了解原理可以帮助我们更好的开发,做出更加优秀的代码,更好的解决实际中的问题。
框架的基础是什么?不就是一堆优秀的数据结构、算法和设计模式的结合体吗?理解框架的源码,了解其中的算法思想,才能更好的做出适合的选择。
比如数组和链表,增删改到底该选择哪一个,平时我们都感觉不到有什么区别,但是当数据到百万级,千万级,乃至亿万级时呢?大企业的数据可都是TB来计算的。
想要成为一个优秀的研发工程师,需要我们有深厚的技术和知识积累。万丈高楼平地起,基础一定要牢固。我是准备从头开始,把自己的基础再洗刷一遍了,如果下一次的跳槽能薪资翻一番,跟别人吹起来还是很爽的。
我觉得性能是一个很好的衡量代码质量的标准。同样的功能,别人的代码运行起来几秒钟,你的代码运行了几小时,这比起来还是很尴尬的。
想要提升代码的性能,就要了解代码的架构和思想。自己没有好的编程思维没关系,我们可以借鉴别人的,去学习优秀框架的编程思想,学习他们的思维方式。
学习框架的源码,需要我们本身具有扎实的基础知识,不然很难去理解其中的一些原理。数据结构、算法、设计模式等等各种知识,可以说是基础中不可少的一部分。
我们学习算法结构不是说为了死记硬背知识点,这样是没啥用的。算法本身是一种思想,是一种思维逻辑,可以应用在很多方面,提高大脑的思考能力,改变我们的思维方式。
从知识的角度来说,在学习数据结构和算法的过程中,要建立时间复杂度,空间复杂度的概念,去理解和学会分析代码,能做到改善代码质量,提高代码的性能。
从长远来说,我们都是在慢慢的改变自己的思维,为了遇见更好的自己。
很久以前就想写这篇文章了,拖了快一个月了,甚是惭愧。
我有一个想法,一个人走的更快,一群人可以走的更远,我想招募一群小伙伴,组成一个小团体,希望可以互相监督学习。
当然我会提供这段时间内完成的数据结构和算法学习资料【资料仅供学习交流使用】,期间不会收取任何费用,全过程都是免费的,纯粹是为了学习和交流知识。
原课程的时学习周期是四个月,我的计划时间是五个月时间,大概能赶上明年的春招,我们的学习目标是可以手撕五百强大厂的算法题。
既然定位为小团体,这次招募的人数不会多,定位在12人左右。具体的一些要求如下所示:
- 学历不限,工作经验不限,编程语言不限,性别不限
- 有提升自己的动力,能保证每周都有时间学习
- 每个知识点要求有学习笔记输出,要能讲出来
- 一定要动手实践