程序猿微自传

看到专栏题目,我就过来码字了。借此机会把一路上想说却无处可说的话,都拿出来给大家分享一下。其实我三观还是很符合一名合格程序员的三观的,所以我觉得我想要说的,也能与各位读者在某个维度产生一系列共鸣:-D,水平有限,不喜勿喷

首先我想说的是,其实我当时报考志愿的时候,压根就没想过前三个志愿的分数线竟然齐齐整整的比我高了5分,于是我很幸运的进了第四志愿学了软件工程专业。
在最初的一段时间里,被老师家长们用“大学就轻松了”的谎言骗了12年的我,让各种专业课、各种考试折磨的不轻,这不是我想象中的大学!迷茫了一段时间后,由于一些机缘巧合,我在大一下学期末的时候,进入了学校的实验室学习,这,就是我的转折点,我之后的所有专业知识、软硬技能都是在实验室锻炼出来的。
我的实验室是国家级的,设施都比较叼的那种,我刚进实验室之后完全就是乡下人入城的感觉。我比较庆幸我的导师十分注重实践,我的思想很大一部分也是受到他的影响,所以现在很感谢他。我清晰地记得,我刚一进实验室,我的老师就给我分配了我人生中接触的第一个模块,关于JSON的解析相关的。本以为实验室会有相关知识的教学啥的,没想到上来就让我去做项目,再加上当时刚学完Java与C,所以做的时候一脸懵逼。不过,现在想来,我遇到一切问题都能硬着头皮往上冲的能力很大一部分是被老师锻炼出来的,毕竟咱是实践性学科,一切都需要以实际问题为核心,所以能解决实际问题才是王道。
这样在实验室一点一滴的积累,让我的能力得到了很大的提升,在做项目的闲暇期间,我还可以根据自己的兴趣去了解各种各样的好玩的语言啊、工具啊比如做游戏的相关的、安卓相关的等等,但由于没有项目支持,也就只是停留在了写几个小程序而已,尝个鲜就撤了,所以在实验室期间不会因为一直在做同一件事而感到枯燥,不变化也是程序员最忌讳的东西。
如果说人生的转折点就那么几个的话,我觉得,2016年5月,绝对是我的重要的转折点之一,中旬的一天,老师问我:想不想搞一下Spark?当时我并不知道Spark是个啥东西,也不知道他当时就很火了(也是因为当时的我其实也不太关注编程界新闻啥的),然后我觉得新东西,那就试试吧。于是从此,我彻底走上了这条“不归路”。
当时我花了一周时间,简单的了解了Spark是个啥,看了WordCount程序,然后就去图书馆借了本《Spark最佳实践》(挺好的一本书)然后看的一头雾水,,,,写的都是个啥,RDD还好理解,算子tmd是个啥?transformasion、action算子是个啥?Shuffle又tmd是个啥??SparkSQL什么乱七八糟的,不就是类似sql语句吗。。。。所以说,接触新技术,一定要去看范例!练习!做项目!看范例!debug一步一步看!练习!做项目!练习!看书!看书!看书!做项目!
那么由于看书看得一头雾水,实验室也没人教,我只能硬着头皮写代码了,,scala嘛。。。。。函数式是个啥?_ 下划线tmd是个啥,咋哪里都有他?trait???/:????:\???????(当时的我没有想到过一两个月之后,我会完全爱上Scala),不过硬着头皮往上冲的确挺有效果,两周左右就把基本的逻辑实现了,然后就是硬着头皮去装linux、搭集群,第一次见到机架,在300多个中选了3组机柜,孤单的站了一下午装机器。。我发现我头很铁啊。。。。
刚接触的时候的确是踩了很多很多坑,在10月份,时隔5个月(实际上不算暑假2个月),相当于3个月的时间,不断踩坑填坑,终于超出老师的预期,单枪匹马把这个模块搞完了,涉及了设计、编码、调优、部署、与Web通信等等方面,那么这个时候起,我瞬间觉得成就感倍增,觉得已经不是当年的我了,而是一个填坑专业户。
在完成这个模块之后,我深深地被Scala吸引住,回头看之前写的Java,完全就像汇编一样,其实当时我逐渐产生了对代码的洁癖,看着实验室里其他人还在无脑的写流水账式Java,我产生了这样的想法:既然Scala与Java是互通的,那我们实验室的基础平台是否可以融入Scala?有了这个想法之后,我花了4天时间,尝试了各种办法,也遇到并克服了很多问题,最终将Scala整合到实验室的基础平台中,那么之后我做的功能都是用Scala去实现的,其他人想用则用,不想用就Java端调用我的借口即可。
再后来,由于接手一个微信端程序,需要用Vue+实验室基础平台的RESTFUL服务WebApi,有几个问题:1.实验室没人会Vue;2.PC端与WebAPI是两个项目,需要将相同的功能从PC迁移到WebApi;3.不能用Scala,因为最终代码要交付。那么这个重任就交给了我,首先我花了2小时的时间去菜鸟教程上撸了一遍Vue,回来设计了增删改查的子模块,实现了基本的功能页面;之后想到不能用Scala的话,只能回归Java,那我就结合自己一年依赖的经验,分析之前写过的烂代码导致的各种问题,对项目进行了一些设计,抽象出各种接口、工具,这样一来,我的Java代码风格就消除了大量流水账的代码了
在之后的项目中,我重点关注的就是代码的风格。每次看实验室里的其他同学写出bad风格的代码,包括我自己以前写的,我都很不爽。就这样,不断地考虑如何能写出speful的代码,simple、powerful、efficient、flexible。那么这个时候,我开始去看设计模式,这个时候再看设计模式这本书,跟我当时上课的时候学的设计模式,完全就是两码事,这也更加让我坚信,一定要多练习,到了一定程度,回头去看书,学原理。
坚持到了今年3月份,当我觉得自己能力很不错的时候,老师帮我内推各大厂实习,BAT都推了,阿里的速度真的惊人,不到一周就打过来电话了,当时我还是一个面试小白,人生第一次面试啊,就在学校旁边的阿里巴巴烤肉吃着烧烤的时候,阿里巴巴的面试官打来电话了,当时我什么都没有准备,也不知道可以改约时间,于是就直接去门外站着面试了(3月份的大冬天,我没穿羽绒服直接走出门外。。。。),结果可想而知,,,,,10分钟解决问题,,,,
那时起,我便意识到,做了这么多项目,用了这么久Java,连最基础的jvm是个啥都没去研究过,面试官随便问了个内存模型我就废了,那么之后的很长一段时间,我都在专心准备面试,两个月的时间,把Java基础、JVM、JDK、锁、多线程、gc,以及我认为的加分项Spark的源码、整体流程、各个模块底层原理、调优等等知识点都认认真真的学了一遍,当时还很认真的整理出一张思维导图,画了2天,最后打印出来需要A1纸才勉强看得清的那种。。。
最后经过不断地努力,第二次腾讯虽然说仍然没过,不过也面了3次,最后进了京东广告部实习,现在做的Spark方向。

我觉得程序员的成长之路不过如此,不断地重复着踩坑、填坑的过程,技术层出不穷,所以程序员的价值也就不在于你现在用过啥新技术,而在于你一个是填过坑的数量、一个就是填坑的效率,其实归根到底就是解决实际问题的能力,头够铁见到啥都能上就行。
一路走来,想说的太多了,一篇文章哪里够。在以后的路上希望自己能够时刻保持着自己的初衷,不断摸索、前进下去。

猜你喜欢

转载自blog.csdn.net/github_37835908/article/details/81740832