去香港读CS硕士了!有点迷茫......
周末好啊!我是 Guide哥!
周末武汉写大雨,坐在自己租的小房子里看看书,复习一下之前做的笔记还是挺舒服的。
最近在二刷《Designing Data-Intensive Application(数据密集型应用系统设计)》这本书,真心不错!豆瓣有接近 90% 的人看了这本书之后给了五星好评。另外,中文翻译版本已经在 Github 开源,地址:https://github.com/Vonng/ddia 。
周末继续不分享技术,分享一位读者很用心的一次提问。我觉得挺有价值,希望也能对也有类似问题的小伙伴有帮助!
读者提问内容如下(内容比较多,写的比较详细)。
读者提问
本科情况
本科是二本[苦涩],信息管理与信息系统专业,现在大四下,马上毕业了。
大一到大二上谈恋爱荒废了,然后,大二下开始做团队项目,是一个基于 SpringBoot 的语料标注系统,是系主任带着做的,我是项目负责人。
信管专业技术课学的非常少,而且都比较晚学。当时项目比较紧急,需要马上弄出来一个能操作的系统,所以我在 Java 才学到一半的情况下,直接快速学习了 SpringBoot,搭建出了一个系统。
后来,就是在这个系统上一直加功能,改功能,做优化,都是一些重复性的工作,最浪费时间的是一个做好了的功能因为导师的要求一直在那重复改业务逻辑。
我是项目组长, 在做团队管理的同时还要帮导师做一些琐碎的事情,比如数据标注,写学习文档,翻译英文原著等等,然后系统开发的差不多之后还要发表论文,这些东西都导致我在一年多的时间除了项目里面的东西之外没有时间来学习额外的知识(找工作用的知识)。
我们学校的信管专业的话,额,其实想做技术的话,完完全全得靠自己,学校教了的东西等于没教,像一些重要的课比如计算机操作系统这种课,压根就没有。
我现在就是会开发,会用,但是理论知识,基础知识非常薄弱,甚至 Java 都还没学完。
近况
大四上学期基本没课了,开始攻读雅思,直到今年 4 月份,花费了大概半年时间,雅思终于考过了。
Guide:“这也太强了!”
本科还是把一大块重心放在课程成绩上的,因为大二的时候就有开始计划其香港读硕士了,也是凭着高绩点,论文,项目经历等等有幸拿到了香港理工大学计算机专业的 offer。
准备 9 月份启程去香港上学了,这可能会是我最后一次纯学习的机会,时间是一年。
有听在美团的师兄说过未来找工作还是挺看实习经历的,我是那种在家很难静下心来学习的人(在学校学习效率高很多),我就选择了去某公司的 Java 开发实习(也是第一次找工作,来了才知道是外包公司,以前对这个不太了解😅)。
Guide:“学习环境很重要,校园和公司都可以提供一个不错的学习环境”。
目前,在公司也没做什么事情,目前还在学习,来了有快 20 天了,有接触比较新的技术也有特别老的技术,感觉也学不到太多对我以后有利的知识,不知这样的经历是否值得。最近才了解到 guide 哥,已经把 guide 哥的资料都收集齐全了,也是刚开始看,我现在下班了都会留在公司看看技术类的文章。
对以后的想法
信管大部分技术课程是用来做数据分析的,所以我对数据分析也是有一些了解,有一门课运用了机器学习,所以最近就在看一下硕士要不要转大数据开发,纯数据分析好像是属于算法类的岗位了吧!都说算法岗现在特别卷,而我本科也没什么算法经验,所以老老实实搞开发吧!问了其它师兄都说搞算法要读博 😅。
Guide:“算法岗在 18 年-供小于求,19 年-供大于求,20 年-诸神黄昏,21 年-灰飞烟灭。算法岗位确实比较卷,做的事情可能还和工程师差别不是很大。毕竟,算法也要落实到具体业务上!”。
相关阅读:我为什么从算法岗转 Java 开发? 。
我现在就在着手思考硕士做什么毕业设计了,想往大数据类转的还有一个原因是我研究过我的硕士课程,开发类的课确实是比较少的,数据 、人工智能这样的课占大头,Hadoop 应该都是有教,还有机器学习这个基本上是必选课,也是非常重要。
我就想,不要白费了硕士课程里学的东西(其实国外留学生经常会学到一些对自己未来工作岗位没什么帮助的技术课程,因为国内跟国外的企业的技术栈区别还是有的)。我现在的打算是在实习(应该会实习到 9 月),基础课业额外的时间里按照 Guide 哥给的知识学习路线把基础知识给补上,然后选定大数据开发还是普通 Java 后台开发的方向,选定一个项目实战进行学习,也作为我硕士的毕业设计。
疑惑
我很想去大厂,但是我不太清楚自己能不能通过硕士期间达到能做大数据开发的水平。
我现在了解的还不多。还有就是不知道大数据开发现在的市场如何,如果也是特别卷又特别难学的话,我就可能还是 Java 后台开发了。也想知道 Java 后台开发跟大数据开发未来的前景如何,目前我以后在职业上的打算应该不会走技术专家那种类型,我更偏好项目管理这样的岗位。
回答
理论知识
针对自己理论知识薄弱的情况,最简单的解决办法就是:自己在学习某个知识点的时候,刻意去找一下这个知识点相关的面试题。把这些面试题给吃透,不要死记硬背,尽量举一反三。
准备面试题的过程中,也可以加深你对这个知识点的理解。一举两得!
具体的操作方法是:
归纳总结自己面试中可能涉及哪些知识点、哪些知识点是重点。 面试中对应到具体的知识点哪些问题会被经常问到(比如问到数据库一般少不了索引)、面试中自己该如何回答。
实习
如果觉得当前的实习经历对自己能力的提升以及后续的发展实在没有用的话,那就可以尽快离开,避免浪费自己的时间。
一个人的精力和时间毕竟有限,尽量把时间花在对自己更有价值的技术上。
如果说你当前的实习经历对你有一点作用的话,那我建议你还是坚持度过实习期。其实,我觉得平时在项目上自己多专研专研,应该都是能够有所收货的!
其实,不论是工作还是实习,最重要的还是自己在工作之外多提高一下自己的核心竞争力比如你可以课外多去研究一些优秀的开源项目(比如 Kafka
、sharding-jdbc
)、多看看自己平时经常使用的框架(比如SpringBoot
、MyBatis
)的源码。
我还推荐你没事就要多造轮子,多写点框架层面的东西,而不是天天用别人的框架。
如果你在学习或者接手一个项目的时候,不知道如何快速了解项目的话,可以看看我写的 新人如何上手一个新项目的开发? 这篇文章。
招聘要求
读硕士的期间,你既需要完成自己的学业,又需要自学大数据开发。说实话,时间确实有点紧。不过,学习效率比较的情况下,还是没问题的。记得面向找工作学习就好!!!一定要提前搞清楚你需要找的工作所看重的技能!
如何才能满足大数据开发的招聘要求呢?
其实,方法很简单!你直接根据招聘要求整理一份目标岗位的技能清单,然后按照技能清单去学习和提升。
大数据 vs 后台开发
不论是对于 Java 后台开发还是大数据开发,都会要求你的数据结构和算法 Java 基础、多线程、jvm 底层这些掌握的要很好。很多 Java 后台开发能够比较快地转大数据开发很快的原因也是在这里。
另外,相对来说大数据确实更有钱途,同等经验的工资一般会比 Java 后端稍微高一点!不过,大数据要求掌握的技术框架比较多,入门相对来说比较难,需要搭建的环境也很多。这也导致大数据岗位直接劝退很多新人、小白,相对来说,竞争压力确实会更小。不过,正常一点的大数据面试还是比较有难度的,比如如果你写了你会 Spark 的话,他就会问题你:
什么场景下用的 Spark ?解决了什么问题? Spark 执行机制了解吗? Spark 内存模型了解吗? ......
另外,如果你的简历上写了你会 Spring 这些东西的话,面试官应该也会一并提问。不过,现在的大数据岗位一般没有强制性要求你有 web 开发经验,在我那一年找工作的时候,大部分大数据开发岗位都要求你还要有 web 开发经验。而且,这个岗一般要求都是 3~5 年起。
下面是我与一位 Java 后台开发转大数据岗位的朋友的聊天:
最后
人生路漫漫,不要过于在意短期的利益,眼光要放的更长远一些。
悟已往之不谏,知来者之可追。