实习总结

by Teobler on 01 / 02 / 2018

views

去年10月开始了在成都一个月的校招之旅,最终在11月加入了yh,开始了为期两个月的实习。如方方所说,一般初创级别的公司给不了你太好的成长环境,所有的提升都需要你去主动自学,主动发问,主动提升,幸运的是遇到了一位非常热心的同事 victor ,帮我解决了非常多工作上的困难。还有一位非常棒的leader moma ,教给了我一些可能你要工作好几年才能悟出来的道理,在这里对他们非常感谢。

氛围

首先来说公司的氛围,可能是成都分公司的原因,公司的氛围让我出乎意料的觉得轻松,与想象中的严肃认真完全不一样。大家工作时该认真认真,工作之余也能开各种小玩笑活跃气氛,整个工作氛围很轻松活跃,工作进度也能按时跟上。

至于公司的技术氛围,不能说是浓厚,但也绝对不淡薄。工作中没有解决的问题,会被延伸到饭桌上,路上。对于我这样一个刚毕业的小海绵来说,还是能收益不少的。但是由于组里大多数人都是后端程序员,所以在前端问题的讨论上就不是很深入,作为一个前端入门的我来说,居然能解决大家的一些问题是让我始料未及的,我没有为我能解决大家的问题而感到高兴,反而觉得组里的前端技术不是很深入的样子,毕竟这些问题是一些很基础的问题,这也是让我心里有点膈应的地方。

自己是一个不善言辞的人,所以有的时候会感觉融入不到大家的讨论之中,虽然这是我一直在努力改变的问题,但是至今没有令我满意,希望以后我也能成为那个能够创造技术氛围而不是努力融入的那一个人。

我遇到与解决的一些问题

  1. 在公司大部分人是后端程序员,但是现在在写前端,而我是一个纯前端,当有一个任务需要我和后端进行配合时,会出现一个问题,他也懂前端,但是思路跟我的不一定一样,就会对我造成干扰,思路混乱,同时他能把控前后端。所以在有类似任务出现时,需要定下一个前后端交互的规范,最好有文档,后端不想写,我可以写,大致内容如下:
  • 交互方式,在公司的话大概就是,是使用ajax还是firereq?reqid是多少?idx是多少?约定url是多少?交互方式是get还是post还是别的?
  • 数据交互是json还是啥?字段名称是啥?我要从哪去取
  • 一定要在开发前做好约定,写出文档,可以极大提升开发效率
  1. 父组件更新state,传递新属性进入子组件,更新props,生命周期函数刷新,换句话说,这是父子组件通信问题

    该问题发生于父组件将state作为子组件的props传入子组件,此时子组件再将此props赋值给子组件的state,之后再子组件中执行一个父组件传入的setState回调,但是此时本应该重新渲染的子组件却没有重新渲染,原因很简单,你并没有重新渲染子组件,只是更新了父组件。解决办法也很简单,我们不将这个值设置成子组件的state就好,在改变时调用一个父组件传递的回调函数来控制父组件的状态,从而从新渲染父组件,更新子组件。 这个错误也让我重新审视自己之前随便糊弄看了看的react生命周期问题,算是进入公司后对自己不扎实的react基础问题的一次小小的警示吧。

    参考

  2. setState异步怎么拿到实时更新的数据,刷新dom的机制到底是什么,前后相同还会刷新吗

    • 要拿到更新后的state,可以在setState函数中传入第二个回调函数,该函数在setState结束后进行调用,就能拿到更新后的state
    • setState执行后,默认情况下(shouldComponentUpdate默认返回true),一定会重新渲染视图,无论state状态更新与否
  3. 注意创造健壮的代码,生产环境不像自己随便玩小项目一样,应该让代码拥有足够的健壮性,如果一份代码能被自己轻易搞崩,那么就是及其不合格的代码,换言之,我们在写代码的时候需要做异常处理,即考虑特殊情况,例如

  • 发送请求接收参数时,参数为空咋办?
  • 发送请求时,用户不当操作参数为空咋办?
  • 用户输入时前端简单的校验问题

程序要能正确抛出错误而不是莫名其妙崩溃是最基本的要求

  1. 图片上传问题

图片上传问题算是一个古老的前端问题了,发展到现在已经有了很多成熟的解决方案,公司内前后端交互是公司内自己封装了一个ajax,然后使用这个封装后的ajax。所以在解决这个问题时,我用了input(type="file"),之后将其dom隐藏,用了另外一个自己写的dom结构达到美化和同一的目的。然后new了一个FormData对象,再将该对象用ajax发送到了后台。

  1. 剩下的问题基本都是一些通病了,大概问题在于各个对象的方法使用不够熟练,像是调用数组方法来处理诸如:删除数组中符合条件的元素;删除指定index的元素;元素换位;一个数组是否包含另外一个数组中的元素等等之类的问题

当然,由于自己略微有点懒,一些问题没有及时记录下来,导致现在忘得都差不多了,就没能记录下来,这个问题就比较大了,以后改正。

我学到的

leader时常会在工作中或者周会上与我们分享他作为一位老程序员得到的一些职场经验,作为一个还没有真正进入职场的半学生来说,有些问题真的是收益匪浅,遗憾的是没有能够全部记录下来

尝试站在你的上司角度提出和解决问题

作为一名企业员工,多多站在管理层来考虑和解决问题,做这些事情所得到的收益一般情况下都是你远远想不到的,像是与其他员工增进感情,提升自己在公司的地位,提升自己的技能,扩展自己的技能树等等。想象这样一个场景,公司后端同事在接触前端开发,举步维艰,然后你作为资深前端,写了个贴合公司业务逻辑的前端框架给他们使用,解决了他们的问题,也提升了公司的效率,同时你自己也获益良多。

自动化流程

工作中一些繁琐却又简单,毫无技术含量的工作,赶紧想办法将它们自动化吧,不然浪费的是你自己的时间和精力,这些节省下来的时间和精力,可以让你做很多事情了。如果不能自动化,叫上产品和其他开发的同事,有没有办法能够最大化的简化流程呢?办法总比问题多。

做一个owner而不是worker

我们组负责的架构是那一部分,我能负责哪一部分。主动担起自己的责任,主动负责一项内容,当一涉及到某个领域,同事们首先想到的就是来寻求你的帮助,虽然你自己还有点繁琐,但是你在公司里的地位肯定会有所不同。当然了,千万不要主动承担一些毫无水平,毫无难度的领域,得不偿失。这是你走在“成为公司重要的人”的路上的第一步。

严于律己

说实话写逻辑代码很简单,随便找个人来写都能写出来,可是一份能跑的代码和一份优美而快速的代码显然是不一样的。写完这部分代码,有没有优化的余地?有没有垃圾代码不需要?那么下一次写出来的代码能不能比这一次好呢?多多坚持,你自己的改变,你自己能看出来的。

就差一点

其实每一件工作你做80-90%就可以交工了,也看不出什么大问题,但是最后这一点真的那么难吗?其实最后这一点可能是最重要的,它们大部分时候看起来可有可无,但是却有着锦上添花的作用,补上去这10%,有意想不到的好处。(例子我是真的想不起来了,但是在工作中大家可以细细体会,会理解的 =。=)

感谢

yh是一家很不错的公司,特别在投入了tx的阵营之后,我是看好yh以后的发展的,但是yh作为一家自称为创业期的公司来说,对于我的提升和提升速度都太慢了,我不知道自己的自制力能够坚持多久,我需要入职的前两年给我大的提升,趁我还是一个能吸水的海绵,我想多吸水,感谢yh带给我的,也感谢各个同事给我的帮助

江湖有缘再见~