查看原文
其他

我是如何从一个新闻狗转行成为程序猿的?

long 程序人生 2018-11-12

点击上方“程序人生”,选择“置顶公众号”

第一时间关注程序猿(媛)身边的故事


作者

long

微信公众号:longtalk

已获原作者授权,如需转载,请联系原作者。


我本科硕士都是读新闻专业, 毕业后却去了游戏公司做程序员, 震惊了不止我的老师、同学,也震惊了我的父母。那么, 这么大跨度的转变我是如何实现的呢?


要想从完全不相关专业和背景转换成为程序员,基础、时间、决心,三个条件只要具备了两个就有很大概率成功。接下来,我将和你说说我的故事,希望对你有所帮助。

       

决心:从产品经理到工程师

       

大四的时候(2015~2016年),正是国内互联网巨头群雄逐鹿的时代,每天打开手机看新闻和朋友圈都是相关的资讯,而且互联网的高薪和发展前景非常吸引我。于是我就开始马上学习编程要做程序员升职加薪迎娶白富美当上CEO了么?


当然不是了。


一开始我认为大学非理工专业的人要进互联网行业肯定是先从运营或者产品经理开始。所以我先打算成为一个产品经理。


我在一番拉勾、实习僧和微信群中的寻找和投递后,获得了在百度图片当产品实习生的机会。这段实习让我不是很想继续追求做产品经理了——因为我发现他们所需要的“产品实习”只是需要有人帮他们重复地评审图片而已,这并不是多有技术含量的工作,如同流水线工人一般,非常的无聊。


这次实习最大的收获或许是百度的那种重视技术的文化(百度每年各种奖项都是颁给技术人员)。这让我下定决心,要放弃成为PM而转为RD(百度内对程序员的称呼)。

                

起步:学习编程的基础

       

那么我有学习编程的基础么?算是有,也算是没有。


我在高中学过的pascal的基础——是真的很基础,就是差不多会写if-else和for语句的那种水平。大一的时候我又学了C语言。虽然这些语言的知识我已经几乎全部忘光了,但是学习过编程的经历让我对编程这件事至少有一些感觉,不会一想到要学习编程就觉得这对我来说不可能(而这却恰恰阻碍了很多人)。


经历一些编程学习的人都知道编程不是什么黑魔法,其实也就是人把自己脑子里的逻辑思路写到电脑里去让它执行,本质上和写一篇英语文章是很类似的。 


起步阶段,我想先学一些容易的内容。


16年的时候前端大热,我就先是报了个网易云课堂的前端微专业,开始跟着学习HTML、CSS和JS这些东西。不过我学了两个月后,听说Java作为后端最常用的语言更好找工作,于是又同时开始学习Java方面的课程。


通过这两个方向的课程,我对web开发的前后端都有了一定的了解,并且发现自己更喜欢做的是后端的编程,因为前端很多东西过于琐碎了,经常在为了视觉上的一些对齐而纠结。

       

深入:学习数据结构和算法

       

在接触Java学习的同时,我也经常上知乎等网站看一些前辈对学习编程的建议。在这些程序老手的建议中,反复被提及的就是要学好数据结构和算法,因为它们是一个程序员的基本功。


这时候,我刚好读硕士第一年开学,我赶紧就利用大学的在线系统,查一下学校里有哪里在开《数据结构》和《算法》这两门课。查询到具体课程的上课时间、地点和专任教师后,我就通过邮件咨询了老师看看我能不能去上课。 

       

                

现在看来我这封邮件言辞非常不谦虚,接触了一两个月Java和JS竟敢自称“熟练”。不过所幸我但凡有发邮件的教师/教授都给了我积极的回应,因此很快我就出现在了计算机和信管专业的教室里。 


我一个非工科专业学生学习CS核心课程,一开始就是抱着诚惶诚恐的心态的。我基本上每节课都坐在第一排,然后尽可能做到课前预习,课后完成老师要求的作业,并且上完一个章节的知识就写一篇知识总结。相关的算法和数据结构知识总结我很多发在了简书上(https://www.jianshu.com/nb/7225186)。


在上算法课的实验课写上机作业的时候,因为当天学的东西掌握得还不牢,我经常还得一直请教助教小哥怎么写。好在助教小哥是人长得很帅人还超好的学长,基本上我有问必答。有一次我还去学长的宿舍楼下问图算法那章节的作业,学长解答完了我的问题才和他女朋友出门……


一整个学期下来,我成功学习完了《算法分析与设计》、《数据结构》、《离散数学》这三门课,其中算法得了93,数据结构得了88分(哎,我为啥一开始不直接学CS……),对整个计算机专业的体系结构有了初步的认识。


第二个学期,我又报了《计算机网络》、《操作系统》、《机器学习入门》、《计算社会学》、《文本挖掘》等课程。报了这么多课程,一方面是因为第一个学期我的学习成绩让我觉得自己能够handle更复杂深入的课程了,另外一方面则因为我硕士学业有很多的选修学分需要完成,既然我现在打算走CS这条道路了,那么就干脆选修课也全上CS好了。

      

       

走出校园:实习与就业

       

学习编程、踏入CS最后还是为了能找个写程序的工作,但是万事开头难。 


我在上算法的那个学期的期末就开始积极寻找相关实习,希望寒假的时间能积累自己的简历。然而,北京之大,我在拉勾投递了三四十个简历后,却只收到了两三个面试机会。


其中有一次,有一个小公司说让我去北京的东五环外的一个地方面试,结果我到了那里之后却发现这公司在一个废弃工厂里,而且这个地方周围一个人都没有。我面试完出来的时候是晚上八九点,一个人瑟瑟发抖,心想万一被传销分子抓走了怎么办。 


所幸我后来在新浪找到了一个实习的机会,因此那个寒假都呆在新浪,工作主要是帮数据管理/分析员打下手,做些凌杂的事情。


这段实习做了一个多月后,我感觉能学习到的东西实在有限,因为我主要想做开发岗位,而当时数据管理/数据分析的工作主要是单纯写SQL调取数据以及处理一些其他数据报表的小问题。这项工作要求人比较细心且对数据非常敏感,这并不是我喜欢和擅长的方面。


大概三月份的时候,各个互联网厂商都开始暑期实习的招聘。名义上这是暑期实习,但其实就是当年的秋招,因为实习机会就是留用机会。而且一旦取得一个大厂的实习机会后,收获的不仅仅是这个大厂的留用机会,也是秋招时候简历上的经历,一举两得。


我一边买了面试准备的书(主要都是《Java程序员面试笔试宝典》之类)学习准备面试常考的技术知识,另一边投递了几乎所有市面上叫得出的有规模的互联网公司,也收获了很多次面试机会。



其中我印象很深刻、感觉特别挫败的是阿里的面试:我面到了第二轮的时候,被面试官嘲讽我是不是写的代码非常少,因为面试时候他让我说出我遇见的Exception,我说了大概五六个就语塞说不下去了,确实体现了我开发经历严重不足。


还有一次,我面了今日头条的岗位,两轮面试写代码后,面试官还带我去食堂吃了饭,然后HR和我谈,问我打算什么时候实习,来实习多久。我回学校后天天刷邮箱就等着发实习offer,没想到过了几天却收了一封拒信。


暑期实习招聘的那段时间我整个人感觉非常焦虑又亢奋,每天都在想如果我一个实习都找不到,干脆还是放弃了回去做本行专业找个工作或者考公务员好了。还好最后,我有幸通过了一家知名游戏公司的面试,成为暑期实习生的一员,并且最后也通过完成实习项目获得了公司的留用offer(那个暑假也过得很艰难,但是篇幅所限不再展开了~)。


这段暑期实习的从求职到最后结束,让我才开始确信,我真的成功转行到技术了。回头看,我特别感激我当时暑期实习公司的领导兼导师。 


之后,秋招的时候,我也投了很多公司,进行了一轮尝试,因为我想知道自己到底是因为实力能留在实习的公司,还是单纯的运气而已。最终秋招里我拿到了百度开发类的SP(据说算法的SP更高)、滴滴出行的小SP、央行背景的网联清算公司(给北京户口和年20多万薪水)、华为、招银网络以及招行深圳分行的研发offer。 


因为我想离开北京,所以我放弃了网联清算、百度和滴滴的SP。由于当时对暑期实习公司的好感以及一种被认可的感激之心吧,我最后选择留在它们这里而不是去深圳华为。

       

回顾:理性乐观地选择,扎扎实实地努力


回头看16、17年这两年,做这个转型的过程是痛苦和快乐交织着的:做自己不熟悉而且风险很大的方向,自然是有很多痛苦的,跑不起来代码又自己解决不了不得不到处微信上问人的经历我真的是每天都有;


但是做技术不断进步,看到自己不断取得成绩,理解越来越多的方面知识,这种成就感所带来的快乐又是巨大的。


我在向技术转型的这两年,经常反复读知乎问题《23 岁的你,曾处于什么样的状态?现在呢?》中的一个回答(https://www.zhihu.com/question/19832061/answer/13163761)


答主是一个自己努力学习成长克服困难最后在北京扎下根的技术女前辈。


她说:


做事要努力,困难面前不屈不挠; 

选择不要犹豫,下了决心就付出行动; 


放下过去的成绩,才能担当新的重任; 

工作很重要,家庭更重要; 

乐观、积极、向上的心态是幸福的源泉。


我谨把这些话送给所有决心走这条路的人。


- The End -

「若你有原创文章想与大家分享,欢迎投稿。」

加编辑微信ID,备注#投稿#:

程序 丨 druidlost  

小七 丨 duoshangshuang


点文末阅读全文,看『程序人生』其他精彩文章推荐。


免费公开课|扫码即可报名


想学习超级账本的同学千万不要错过!开课前报名可免费观看直播和回放,课程结束后只有会员才可免费观看回放哦!



推荐阅读:


print_r('点个赞吧');
var_dump('点个赞吧');
NSLog(@"点个赞吧!")
System.out.println("点个赞吧!");
console.log("点个赞吧!");
print("点个赞吧!");
printf("点个赞吧!\n");
cout << "点个赞吧!" << endl;
Console.WriteLine("点个赞吧!");
fmt.Println("点个赞吧!")
Response.Write("点个赞吧");
alert(’点个赞吧’)


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存