扬帆起航

扬帆起航

其实很早就想写这篇文章,只是一直不知道从何说起。或者说,没能腾出一片完整的时间,给自己的大学生活写一个完整的回忆录。其实细细想来,这段时光更像是平静的水面,偶然也有湍急之处泛着白色的浪花。

开始

​ 和大多数人一样,以萌新的身份来到大学,看着即将成为自己学长学姐的那群人,一时不知道从哪里开始了解这个陌生而又神秘的校园。好,美好的大学生活就先从图书馆开始。良好的习惯是成功一半,也得要先熟悉熟悉自己以后学习的地方。

​ 摸索了挺久,才找到了计算机学科的阅览室。怎么说呢,被一大堆《Photoshop 从入门到精通》、《21 天精通 C 语言》、《JAVA语言精粹》吸引,幻想着自己真的能21天完成菜鸟到码神的逆袭。

​ 好吧… 想多了,不过,我还是爱上了这个地方。接下来的一学期,就是扎根图书馆,进行名词式学习了。之所以称之为名词式学习,是真的觉得自己的学习,没有正确的方式。一股脑的恨不得把没听过的东西都去学一遍,没见过的语言都想办法 『21天精通』 。于是,我成了一个彻底的 “宅男” ,只不过宅的是图书馆。

​ 所以还是想说,要在正确的路上做正确的事。这时候,一个好的引导者就显得尤为重要。他会带着你,踩尽量少的坑,走弯路更少的路。这个人,可以是你的老师,你的学长学姐,偶然发现的你们班里的大神。记得,找最适合自己的人,走最适合自己的路。

LAMP - 光

​ 庆幸的是,我的野路子并没有持续太久,我找到了方向——加入实验室。这就是我想说的另一点了,加入实验室。任何时候都不要说 “等我在多学点,再怎么怎么样”。要知道,实验室本身就是,可以更好的更快的学习新东西并快速实践的地方。

​ 我在大一下学期就进入了网络中心,也是在这里下定了决心一门心思的去做开发,不再一味的折腾 Linux 。(PS:如果不是想要看内核源码或者做系统运维,就不用花大量时间折腾 Linux 软件了,时间上比较不划算)

​ 加入了正规军,也接受了更正规的训练。我更加清楚,作为一名计算机专业的学生,我以后要走的是一条什么样的路,要成为一个怎么样的人。我们的团队叫做 “LMAP” ,取自我们开发使用的技术栈,同时也有 “光” 的含义!在这里,我度过了我的整个大学时光。

​ 已经说不清楚,那些曾经帮助过我的老师和学长们,是我所尊敬的师长,还是陪我一起成长的家人了。我们一起撸过凌晨两点的小院烧烤,也一起看过凌晨四点钟的西大,我想在这里特别感谢帮助过我的 『杨建丰』老师,以及 『金刚』 学长, 『文科』 学长!

嘉木

​ 我想说一件,我大学里很骄傲的事。也许没什么人听过,但确确实实是我大学里很珍贵的财富。事情源于大二上学期,在一个学长的组织下我们准备建设西北大学自己的 PT 站点。奈何出师未捷身先死,本来组建的团队还没开始开发就解散了。我很感谢20岁的我,可以那么勇敢得,去一个人做我现在可能有顾虑的事。

​ 项目基于开源的 “NexusPHP 项目” 。其实关于这个项目的案例很多,但是资料很少,很多高校采用了这套代码,并且进行了魔改,但是遗憾的是并没有开源。怀着雄心壮志,我一个人上路了。我想把它做好,然后开源出去,哪怕困难重重(事实证明遇到的困恼是重重重重重)。

​ 项目从九月中旬一直到十二月份,出了三个测试版本。这段时间基本除了上课时间我都是坐在电脑前面赶项目。由于 NexusPHP 是 2006 年开发的,当时的开发团队采用了比较原始的前后端夹杂的方式,代码基本没有可维护性而言,大部分还是 function block 基本不存在 OO 设计,HTML 和 CSS 基本全部嵌在 PHP 中,一个文件 1000 - 3000 行,甚至还有 15000 行的。那段时间真的是日常崩溃 ,不知道因为改代码电脑死机多少次,又熬了多少次夜。经常为了一个问题和功能,想到睡不着觉,有时候做梦都在写代码,想要看着自己的成果,早点问世。

​ 十二月份,第一个上线的版本终于确定了,第一周的注册量只有 500 。不过,当时上线的时间确实也是选择的不对,那时候快要期末考试,大家一门心思复习,没什么时间关注别的东西。第二年又对界面进行了重构,基本是全新的 UI。之后,我们也想了很多办法去提高用户量。我们组织了一些宣传活动有推出了嘉木的纪念文化衫,还想了很多办法降低用户使用站点的门槛,但是最终用户活跃度始终稳定在几百人,并没有达到预期。

​ 最终,站点只运行了一年,由于多方面的问题被关停。这次的失败也让我明白,一个产品的孵化并不简简单单的依靠技术,产品的运营和团队管理是上层建筑。没有好的运营和管理,再好的产品也没有办法发挥价值。

​ 另外比较庆幸的是,这次之后,我确实发现自己的技术得到了质的飞跃——毕竟 10 多万行代码的编码经验和调试上的经验比看书来的要真切的多,也算是真切的体会到 “纸上得来终觉浅,绝知此事要躬行” 。

迷茫

​ 其实在嘉木比较稳定运行期间,就没有太多额外的开发工作了。那段时间除了处理实验室老师交代的任务之外,就全身心的投入到 ThinkPHPOneThink 的源码。其实源码看了会很容易忘掉,所以不仅仅是看,看完以后我都会凭着印象和思路再敲一遍,实现框架和系统的核心部分。

​ 我在阅读读 OneThink 源码时就明显感觉到了自己和巨佬们之间的差距。虽然说 OneThink 源码不是那种 “Bible 级别” ,但官方对 TP 的运用确实称的上炉火纯青。一边阅读,一边发现原来ThinkPHP 可以这么写,原来那么多特性是可以这么使用的,原来一个简单的模块需要这么多代码保证高扩展性,健壮性,和稳定性。

​ 大二快结束时,我心里却越来越觉得慌张。自己只熟悉 PHP 一门语言,其他的只能算是入门,这样还怎么成为**『全栈工程师』 **?还怎么愉快的写 Bug ?加上那段敏感时间里,实验室学长们也都签了不错的工作,有去 BAT 的,也有去其他知名互联网公司的。他们的离开让我觉得到伤感和不舍。偶尔还会思考,实验室的下一批成员会是什么样的,我们会不会相处的很好,已经成为学长的我,能不能像我的学长们那样,给别人提供正确的引导和帮助?

选择

​ 空闲期的时间总是过得异常的快,转眼自己就已经大三了。突然发现,热爱了这么久的计算机,捣鼓着写了两年的代码,自己却没有一门能够拿得出手的技术。按照自己的规划,我是希望能够找一个不错的实习的。打开招聘网站却发现很多公司并没有 PHP 职位。当时的我,除了PHP就只会写前端了,还只能勉强算是个半吊子前端。我明确地,感受到了自己的压力和慌张。

​ 想了段时间,我觉得剩下的一年里,学一门纯正的面向对象语言吧!可是具体要猛攻哪一门呢? Java 在大一的有学过一段时间,但是很久不写,很多基本语法都已经不记得了。C++ 吧,当时确实用功学了半年,高级特性,内存管理,STL ,Boost 也都有好好看,只是后来也没好好用它写过项目。

​ 其实这个问题我纠结了很久。也许很多人说 “其实不论什么编程语言只要你精通了一门,如果你能融汇贯通其实其他的语言也一样”。其实我是很抵触这种说法的,简单对于 C++ 和 Java 来说,就算你敢说你熟悉 C++ 我觉得短时间熟悉 Java 语法,能使用 Java 做开发是没问题的。就像我在大一的很大一段时间内是使用的以前编写 C++ 的思维去 Java 写的,这样不仅不能表现出这个语言的特性和优雅,反而会觉得使用起来有些蹩脚。就像一个长时间写驱动和系统软件的人去接手一个大型的 Web 项目,我想他很可能会写出垃圾代码来。

​ 经过综合各方面的原因,我选择了Java。我知道,当我选择了一条路,另一条路上的风景便与我无关。一旦选择,我便不再摇摆不定。之后,全身心的学习Java是我每天都习以为常的事了。偶尔想想自己真的在面向‘’对象‘’编程,生活倒也怡然自得。

转折

​ 良好的基础决定了成功的一半。当时的我,把 《疯狂 Java 讲义》 和 《 JDK 1.8 API 》 里面重要章节 Demo 都敲了一遍,把语言基础、集合框架、OO、IO、反射、多线程、Servlet、JSP、Hibernate … 理解的异常透彻,日常觉得自己是一个 “人工语法分析器” 。

​ 可是当我掌握这些东西以后,我发现我好像一直停留在使用的阶段。这是一种有力气没出事的难受。后来,我开始思考,为什么我不去深入到底层探一探究竟?JDK 里的 集合框架并发工具包IO 究竟是如何实现的?Java 虚拟机是怎么运行起来的?JVM 的内存、GC、类加载、性能优化是怎么做到的?那些主流框架是如何设计的?DB 作为一个很重要的部分,我又该如何优化、如何做运维呢?这样的思考让我恐慌,却也促进了我的进步。我开始从另一个角度学习了。

​ 回想那段时间,内心还是会燃气一股热血。那是知识的输入和输出都到达最大化的一个阶段。基本两天我就可以刷掉一本 200 - 400 页的书,然后整理笔记。记不起来的、感觉模糊的、牵扯到其他不理解的继续看书,找博客,弄清楚之后把自己的理解写在笔记上。有时候一天就坐在那敲一篇几万字的读书笔记。其实说不清痛苦还是快乐 …

​ 当时差不多看了 30 多本经典书籍,也算是形成了比较完整的知识结构。那种高强度的训练让我把从大一学到的各种计算机专业知识都串起来了,好像突然打通了任督二脉,总能通过一个知识点发散出很多很多相关的知识。算得上是,真正跨入了开发的门槛。

四月

​ 2018 年刚开学我就泡在图书馆看书了。看以前写的笔记,整理博客,重新思考之前刷过的错题。我发现不论是以前学习的东西还是以前做的项目都还有很大的提升空间。对于以前看的书做的笔记,我又重新做了一遍,发现自己又有了很多新的理解。对于项目也会思考以前为什么那么实现,现在让我实现会不会有更好的实现方式呢?剩下的就是刷题了,LeetCode 、牛客,熟悉一些常用的算法,为找实习做准备。

​ 三月尾,我试着投了一些简历。四月初就开始陆陆续续面试了。说到面试,其实第一次面试大家都会紧张的,但是不要让过度的紧张让自己看起来应接不暇就可以了。之后的面试就会慢慢放松下来。其实面试,也就是一个双向的沟通学习,展示自己的过程,本没有太恐怖。找准定位,变现自己,就做到了能到到的最好了。

​ 后面就是 腾讯、阿里、百度 、携程的面试了,基本这几家面试官都很和善的,一路也算是比较顺利,只是当时腾讯最后一个主管面的时候直接给了五道算法题,还必须用 C 写,然后下载一个 gcc + CLion 基本时间过去一大半了,最后只有十多分钟做了两道题,然后就没有然后了…

​ 这里面印象比较好的就是阿里和携程了。阿里问的技术点都很深入,主要是因为问的点都偏向实际应用,我个人又更加喜欢这种关于实际开发的问题,另外也是我并不擅长算法。携程面试官则是对应聘者很热情,虽然当时面试场地没有腾讯那么大,但是面试官很 nice 的给我提了很多建议。

​ 最后我还是去了阿里,毕竟那里是 Javaer 的天堂,也是我学Java最初的心愿了。

实习

​ 阿里的师兄和师姐们都非常的 nice ,并且 对于新人的培养非常的用心。虽然感觉他们也特别忙碌,但师兄始终都很关心我,并给我找了很多资料让我熟悉业务,还抽出自己的空闲时间给我讲业务逻辑和项目结构。虽然在短时间内不能完全弄清楚公司业务,但是师兄的讲解还是让我受益颇多!

​ 另外,在阿里的实习也让我再一次发现自己真的很渺小。我会发现原来还有这么多自己不知道的框架、系统和工具。于是我又开始宅了,只不过这一次,我宅的地方变成了公司。我每天熟悉系统的业务模型和组内维护的系统代码,还要安排时间学习集团内的新技术。忙碌而紧张的学习甚至让我来不及为自己的进步开心,只是在内心深处觉得自己应该在多学一点,在努力一点。不仅仅是为了对得起自己最初的心愿,也是为了对得起那些默默支持着我的,默默帮助着我的人。

前行

​ 大四的时间过得异常的快,对于我来说,还没有好好感受过感受大学的美好就要匆匆说再见了。虽然我总是会在与别人交谈时避免谈到毕业的问题,可是自己心里清楚,自己留下了多少的遗憾。那些没有用心欣赏的玉兰花,没有好好感受过的西操场的风,以及那些来不及参与的一次次的同学聚会。

​ 大四的生活也没有我曾经以为的那么空闲。我还是写着代码,改着论文,过着平凡而又规律的生活。也许有人会觉得,只有奋斗的大学不会遗憾吗?会的,当然会。可是,没有奋斗的大学可能就不只是遗憾了,而是悔恨。也许是习惯了忙碌而充实的生活,也许是自己骨子里无趣又枯燥的灵魂,总之,我想我还是会继续这般生活——全力以赴,问心无愧。

Powered by Hexo and Hexo-theme-hiker

Copyright © 2015 - 2021 昨夜凛雨 All Rights Reserved.

UV : | PV :