实习是一种怎样的体验

三四月份各种找实习。然后亮哥联系到我,说让我去看一下。

我就过去了一下,离学校还挺远的,地铁要一个小时多一点。

环境还挺不错的。桌子特别大,挺爽的!

我回去想了想就决定暑假去干了。

考过试什么的,暑假就开始去干活了。

第一天

第一天没活干,就装自己的开发环境了。

什么Ubuntu啊,Vim啊之类的。

之前幸好把配置文件都放在了Github上,所以也没费多大劲就弄好了。

反正感觉挺不错的,公司让我随便倒腾,也没给什么限制。

工作

这一块是不是不能说具体的工作内容。。。

反正就是我写了两个方案,都不是想要的方案。心中很不开心的,因为我觉得我之前觉得我写的代码都还可以吧,可是两次方案都不是想要的那个,我就有点儿心虚了。

后来亮哥给写了一个我才明白什么意思 :sob:

我稍微改了一些。就开始基于这个方案撸组件了。

预估进度

亮哥问我,这个权限模块多长时间能写完。我信心满满啊,说:不就是CURD么!简单得很,一天就能干完。

亮哥笑着说,好啊。

第二天我觉得事情有些不对啊。怎么做了一天才干了这么点儿活。

第三天我觉得事情没那么简单,虽然这些代码都在脑子里,但是写出来也得要时间。。。

然后炸了。我跟亮哥说预估错了,感觉干不完。

然后他笑着告诉我,其实他知道干不完的。那个时候也没打算做完,因为虽然不难,但是细节很多,还是比较麻烦的。

我那个时候大概明白了一些事情。这些东西都在脑子里,要写出来也要时间的。

后来这个模块我干了一个星期总算做完了。

深入

一开始定方案的时候要对webpack有比较深入的了解。比如运行机制什么的。

我那个时候还觉得用得可以的,可是对运行机制却没有了解得很深入。

后来亮哥各种带我,刷文档,打断点我才了解得多了一些。

那个时候亮哥说过一些话,大概是:

这个里面太黑了,怎么敢用。

我之前听过这些言论,只是没怎么在意过。

那个时候结合对webpack的了解。我才明白更多。

如果不能完全hold住这个技术,用起来肯定提心吊胆的,出了问题也没办法解决。

对于个人项目没什么特别大的影响,但是商业项目却是不能这么武断的。

对待问题

前几天,阮一峰在微博上发了四道题,其中一道是这样的,问输出什么:

class A {
constructor() {
this.p = 'hello'
}
print() {
console.log(this.p)
}
}
class B extends A {
constructor() {
super()
this.p = 'world'
}
m() {
super.print()
}
print() {
console.log(this.p)
}
}

let b = new B()
b.m()

我当然是按照OO的思想来想的,跑到Node里就错了。然后我大概也能猜出来是因为原型链的地方,然后我就没再管了。想答案的时候顺便发到公司群里面了。

然后我发现,我是菜鸡,亮哥是Leader的原因了。

公司两尊大牛一直就这个问题讨论,前后一个多小时。

虽然都知道大概是原型链的问题,却没有到这一层浅尝辄止。

整个流程是这样的:先在console里跑了一遍,然后争论为什么是这种情况,语言设计中应不应该是这种情况。随后用Java写了一遍,跑一遍,再讨论为什么。然后用断点调试查找是不是原型链的问题,得到结果:是。到这里得到结果了还没完,又把babel转出来的代码看一遍,发现了一个明显传入this的地方。中间找出文档给大家看。

我到第一步就停了,而亮哥对一个问题深入至此。

之前还有webpack的事情也是。

我是见识到亮哥把断点用得那么溜,我才意识到原来前端也可以像写C++一样调试断电,找出问题的。

现在有问题也是习惯性地标记断点。讲真,这个方法对于理解作用域,this这些概念是真的有用。

同事

刚刚写了一大堆,然后我想想是不是不能说。。。

反正大意就是我在公司玩得开心。

Mac配置不会做,有十几年经验的老司机教我。论文写不完,有博士愿意帮我做翻译。出门忘带钱,有Nice的同事帮我买饭。还有不远一个多小时的路程跑来请我吃饭的。

还有好多好多。

公司情况好像不能说太多是吧。。。不是很懂这些规则 :joy:

其他

话到嘴边又会忘记。以后继续更新吧。