从生医到计算机,看我如何化劣势为优势
2020-07-14张艺松
张艺松
我是北京工业大学环境与生命学部生物医学工程专业硕士研究生,研究方向是胎儿心电监护技术。研究生期间,我通过自身努力成功实现从生医到计算机方向的转变,在秋招中收获字节跳动、滴滴、商汤科技、vivo、58同城等互联网大厂或行业独角兽的多个offer,最终我选择了北京字节跳动网络技术有限公司。
我想,大家可能会好奇,一个生医专业的同学怎么跑到了计算机领域?这个问题在我面试过程中曾被多次问起过,也因为专业问题而被多次拒收简历。自己算是半路出家,但我认为兴趣是最好的老师,自学无非是自己为自己安排课程,本质上并没有什么差别,反而更能说明自己对于工作方向的热爱以及超强的自主学习能力,这样说来,也是化劣势为优势了。
热爱是前行路上的指明灯
我大学本科毕业于长春工业大学计算机科学与工程学院电子信息工程专业,一直以来就对电子信息领域和互联网行业充满着兴趣。在报考硕士研究生时,我很自然地选择了北京邮电大学,这所电子信息和互联网领域的王牌院校备受行业的青睐。但由于初试成绩不够理想,最终与自己心中的象牙塔擦肩而过。或许上帝在为我们关上一扇窗时,又会为我们打开一扇门。非常幸运的是,北京工业大学给了我一个机会,于是我来到了环境与生命学部,在生物医学工程专业继续着自己的求学之路。
在攻读硕士学位期间,我从事着胎儿心电监护技术的软、硬件研究和开发工作。研一期间,我对未来有很多的迷茫和不知所措,不知道应该深入研究软件算法方向还是硬件方向?从对口专业上讲,前者对应的是计算机专业,而后者对应的是电子专业。从工作内容上讲,前者主要从事程序设计和数据处理的工作,比如软件开发工程师、算法工程师,也就是要经常写代码;而后者主要从事电路设计和面向硬件电路的程序开发,比如嵌入式工程师,会经常和各种芯片、电路打交道。从行业需求和待遇上讲,两个方向都不错,但是前者的需求量更大,可选择的岗位和企业也更多,薪资待遇也更高;而相对来说后者的选择就比较局限,待遇上也有所下降。从发展前景上讲,前者的发展空间更大,近年来产生了很多非常流行的技术,并且成功运用到实践中,国家对此也加大投入以促进其发展;而后者虽然技术栈比较稳定,没有太多技术上的更新迭代,但是发展也比较缓慢。所以我心中理想的方向自然是软件和算法,但是考虑到自身专业背景和目前及过往的项目经历,显然自己更适合硬件方向。
慢慢地,在跟朋友们的交流中,我对于互联网行业有了更多的认识和了解,同时随着学习和科研的深入,我发现我对软件编程越来越感兴趣。在我看来,写程序是一个充满艺术和科学的事情,它很像我们小学时写的语文作文和解的数学应用题,既要求程序设计上有结构性和逻辑性,又要求代码实现上美观和简洁。于是,我心中种下了从事软件研发的种子。
但是,软件研发其实分很多方向。从编程语言上讲,我面临着C/C++和Java语言的选择;从技术栈上讲,我面临着客户端研发和后端研发的选择。期间,我向很多计算机大牛请教,和朋友们交流沟通,慢慢地心中有了主意。从工作挑战性、发展空间和岗位需求上考虑,并结合自己的性格和兴趣,在技术栈上我选择了后端研发的方向。从编程语言上看,Java语言由于近年来的发展非常流行,尤其是在后端研发岗位上,它的生态非常好,业内很多流行的技术都是基于Java语言的,而且需求也更大;反观C/C++语言,它在后端岗位上的选择就比较局限,而且相比较之下它的入门难度要高一点,学习路线也比较陡峭。但是我考虑到一个现实问题——自己的课题更需要用到C/C++语言,而并不适合使用Java语言。也就是说如果自己仍然坚持学习Java语言,那么就意味着我既要做好科研工作,同时又要专门拿出精力来学习另外一门与课题完全不相关的课程。这对于自身精力和时间的管理分配而言是不合理的,于是我本着“避重就轻、集中精力、统一方向”的策略和原则,最终在编程语言上选择学习C/C++语言。而巧合的是,在对C/C++语言深入学习之后,我发现其偏向于底层、性能效率高的特点非常吸引我。由于自身专业背景、项目经历和理想求职方向之间的差距,我明白自己必须要通过自学来达到岗位的要求,同时还需要保证实验室科研工作的顺利进行。
经过一番摸索之后,在结合自身兴趣和客观现实的基础上,研一结束的那个暑假,我终于确定了自己未来的求职方向——C/C++后端研发,并开始了为期一年的准备。C/C++后端岗位主要是负责软件产品中注重时间效率和性能的服务器程序的设计和开发工作,比如大家经常玩的网络游戏,其远端的服务器很多就是使用C/C++语言开发的,再比如一些音视频相关的流媒体服务器很多也是在使用C/C++语言。在互联网企业中,对C/C++后端研发有招聘需求的公司有很多,比如腾讯、百度、网易这样的一些知名企业。那么,除了后端研发,C/C++语言由于本身偏向底层、时间性能高的特点,也非常适用于系统级别软件和框架底层技术的开发,比如操作系统软件一般都是使用C/C++语言编写,现在非常流行的机器学习或深度学习框架很多就是使用C/C++语言来开发的。
在这里我要特别感谢我的导师张松、杨益民老师,以及我所在的医学电子仪器研究室给了我一个相对宽松和自由的科研环境,让我能够找到自己喜欢的方向。
我认为秋招就像高考和考研一樣,是我们人生中为数不多的可以自主选择未来发展方向的机会。既然如此,何不为自己认真考虑,选择自己真正喜欢的工作呢!在确定职业方向时,既要考虑自己的专业和背景,这是客观存在的因素,更要考虑自己的兴趣,兴趣是最好的老师,也是自己做好工作的源动力。
关于秋招,大家应该尽早确定自己的求职方向,并尽早准备。无论是想做技术还是做产品,可以说秋招这件事准备得越早,付出的越多,最后的收获也就越好。秋招就像考试,我们应该在上考场之前就做好充足准备,上了考场接受面试官的检验就好。
既然选择了远方,便只顾风雨兼程
开弓没有回头箭!既然确定了自己的求职方向,就应当毫无保留地为之付出和奋斗。此刻的我,回头看来时的路,我想最终上岸主要得益于三个因素:对于任务的总体规划和安排,毫不松懈的每日执行,不怕失败、敢于尝试的态度。
要想在秋招中获得心仪offer,就必须要有充分的准备。那么应当以什么为标准来准备呢?我觉得一个非常好的途径就是看各公司岗位的招聘要求。比如我经常去逛一些招聘网站,看看C/C++后端都需要哪些专业技能,同时也会上网查阅,跟朋友们交流。慢慢地,我对C/C++后端技术栈有了一个清晰的认识,大概需要以下的基本能力:C/C++语言、数据结构与算法、STL、操作系统、计算机网络、数据库、Linux系统编程和网络编程,按照以上先后顺序进行进度规划。
完整而清晰的规划的确能够为取得成功打下良好基础,但成功与否的关键在于能否按照计划每天去执行。从研一结束后的那个暑假开始,没有特殊情况,基本上我每天都会专门拿出时间来学习计算机基础,尤其是每一个假期我都没有浪费。比如每天白天我都在做课题,而晚上我会专门用来学习。为期至少一年的自学是一段漫长的路程,我想,正是由于对于计算机的热爱才让我坚持下来。
每年春天,各大公司都会有暑期实习生的招聘。研二下学期,我对于岗位的技能尚未完全掌握,还有不少功课要做,但本着“赶早不赶晚”的原则和态度,我就开始投递简历、准备面试了。由于时间原因,我们可能最终不能外出实习,但我认为实习招聘更像是秋招的模拟考试,是秋招这场战役的前战。
大部分互联网公司的技术岗招聘流程是:笔试+2~3轮技术面+1轮HR面。技术面大概包括自我介绍、技术问题和自己提问,更像是一场跟面试官的技术battle,虽然往往被虐,但总能学到很多。HR面则主要是进行综合素质的考察和薪资待遇的沟通。
在投递简历时我采取的是海投策略,算上实习整个秋招至少投了50份简历。起初,考虑到自身的专业劣势和项目经历相关性不大,对于秋招的预期并没有很高。但只要有机会我就会去尝试,抱着试一试的态度,即使被拒绝,我想也能收获很多,至少能够看到自身的差距。
我把面试当作是一个检验自己、查漏补缺的考试,每次面试完都会进行总结,并且抓紧时间学习自己的知识盲点。面试的目的不光是拿到offer,更为重要的是帮助我们在拿到心仪offer之前不断发现问题并完善。面试可以帮助我们检验自身对于每一门课程或每一项技术的掌握是否达到要求,以及更有针对性的准备。就像我们考试之前都会有一个考纲,里面清楚地标记了常考点和重点,以便我们能够针对性复习。那么面试呢?当然也需要这样一份“考纲”,只是这份“考纲”需要我们自己通过面试这场实战来不断获取、不断补充。比如C/C++后端研发这个岗位,其实每家公司的要求大体上都是相似的,通过面试我们就能知道哪些是热门考点、哪些又是冷门考点。同时根据在面试中的表现,我们能够大概对自己的专业水平进行一个评测,并且通过跟面试官的交流,我们能够更准确地了解企业对于校招生的要求,还有机会从面试官这样的技术大牛身上获取宝贵的职业发展建议。另外我认为,不要等自己准备得“万无一失”后再去面试,只有尽早地走出去面试,才能尽早地发现自身问题,才能尽早地踩完坑,为下次做好准备。
秋招是一个全方位的考察,除了专业知识和技术本身之外,自我表达、沟通能力这些都很重要。具体来说,对于简历的反复修改,自我介绍和最后可以向面试官提出的问题,我都进行过多次细节上的考虑。所以,秋招也在一定程度上帮助我们成为更好的自己。
除去找工作本身之外,让我感觉成长比较大的,就是在与人沟通、自我表达能力的锻炼和提升上。起初我面试时,对于面试官的一些问题总是回答不好,除去自己存在知识盲点外,很大一部分原因是没有组织好语言,回答没有逻辑性。后来我意识到这一问题后,在面试中回答问题时心里就会提醒自己要注意什么、怎样回答等等。比如,我们在拿到一个题目时不要急于回答,应当首先梳理清思路、组织好语言,把问题考虑得尽量全面周到,这样才能给面试官留下一个好印象;在回答过程中,可以先介绍自己的第一想法,然后再分析存在哪些问题以及改进方案,最后给出一个令面试官满意的回答;在面试过程中,我们应当积极主动地和面试官进行有效地沟通和提问,合理的提问往往能表现出自己的专业水平和对于岗位的兴趣;同时,我们应当抱着谦虚和学习的心态,切忌不懂装懂、夸大自身能力这种行为,我们要相信面试官的专业水平,坦诚地交流和回答才能增加面试通过的几率。我不光在面试中如此,还将这一“习惯”延伸到了平时实验室组会上,以前对于上台汇报是不重视和有点怂的,现在会特别珍惜每次机会去训练自己讲话的语速和逻辑。
秋招,让我们成为更好的自己
秋招的过程总是漫长和煎熬的,夹杂着肯定与否认、喜悦与沮丧这些复杂的情感。经历过漫长的准备工作和被拒绝后的焦虑,我6月份便幸运地收到了人生中第一个正式offer——vivo秋招提前批offer。至今仍记得等待offer的那个晚上,心中的焦虑与慌张,以及在凌晨1点收到offer之后的兴奋与喜悦。但此时的秋招之路才刚刚开始,我并未满足于现状,继续准备,以寻求更好的选择和机会。在燥热的7、8月断断续续的面试后,我却一无所获。很多互联网公司在7、8月已经开始了秋招提前批。随着9月份的开学,正式秋招也已全部开始。我的秋招终于在9月份中下旬出现了转机,我不断地外出面试,不断地总结完善自己,同时也收获了一个又一个的offer。最后在12月份,新年即将到来的时刻,我收到了来自字节跳动的offer。至此,我的秋招之路就走完了。通过自身努力和拥有的好运气,我收获了字节跳动、滴滴、商汤科技、vivo、58同城等互联网大厂或行业独角兽的多个offer。
如果大家很幸运能够拿到多个offer,可能要面临如何选择offer,我想就这一点分享一下自己的经验和心得。要锻炼自己快速做选择的能力,同时不要感性判断,而要理性思考和衡量。“不要用脑子去做选择,而要用公式,因为脑子是主观和感性的,而公式是客觀和理性的”。首先可以列出自己在选择offer时主要考虑的三个因素,比如工作方向、公司平台、薪资待遇,然后在每个因素下进行打分,同时结合重要性配以权重,最终可以得到一个公式:最优解=A*技术方向+B*公司平台+C*薪资待遇(A、B、C为权重,相加为1)。
责任编辑:丁莉莎