时光荏苒,大学的实习期即将结束了,不能算非常圆满但是也有许多感受。毕竟,挤了差不多五个月的地铁,每天2个小时,无论是上班还是回家身体都是无力的,也算是体验过了社会人的生活。

我在公司做的比较杂,有小程序,移动端,和pc端网站,还有就是兼后端吧,其实就是协助团队实现一些小的模块,修改页面等一些外围的工作。这些都在预料之中。我找实习的初衷还是想体验一下互联网公司的工作环境、工作模式和方法,同时了解一下他们是如何了解并学习新知识的,从这一点上来说算是如愿以偿。

在学校,无论是做项目还是产品,往往是一个人大包干。从产品(网站)设计,前台html,javascript编写,数据库架构,后端代码,都是一个人完成的。而在正式的公司里,这一套流程是有着严格分工的,大致如下:1 首先由产品经理与客户交流,讨论、沟通并产生需求,作出产品原型图,(在软件领域应该算是工业设计原型图?) 。将原型图交付设计师,让设计师通过构想的原型图设计出相关图片。前端工程师通过设计师的图片切图并作出静态页。同时,产品经理通过沟通和文档的方式将需求告知后端开发人员。研发人员根据需求设计数据库并进行相应编码,其中还要与前端工程师沟通并完成一些接口交互(比如json等),产品完成后最后进行测试等步骤。

首先说说产品经理。我们公司我最佩服的就是我们老板,由于公司小,他是跑业务,拉客户,产品经理,全包了,公司里最值得仰望的人就是非我们老板莫属吧。

下面讲一下我的职位前端工程师。前端,多么绚烂的一个字眼啊。所有复杂又牛逼哄哄的动态特效全部经自我手,想想都是激动人心的一件事。其实,前端工程师大部分工作还是蛮辛苦的,需要将设计师的图稿转化为html页,要适应chrome 要适应火狐,要适应IE, 要适应IE6(这个囧),要适应iphone,要适应ipad,要适应ipod.!。

上面全是前端做的地方,有没有除了js特效还让前端大显伸手的地方呢? 看看阿尔法城的前端设计吧。前端MVC架构。恩你没看错,就是前端mvc。事实上,做网页经常遇到这样的情况,就是网站的页面很少但是单个页面的前端设计及其复杂。这个时候普通的单一js文件就不适用了,你需要自己架构或者使用现有的javascript的MVC框架解决问题。这时如何优化js,css代码,如何建立起一个低耦合,复用性高的框架,如何灵活地运用一些设计模式,这都是前端工程师面对大型需要而考虑的。

除此之外,现在html5的流行与移动互联网的兴起也让前端有了更多的用武之地。最后推荐一些干货吧。bootstrap是twitter推出的一个能够使前端工程师快速开发出兼容性强,组件功能丰富的javascript开源库;一个名为Alice-css的base.css文件也能解决一些兼容性方面的问题;backbone是一个javascriptMVC框架,这个我也有待学习。

接下来就是后端啦,虽然我是兼后端,但是也能解决一些系统功能上的问题,刚开始,可能还不习惯别人洗的代码,各种算法数据结构、设计模式、各类框架构架让我学个够!,每天晚上都是回去想的都是公司的代码,构架。

现在的编程语言百花其放,各自适合的工作均不同。使用哪种语言还真是萝卜青菜各有所爱。注意一定要发挥各个语言之所长:python就要做胶水语言,java在业务处理方面非常出色,php最适合网页展现;.NET在MIS方面独领风骚,而我最擅长的web前端,在公司也是独具一格。

选择什么语言不重要,关键是要看清语言背后的东西。绝不是你学过一门语言,然后再使用过那门语言的相关框架开发过项目你就能出师了。那只是一种你掌握的技术,而单纯的技术并不能转化为自己的理解,不能转化为自己的能力。就说说java吧,可能当初大学没好好学java,一心往前端这个方向钻了,结果进入企业,光有一项技能是不够的,需要的是多方面技术的人才,就因为公司的需要,我又从新捡起了java知识,先说面向对象。要搞清楚的是基于对象和面向对象是两码事,java是一门基于对象的语言,而不是你使用java编程你就面向对象了。在实践中不断地领悟别人大神提出的设计模式原理,慢慢地学会对象的用法。能根据需要,灵活地运用接口与继承是关键。

一个合格的程序员很大程度上也是半个运维工程师。平时数据库、服务器的维护往往也需要我亲历亲为。这就要求你熟练掌握linux,unix各项指令的使用,由于很多我都是从新接触,需要一个过渡的时间学习,然后老板专门安排时间让我自己学,学完直接上手实践,其实实践时我的心也是扑哧扑哧的跳,就来公司的两个月时,老板让我改线上的mysql数据库,可能因为我的初心大意,不小心添加了脏数据,导致java后台代码查询数据库的时候查询不出来,为了让系统正常运行,按天中午不吃饭,加班查找问题,一一排除,还好有惊无险,最终找出来问题。从那以后我每学一项新的技能,我都要认认真真的看,多问自己几个为什么。

说的这么多,简单说说我实习做前端的收获。首先是学会了写微信小程序,又再次颠覆了我对微信的认知,了解了开源领域的猿们是如何快速接受新东西的。在选择开发工具方面,我想对IDE说再见了,不轻量的东西就不灵活,不简洁。公司里的人大部分都使用sublime 一个轻量级的文本编辑器,其优点在于能灵活地自定义快捷键、高效的查找替换、更便捷地代码书写方法以及优美的UI。

实习中除了技术上提升之外更多是不断体会沟通的技巧。比方说,客户说:“我想要实现一个XXX功能”,然后你说好,然后去做了。最后给客户看,客户说,“你怎么作成了这样的东西呀,我想实现的是XX效果”,你很委屈地说“你上次跟我说需求时并没有提到这一点啊”。就此僵持。

谁的错?客户的错吗?其实是不完全的。就有一个例子,之前做一个小程序,客户只是简简单单的说了只要企业展示,有预约的功能就行,然后ui画了图,我照着做了,最后客户提了一大推要求,从那以后我就知道,往往在客户的脑海里,他所想的需求就是不清晰的,是模糊的,也很有可能是整个客户团队经过各种讨论最后折中的一个结果。其次,不同的人语言表达的方式和能力是不一样的,他以为你能理解,你也以为你理解了,中间的差别也可能有十万八千里。

实习马上快结束了,进入企业还是 感觉自己还没掌握的知识还有很多,至今我还没学如何用scoket;在面向对象方面仍有许多困惑;前端代码实现起来依旧有很多问题;很多框架和软件都只是了解而没有实践操作过。在实习业余时间在慕课网上也下了很多大牛技术的视频,望能坚持下去。

实习即将结束,希望自己不忘初心,砥砺前行,前面依旧是一片天空。