October 25, 2016
就在上个礼拜我结束了在北京的前端工程师实习回到了学校,现在正在学校休整中。在实习的这段时间内忙于各种事情也没有再写过一篇博客了,然而一个想成为优秀程序员的我怎么能放弃这样的自我总结机会呢!于是乎现在先写下过去这三个月的暑期实习的感受,从而也让自己清楚一下自己所处的状态。
在北京实习的这家公司是一个创业公司,公司总共 40 人左右。想到一开始就是在知乎上看到来的公司的招聘信息,点进去看到公司主页还挺像那么回事的,招聘信息还颇有情怀。然后 Ctrl + U
查看源代码,代码竟然有压缩,应该还是有前端的……(当时确实就是这么想的)后来很快就接到了电话面试,面试过程很轻松,leader 很随和。公司的技术栈和我在学校自学的几乎一致,不得不说也挺有缘。这次期间也没有收到别的面试,于是几天后就接受了这份实习。
公司给我最大的感受就是自在,没有过多约束,不用打卡,没有办公室政治,大家也都是比较随和的人。我们前端部门的 leader 人真的特好,特好相处,也没有像传说中的那样让实习生做些简单的重复性劳动,我来了之后也挺放心的让我开始用 react
重构项目中的老代码。在这种氛围下,我也很随意,让同学觉得我都不像一个实习生该有的样子……只不过我觉得公司给我一个宽松的环境让我自由发挥,那我也就会付出相应的劳动,我相信自己这三个月下来还是给公司做出了我应有的贡献的。对于程序员来说我相信自由和宽松的环境更能激发自身的能力以及对技术本身的追求,在这样的环境下我有了时间可以摸索自己没有探索过的领域,更加深入了解 react
这门框架,写个具有些许复杂性的公用数据表组件给我带来了不少的成就感,这样的环境下才能不断提升自我。
也因为我来公司之前就曾经自学过一段时间的 react
并且写出了一个简单的项目,所以我来了之后基本没有多少学习成本就开始直接上手工作了。一开始重构还能遇到很多的问题,但是随着重构继续进行,之后已经感觉到自己已经开始习惯了这样的方式重构代码了,就像写业务代码一样,没有新的挑战,就是按照一定的套路来实现。开始的过程中确实学到了不少,熟悉了 redux
和 react
的搭配使用,immutable
的常用用法以及对 JavaScript
本身的了解及使用技巧。后来我已经感觉到自己停留在舒适区没有过多进取,好吧,自己给自己找事。
公司因为老架构的原因,没有整套上 webpack
,还用着 gulp
处理 python
的 jinja2
模板。webpack
的配置也只是简单的打包,如果每次更改了 .jsx
组件代码之后,只要重新编译打包整个项目才能看到效果,想当初我自己写项目的时候用着的可是完善的热更新啊!好吧,那我就来搭建一套热更新的开发环境吧,经过几天的查找资料与学习,我搭建出来了一个简单的开发环境已经对应的生产环境配置。对编译打包做了些优化。此时没哟热更新(hmr)但是可以增量编译及自动刷新界面,经过一段时间的使用,leader 同意了我的代码提交并大家都开始使用这个开发环境。后来我进一步完善了这个配置,可以支持 hmr
、source-map
、hash 缓存方案
…… 也是因为对自己的追求,最后说服 leader 我自己基于对一个开源框架 bootstrap-table
源码的阅读,开发了一个完全适用与我们公司定制的 DataTable
组件,这种类似造轮子的体验给我的体会就是:人嘛,要有追求一些,不能习惯于舒适的现状,要给自己多找机会(麻烦)学习!
我们前端的 leader 能写 docker
、配 nginx
、 改 Python
脚本 ……能自己正确搭出一套新架构的运行环境。这种状态是我对自己的理想状态,不是因此就是“不务正业”了,一专多长 才是正道,当然我现在也只熟悉前端方向,但是其他方向的内容我们也应该了解,毕竟我们说到底还是个程序员,是个技术人员,没必要限死自己。在那之后我也是学会了一些简单的用法,我现在有个自己的域名,自己的服务器,在上面装上 docker
、nginx
,把自己的项目部署上去还是挺有意思的,接下来就是搭建一套简易的服务部署流程了,毕竟这么一段时间里一直在用 linux
系统。如果要给自己个定义,我认为我会是一名偏后端的前端工程师,我更喜欢用工具提升开发效率,喜欢对数据逻辑的处理以及工程化的实现相比实现样式效果而言。希望能有效地努力学习,加油!
身为一个程序员,我觉的但凡有些本事都会比较自傲,但是我在我 leader 的身上真的看到的很不一样,他很谦虚,很虚心接受别人的看法即使是我一个还没出学校的实习生,没有轻视,很平等的对待的感觉。让我一直有些许骄傲的心里波动了不少,自傲难以避免,我相信我心里永远会有这么一份傲气,但是虚心接受别人的观点和意见却是不冲突也是应该做到的。总怀着傲意难免使人目高于顶,眼高手低,这样当你被你自以为不如你的人打脸时想必会非常痛苦。谦虚使人进步!
别的不说,大公司的要求就是考察你的那些基础知识,操作系统,计算机网络,组成原理 之类的。这些还真的很重要,除了大公司的要求之外,工作的时候发现对计算机网络的认识确实能帮助我们开发时更敏锐的察觉出一些问题,因此其他的那些基础知识真的很重要,真的能改变一个人的思考问题时的角度,过去被自己忽略的基础知识现在也该是捡起来的时候了。
自说自话也已经结束了,接下来能做的就是把这段时间里的对技术的了解以及总结写出来了。还有,实习公司真的很棒,GeneDock!