Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

学习前端一年都学到了什么 #13

Open
Cyrilszq opened this issue Aug 13, 2017 · 2 comments
Open

学习前端一年都学到了什么 #13

Cyrilszq opened this issue Aug 13, 2017 · 2 comments

Comments

@Cyrilszq
Copy link
Owner

学习前端一年都学到了什么

标题叫学习前端一年,但准确的说是一年零两个月,因为刚好从去年暑假开始接触、学习前端,其实这篇文章早就打算写,但一直忙着实习(其实是懒)没有去思考和总结。但最近正好实习快结束,主管也让我写一篇实习期总结,所以我也借此思考一下一年都学到了什么,有哪些不足,一下年有什么打算。准备主要分为三个部分:

关于学习态度

关于自己的一年里的进步与成长,第一个想到的就是学习态度。态度两个字其实包含很多可能,在我这里更多的是兴趣。记得去年暑假刚开始那会我刚把常用html元素名称记住,常用css属性都没记住还要查文档,js就会基本语法,看红宝书讲this,原型继承这些还是稀里糊涂的,不知道这些有啥用。当时跟着把百度前端学院的几个task一点一点完成,其中有一个task是写一个类似于todo list的工作计划管理页我印象非常深刻,当时居然用动态生成dom去拼接字符串的方法把这个需求完成的差不多了,现在想想自己当时真是在瞎搞。再看一下一年后的现在,我觉得目前的水平处理一般的业务基本没有问题,react,redux,vue,vuex,webpack,babel,node,koa,ES6&7&8,pwa,数据流,组件化,异步,模块化,函数式,响应式,前端真是随便一列就是一堆关键词(重点还都是近几年出现&流行的),由这个关键词又能展开扯一堆,各种库、工具、概念基本都熟悉或者了解。其实进步的不仅仅是前端,更重要的是把计算机相关的核心学科也补了一遍,数据结构,计算机网络,操作系统等。这些进步的取得很大程度在于学习态度,其实我一开始接触计算机纯粹是看这个行业工资高,学习周期又比电气短,既然可以花更少的时间赚更多的钱我为什么不学这个,后来学了之后才发现这个确实很适合我,刚开始是学的Android应用开发,好像基本上是从上午9点搞到晚上10点吧,记得当时学习效率真是很低,经常要花一天时间才能搞懂一个原生组件怎么用,现在想来当时自己没有打好java的基础就开始直接学Android是错误的,浪费了很多时间。不过也有可能这是初学者的必经之路,毕竟成长不是一蹴而就的,现在我如果再来学习一个我没接触过的东西,比如ios开发,我觉得语言也好,开发方式也好,我都可以很快上手,因为编程这个东西是相通的,从语言的角度来看大概就是各种语言特性相互抄抄所以学起来都挺快的(Haskell例外……真心看了语法就想放弃的语言……);从开发模式来看也是相通的,核心就是抽象、低耦合高内聚;从很多概念来看也是相通的,基本都是抄的操作系统,比如多线程,异步,模块,抽象这些操作系统里早就有了。我觉得坚持一年半的不断学习的结果就是现在已经把学习当成一种习惯,很难让自己什么也不学的度过一天(刷知乎也算),我并不认为这是个好习惯。
这段写的比较乱,基本想到什么就写什么,其实我想表达的就是一个人的学习态度决定着他的成长。

关于实习收获

很幸运自己的第一份工作就遇到一个好老板,好团队。虽然我没有待过其他团队,很难有个对比,但我的理解是能让人快乐工作的团队就是个好团队。收获可以列出以下几点:

  • 前端工程化

未实习之前,我所理解的前端工程化仅仅局限于组件化,模块化,打包构建这些。现在才发现工程化还可以包括很多东西,如项目开发规范,自动化部署,监控,持续集成,前端埋点等等。尤其是自动化构建、部署,自己以前都是手动上传新资源到服务器,或是在服务器上从github拉取新资源,手动操作总是麻烦的,虽然也听说过一些持续集成/持续发布的工具,如jenkins但没有亲自使用过。现在通过gitlab hook或是一些内部工具进行前端静态资源发布不仅简化了很多操作而且可以有效避免出错。
工程化是一个很大的话题,可以延伸到软件工程这个经典话题,之前也翻过这方面的书,感受是没有什么实际工作经验就去看这种东西那真的可以当成玄学来看了,如今有了实践之后对软件工程又多了一些理解,计划实习结束回学校再看看这方面的书。

  • 持续迭代

因为实习期间做的项目有好几个是基于原有项目开发新功能,所以对于持续迭代,如何修改不熟悉的代码,快速实现新需求这方面的能力也有所提高。一个团队人员的变动是不可避免的,所以基于别人代码快速实现新需求是一种必备技能,关于这个我觉得更多的是一个经验的问题,写的代码多了,看的代码多了,自然能很快定位到我需要动哪块代码,比如我现在面对这种需求已经不像一开始那样感到比较混乱了。当然持续迭代还有另一种要求,自己设计的代码要具有可扩展性,规范的目录结构等。可扩展性在前端一般就是组件化,模块化,其实就是抽象。关于这一点我还有个比较深刻的体会,就是不管一开始多简单的项目都要学会抽象、模块化,不能只为快速实现当前需求就简单的把代码都耦合到一起,要考虑到项目的后续迭代,而且往往还要经过其他人修改,迭代次数多了估计就面目全非了吧,后续的维护者(比如我)看到这样的代码一般就按原有代码风格写了,很难提起心情进行优化重构,这样就是一个恶性循环。当然关于这一点还需要把握好度,也不能过度设计。

  • 团队协作

因为之前一直是自己独立开发一些demo级别的项目,前后端都自己写,想怎么写就怎么写,对于团队协作模式基本是一无所知。如今经过一两个完整项目之后对于团队协作开发有了比较全面的认识,比如一个项目周期:PRD评审,交互评审,进入开发,前后端联调自测,测试评审,提测并修复bug,发布上线,各个阶段是干嘛的,作为前端在这些阶段要发挥哪些作用,现在已经基本明白。

  • 阿里味

没有工作之前就明白企业文化、价值观的重要性,但亲身体验过后才会明白它为什么重要,能给企业带来什么,能给我们个人带来什么。记得刚来的第一天就非常惊讶,这里的后勤工作人员永远都这么的有礼貌,技术人员从我接触到的其他实习生和团队成员来看,每一位都是非常优秀的人,聪明、乐观、皮实、自省是阿里的人才观,这也是每一个阿里人所拥有的品质。最近在看《浪潮之巅》这本书,里面讲述的一个个企业的兴衰,没有一家能一直兴盛,在一个时代处在浪潮之巅,下一个时代不抓住机会可能就由此衰败,其中企业的基因、文化起着很重要的作用。企业的文化和价值观,短短两个月我只是有了一些初步的认识,这是一个需要不断感受、思考的东西。

最后,我觉得我是一个不善于表达感谢的人,但其实在心里我是十分感谢在实习期间每一个帮助过我的人。

关于未来

很早之前就没有那种快速成长的感觉了,现在的进步是缓慢的,如果每天都做一个总结会发现今天好像什么也没学到,但如果一个月、两个月再来回顾一下,其实发现还是学到了不少东西的。在这种情况下我觉得可以做一些知识的沉淀,读一些经典计算机书籍,尤其实习两个月之后我更加感觉到经典的书籍一定要在大学去读,因为工作后很难有这个心情去读经(枯)典(燥)书籍了。而幸好我的大学生活还没有结束,我希望接下来利用在学校的时间去读一些书,暂定的计划有SICP,软件工程相关的书,这是短期的计划。至于长期的计划就比较难了,究竟是走业务路线还是技术路线?是专注前端还是转向其他方向?这涉及到我现在不断思考的一个问题:我的竞争力在哪?如何不那么容易被人替代?刚开始我的答案是我几年后肯定要转行,因为前端的水还是太浅,或者说比较深的地方我们做业务的很难接触到。现在我的答案是希望自己能一直保持一颗学习的心,其实这是一个显而易见的答案,能保持一直学习的人未来的成就一定不会太低,但做到怕是很难的,这便是IT行业与传统行业的不同吧,不过既然已经做出了选择就走到底吧,无需多想。

期待一年后的自己

@Cyrilszq
Copy link
Owner Author

Cyrilszq commented May 5, 2019

每次写成长这种东西,过一段时间来看就会觉得当时的想法很不成熟,比如现在 :)

@EzrealPrince
Copy link

答主真的很强哦,向答主学习

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants