漫漫前端路

前言

    从正式辞职到又一次开始上班,我用了整整 13 个月(差一天),时间不饶人。
    谨以此文记录在前端路上走的每一步。

路之伊始

    假设我们足够聪明,我们可以在脑海中以时间为横坐标,以对自己的认可程度为纵坐标,作一条曲线。那么这条曲线便是我们的人生之路。很久以前睿智的长辈就告诉我们,有几个时刻对这条曲线的影响会远远大于其他时刻,这些时刻包括:高考、工作和婚姻。目前我已经经历了其中了两个时间点,我认为这么说其实并不恰当。知道自己想干什么 以及 开始追求喜欢的人,在我看来才是最关键的两个点。
    大学四年在一种不断尝试以及不断失败的模式中度过,结果就是直到毕业也没有确定自己将来到底要走一条怎样的路。毕业后进入一家机械公司,为了更好的了解工艺,选择在制造部门呆了半年,然后转到设计部。这之后在设计部做了近一年半的机械工程师。表面上的一切顺利与躁动不安的年龄格格不入。15 年下半年发生了两件事情,其一是遇到了一个喜欢的女生,其二是家里发生了一些变故。这两件事情就像是两阵风,迎面吹过,平息了内心的躁动,竟考虑安定下来了。然而时间的力量是巨大的,只用了半年,事情发生了很大的变化,此时我又开始寻思改变了。创造所带来的成就感可以让我感觉到自己的存在,在这样的环境下我无法做到这点,不能再这样消极度日了。下定决心要转行了。
    既然要转,就面临着选择的问题。根据面向工资转行定理,很自然的想两个行业:金融和计算机。在我看来,计算机的趣味性和可创造性胜过金融,所以我用小脑做出了转计算机的决定。然后又面临选择了:做前端还是后端?要想了解一个复杂的事情,大多会选择自己熟悉的点进行切入。最开始接触的是 Python,大学的时候两个室友都选修过这门课。然后通过了解知道这门胶水语言的强大,但也正因为它的强大,我放弃了它。因为如果选择学习它,不可避免的需要在更细分的领域做出选择,而做出选择不仅需要精力还需要智慧。在这样的背景下,机缘巧合接触到了前端。最初对前端的了解是学习路线明确,可快速上手,而且涉及到视觉和交互等方面(后来才知道这部分其实已经细分到 UI 及交互设计师了)。然后就开始了前端的学习之路。
    学习路线在我的 16 年总结中已经说的比较详细了,总的来说就是一个不断尝试的过程。这篇博客中就另外两个选择说说自己当时的想法吧:其一是为什么不选择参加培训班,其二是为什么在自学半年后放弃工作机会而继续学习。
    参加培训班从来都没有出现在我的选择范围,细细一想,存在的原因有以下几点。上面也提到过,整个大学阶段我都处于一种比较低落的状态,虽然在不断的尝试,却并没有寻找到自己的一条路。时间虽然能慢慢减弱这种挫败感,但却无论如何也无法消除。这种自我否定的想法让我时而变得非常消极,因此我想再给自己一段思考的时间,而这段时间到底多长,我无从得出结论。基于这样的原因,我希望这段时间能够完全按照自己的想法来生活,不管是学习、玩耍还是作息。而这一点,培训机构是无论如何也满足不了的。所以就此一点,就可以完全将培训机构排除在外了。对于一个从来没有出现在脑子里面的问题作出答案,原因是被问到的次数太多了。
    为什么不尽早参加工作? 一部分是因为上面提到的原因:我仍然没有找到自己想要的答案,这段时间尚不能结束。另一部分的原因是当时技术水平太低,很容易限制自己的眼界,从而形成技术天花板。当然了,这只是我的想法,对于是否正确,我现在还无法做出判断。只需要对自己的选择负责就问心无愧了。

上下而求索

2017-05-21 工作第一个月

    工作还差三天就满一个月了,说一说这一个月来的感受。
    刚入职的时候,先熟悉公司的整体业务逻辑、技术栈和工具。知道了前端主要用 React 之后,开始跟着官方文档学习。学了差不多一个礼拜,文档还没有完全看完呢,松哥找我说,先写起来吧,这样学不是办法。然后就给了我一个重构页面的小任务练手。从这开始才真正的接触到公司的业务逻辑。这才感受到,看起来非常简单的页面,背后的逻辑竟这么复杂。之前自学的时候所接触和了解的部分和真正工作中的复杂程度根本不在一个量级,我所看到的只是冰山一角罢了。
    写了两三天,一头雾水,完全不了解里面的数据流,写出来的页面显示不了任何数据。松哥过来看了看,啪啪啪的一顿写,数据就出来了。根据他修改的部分,我又重新去看了看 Reflux 的官方文档,再来对比实际的代码进行理解,终于有了一点感觉。继续写了两三天,数据没啥问题了,但又有了其他问题:关联样式。松哥一直强调代码和样式的复用,表面上我也确实理解,但是在实际的应用过程中却很难取得这样的效果。这个还得建立在对整个系统样式的理解上,否则很难做到游刃有余的复用之前的样式。
    一个礼拜又过去了,给了我一个真正项目上的简单页面的编写任务。初步了解了下,感觉非常简单,一两天就能做出来。哈哈哈,还是太年轻。我的想法是先从接口获取数据,然后根据数据编写页面。捣鼓了两三天,又是 JQuery 又是 Openresty 的看,想把数据弄到手,结果一无所获。这时候松哥又出现了,告诉我接口先不管,先用静态的数据来模拟,之后再来帮我一起写接口。又是两三天,自认为样式差不多了,给松哥看了看,满以为完成的很好。松哥一看,一脸黑线:你这写的啥样式?这样的样式能复用吗?能自适应吗?有初始化吗?哈哈哈,我被问的一脸懵逼,确实是没有注意这些方面。之前自学的时候,只管在表面上看起来达到效果,哪管得上规范呐。这方面还是得多注意注意。之后开始写接口了,也是一问三不知,被松哥吐槽你咋啥都不知道。看完写好的代码,又学习了新姿势,开心。
    高中物理老师说的一句话到现在还记得,说的是人对于知识体系的理解程度分为四个阶段:1. 不知道不知道;2. 知道不知道;3. 不知道知道;4. 知道知道。认为很有道理,然后对比分析了下自己,很明显的处于第一个阶段。所以有时候根本不知道自己应该加强哪些方面,因为所有方面都需要加强。这也是目前面临的一个最大的问题。我认为解决问题的最佳途径就是多和松哥以及公司的前辈交流。调整自己的步调,努力做到和公司共振的状态。
    下个月的目标:一方面加强对公司业务逻辑的理解,另一方面在数据库和网络协议方面要下点心思。其实了解数据库也是为了更好的理解业务逻辑,有机统一。还有一点就是:技术博客还是得定期写一写,鞭策自己不断的学习。给自己定一个小要求,每两周写一篇技术博客,主题不限。每个月写一写总结,就更新一下这篇文章。

2017-06-25 工作第二个月

    到昨天为止,工作满两个月。本来计划好的两周一篇技术博客,一个月一次的总结,现在却并没有做到。应该是时间有点紧,暂时还么有完全适应这种工作节奏吧。
    这个月大体在忙两件事:1. 学习 redux,为重构后台界面做准备;2. 补充完善现在正在做的 H5 页面。懂得了一个道理:在工作中,快速学习和快速开发能力是非常重要的。以前自己一直走的是系统性学习的路线,现在应该要在快速的经验式学习上有所投入。

赠人玫瑰,手有余香