不念2018,不畏2019

我要在寒冬游个泳 | 2018 年度总结

国际惯例

      大学三本非计算机专业,从拎包入住那天到卷铺盖走人,四年的时间除了学习,好像大学该做的也都做了。赶鸭子上架地找了第一份工作,不需要动脑也不需要忧愁未来,因为一眼看下去未来好像也就这样。呆了一年的时间,某天在和朋友聊完之后,脑子一热地就下定了决心,入坑编程。

初入坑中

      辞去工作的我又回到了呆了四年的南京,在朋友的介绍下(朋友也不懂这行)入坑一个目前所知最坑培训之一(也许没有之一,连个正式的项目都没有带着做过),入坑java。没错我是水过四个月java的(手动滑稽)。

    理所当然的入职第一份工作,外包,明明是个java后端工程师,写着写着写成了专职前端,也就是2017年5月份,正式开始入前端。当时自己对于前端什么概念都没有,用的还是jsp,上手就jq,当时的感觉就是,管它三七二十一,拿起jq就是干。什么命名空间,什么模块化,什么封装。维护?管挖不管填。就这样两个月之后,偶然看到刚加入的五年前端同事写的代码,再对比自己,从当时我意识到代码被两样东西执行,引擎和人。我开始意识到自己该主动向外求取而不是哪里不会查哪里(你不去接触未知,您永远不知道自己未知)。

    入门第一本书,js高程,当时给我的感觉就像是野路子碰到正规军,开始对于知识体系化,结构化有了意识(就比如武侠小说中人有108个穴道,你必须一个个打通,厉害的武林绝学,都是由多个穴道组成一门武学)。我必须创立一门自己的武学(其实武学大同小异,金钟罩和铁布衫说不定打通的穴道只是相差数个),当然学武功离不开天才地宝,神兵利器。不错的英语阅读能力,干货满满的只是论坛,详尽有序的规范文档等等,这些都是你学习过程中的加速器。(当然,武学得配合心经,比如方法论)

渐入入门

    同年10月,开始出来面试,底子薄弱,经验不足,很成功的挂了好几家,终于被现在这家公司收留。新公司虽然不大,但技术体系却比之之前大有不同。传统意义上的前后端职责分离,并且开始接触前端自动化工程构建,开始入坑vue,开始系统的看书学习。这一年我一如既往的开始埋坑,然后在心中填坑(重构?这辈子都不可能重构的),重新把学习java时强调的面向对象在前端中思考,开始学习函数式编程和理解函数在js中的影响和优缺点,开始理解vue这类框架真正解决是哪些问题(总的来说我的理解前端框架也好,架构也好,更多是面对项目的业务架构地多变以及多人合作开发中衍生出来的一种解决方案),所以之后的编程中会更多地思考,多人开发时如何更多地减少差异性,提高健壮度,然后面临业务架构变化的不确定性如何提高代码的灵活可拓展。(瞎几把乱吹)当然过多的思考这些免不了造成眼高手低。

略有体悟

    当然2018年最重要的收获是思考很重要,磨刀不误砍柴工的同时也要知道组装你的知识的重要性(触类旁通,融会贯通,后面我要讲到一个点叫能力重叠),一个知识点建立在另一个的基础上,既要有自底向上,比如了解整个计算机基础的情况下反推一些模块的实现。也要自上而下分析一切模块,一切设计,一切架构都来源于需求,来源于人类对于世界的认知。

    (我猜如果鱼来设计语言,肯定不是我们这样的思维方式去设计,有时候与其说基于哪种方式编程,不如说都是面向人类思考认知习惯编程, 但是如果鱼也会编程,那说不定和我们很多人编程模式一样,因为你有时候并不一定先以人类高级思维出发,而是局限于所学的技术底层)。我们经历了从底层语言到高级语言,越来越趋向于人类习惯。所以在编程中我的思考是更多的先描述流程,确立职责对象。再思考每个职责用什么实现(也叫面向抽象,但又不太像,我提倡的是先弄清楚一件事情真正有几个环节,哪些流程)。用人类的思维编程,用人类的思维编程,用人类的思维编程,重要的事情说三遍。

    这不仅在开发中、在学习中、调试问题中,也特别有用,我们应先抛开已有的技术认知,先从人类的角度去认知分析,再去实现,具体,优化(我不知道是不是有人会反过来,基于自己技术体系去思考怎么拆解业务,实现业务,那除非你对于自身技术融会贯通信手拈来,不然往往会成为你的阻碍)。我一直觉得自己不聪明,所以不聪明的人你就需要一个工具或者说定时思维去减少你的思考,这个时候出来了一些叫设计模式,叫编程范式。

项目结构设计

    在我目前的认知上,设计上分为两个维度,一个是从抽象到具体,另外一个是职责分离。剖解一个项目时,可以先将整个项目分解成多个职责模块,正如企业会有多个部门,每个部分职责明确。然后每个职责又能拆解出更细分的职责,类似一个树形。分类职责的好处,在企业中首先责任明确,谁的问题找谁(出了问题好修改,好定位)。二,任务明确,不需要陷入复杂的各中事务交杂中,负责好自己的事务(逻辑清晰简单,给你的小脑袋减减压力)。职责同时也是一个抽象概念,我不关注你这个部门怎么负责这件事情的,只要保证我给你下达的职责保证完成,你享有高度自治,想怎么玩怎么玩,你外包出去都行(我们能随意替换具体实现,项目中可能面临技术调整,然后可能有了某个第三方库有彩蛋了想换一个)

能力重叠

    我给我要讲的起了这个名字,什么意思呢,对于很多像我一样转行的人,其实你学习编程的过程中,会发现一些程序员的能力你已经具备,很简单的你会发现英语好的人学得快,之前从事脑力工作的也学得快等等,之前讲到武侠小说一百零八个穴道,每一些穴道组成一门武学,张无忌学完九阳神功很快就能学会乾坤大挪移,正是这个道理。同时在每种编程技术的学习中也存在能力重叠,为什么后端学前端上手这么厉害,为什么ios出身的yck学前端这么快。所以转行的朋友也好,将要学习新技术的朋友也好,想想新的能力,新的技术中和你目前存在哪些能力重叠,善于发现这些能力重叠是你快速掌握的法门。

技术背景,场景

    很多文章喜欢讲一门技术的起源,背景,这个有点重要,理解一门技术的来源是理解何种场景下需要这门技术,这门技术的产生本身是为了解决什么问题,这能帮助你更快更好的掌握这门技术,甚至很多时候,你能反推出一门技术存在哪些能力(这个地方又是从人类思维推导底层技术)。最近看了一点函数式编程的书,初看时很困惑,讲的是很有道理,但是在前端实践中却困惑于好像没这么多地方需要用的到,那我什么时候应该用到,什么场景下更适合函数式编程中的思维去解决问题。但当我开始慢慢思索函数式在前端中的场景,函数在前端编程中解决的问题时,我开始对函数式编程的理解更亲近(对的是亲近),开始接受这门思想。

学习提升

    方法论,思维定式,学习方向重要,确实重要,你很欠缺,你更欠缺的心里没点数吗。智力大多天生决定,但智慧的积累绝对在于你的坚持学习,上面提到的一些帮助学习的方法,假如你是个坚持学习的人,对你来说你肯定会学到相信我。但是往往生活中问你方法论,学习方向,何种思维模式更利于学习的人,大多是没怎么看书学习,不怎么坚持学习的人,锁和钥匙都在你手中,为何要求于人。给自己定个小目标啥的,你今天高呼大佬666,等你看完10本书再来看,之前的大佬真的这么厉害吗。

展望未来

2019年,也没什么特别的期望,期望的少才失望的少。期许几件务实的事情把

  • 健身健身健身,健身使人变高,健身使人变帅,健身使人变聪明
  • 看20本书,别管啥该学啥,看它。
  • 旅行,你不只是一个程序员,你应该发掘更多的潜力,多看看星辰和大海。
  • 进大厂进大厂进大厂。大佬们带我飞。

猜你喜欢

转载自juejin.im/post/5c45862f6fb9a049cb1910a6