前端协作流程

问题:我写了个一千行的打飞机游戏在简历里,貌似没用?

花了一周时间读完了这本书,总体来说收获还是不小的,个人认为,这本书最重要的还是作者介绍的全栈思维,是思想意识层面的东西。

作者的很多观点与我自身的价值观是一致的,读完本书,其实知识层面对我的帮助并不是很大,首先作者介绍的比较广泛,总共两百多页的书,知识面谈的宽泛了,必然不会很详尽;其次,作者谈到的这些知识点,其实之前都有过或多或少的接触,并不算特别新鲜了,尤其是在发展变化速度堪比做火箭的前端领域。这本书对我最大的影响,还是通过了解作者的思考方式、做事风格,印证了我之前自己的思考方式,并帮助我将思路整理的更加清晰;

下面还是对该书的每一章节进行下总结;

问答

前面的话

  在拿到交互原型或视觉稿以后,前端工程师要能够灵活应用前端知识技能,完成相应的功能。在实际的企业环境中,不只是有前端工程师,更多的场景和项目是通过团队多人协作完成的。作为前端工程师如何与团队中其他角色进行协作呢?本文将详细介绍前端工程师协作流程

 

今年大四,距离7月来阿里实习也已经两个月了,经过三轮面试,实习转正终于算是尘埃落定下来了。其实每一次面试都是一个很好的促进自己成长的机会,能够带给自己一些启发和发现自己的问题。这里把转正面试中的一些收获进行总结,纪念这个我人生中非常重要的节点。

回答:我在找程序员的时候啊,前端开发的话,主要看你,能不能去完成相关一些东西?我们现在在招前端的话,基本上要包含的是三段,也就是PC端和移动端,那么在PC端和移动端的过程当中的话,你要能够去完成原型的制作,就说,你在这个过程当中你的原型制作的越多,逻辑清楚,那么在这个时候,录取你的几率会越高。

什么是全栈工程师

对于研发工程师来说,就是在项目开发中所用到的技能,针对不同的项目,所用到的也是不尽相同的,例如移动端,Web端,PC客户端等,所使用的技能栈就会有所区别,移动端又分为原生应用开发(Android
&& iOS)和基于WebView的Web
App,当然还有Hybrid,这些又需要不同的技能栈来提供支持;

我们一般说的全栈,一般也是指在某个开发领域,能够独立完成整个项目的设计,研发,部署,当然,如果您能完全Hold住多个开发领域,能跨多域解决问题,那在大多数公司,已经可以封神了;

例如Web栈,对于之前来说,可能掌握数据库(关系型或NoSQL),服务器(Linux),一或多种服务端编程语言(Java,Python,C++,PHP等),再掌握前端的一系列开发语言(HTML,CSS,JS等),那就可以自己做出一个独立的Web应用了,对于之前来说,我觉得也可以称作全栈了;但对现在来说,个人认为,这些知识还真的不够,全栈工程师应该有对整个项目的整体把控能力,技术架构设计能力,以及如今快速变化的前端工程化能力等;

1.前端是做什么的?互联网职位有哪些常见的简称(如PM…)?

前端开发是从网页制作演变而来的,前端工程师使用 HTML、CSS、JavaScript
等专业技能和工具将产品UI设计稿实现成网站产品,涵盖用户PC端、移动端网页,处理视觉和交互问题。从广义上来讲,所有用户终端产品视觉和交互设计有关的部分,都是前端工程师的专业领域。

Web系统

  在介绍协作流程之前,首先简单地了解Web系统的结构

  从宏观上来说,Web系统是部署在服务器上用于为web客户端提供服务的系统。不同的Web客户端根据不同的需求,发送请求到服务器上部署的Web系统上。Web系统根据需求,返回相应的结果,最后,通过Web客户端展示给用户

图片 1

  Web系统在服务器上的组织结构一般为MVC架构,MVC分别代表数据层、视图层和控制层

图片 2

  数据层(Model):封装数据管理操作(如数据的CRUD)

  视图层(View):展示数据模型,提供人机交互

  控制层(Controller):处理用户请求,委托数据层进行数据相关操作,并选择合适的视图层返回给用户

  当Web客户端向服务器发起请求时,服务器的Web系统要做如下处理

  1、客户端发送请求,服务器Web系统的控制层接受到请求,并进行解析

  2、控制层请求数据层进行数据的相关操作

  3、数据层根据需求筛选出相关的数据模型,并返回给控制层

  4、控制层将收集的数据模型转交给合适的视图层进行模板整合

  5、视图层将数据模型和模板整合之后生成页面代码,返回给控制层

  6、控制层将结果返回给Web客户端进行展示

图片 3

  在Web系统的各个分层结构中,与前端密切相关的是视图层。接下来,从技术栈角度,来介绍视图层的内容

  下面是用于完成视图层需要掌握的知识技能图,每个知识技能都具备了完成视图层某一部分的能力

图片 4

photoshop:切图
html+css:页面制作
javascript:前端交互逻辑
template:结构与数据分离和整合
java/php/Node:后端业务逻辑

  前端工程师职位出现之前,是一个美工的职位,需要使用photoshop、html和CSS来进行切图和页面制作

图片 5

  随着ajax的出现,产品的用户体验有了更高的要求,web系统也变得越来越复杂,这种协作方式的弊端就越来越明显

  首先,从工作方式来看,美工输出的静态页面交给后端之后,转换成模板。这样,一个相同的内容以两种不同的形式存在,并且由两个技能差距较大的角色维护,这样就为复杂系统的后期维护带来了隐患

  其次,为了提升用户的体验,系统的人机交互变得越来越复杂。因此,前端所需的专业化技能也越来越高,这时再由后端来兼做前端的工作显然已经无法满足需求

  最后,Web产品的一个重要特性就是更新非常快。因此,需要分工协作方式快速响应需求的变更。而在这种分工模式下,一个需求必须由视觉和后端共同来完成,很大程序降低了需求的响应速度

  因此,在整个技术环境的推动和项目实际需求的驱动下,前端工程师的职位就出现了。有了前端工程师之后,分工模式发生了变化

图片 6

  视觉工程师完成视觉稿,输出视觉稿给前端;后端工程师完成后端的主要业务逻辑,给前端提供数据和接口;剩下的工作都由前端工程师来完成,包括切图、页面制作、前端交互逻辑、模板转换等工作

  在这种模式下,各个角色输出的内容完整,且相互独立,互相之间没有耦合性,各个角色专注的也是自己领域内的技能,产品的各个部分都可以做到极致,也更容易产出高质量的产品

  随着Web技术的进一步发展,如Nodejs的出现,使得javascript脚本也可以运行在服务器上。既然控制层是为视图层服务的,控制层的业务逻辑很大程度也取决于视图层的交互需求。这样,控制层也可以由前端工程师来负责。这样的话,前端也会涉及到部分后端相关的业务逻辑

  这样使前端工程师可以在后期转换成全栈工程师(Fullstack
Developer)。当然,这种分工模式还处于探索实践的阶段

 

部门主管面试

第一轮面试是由部门主管师兄A面的,主要是讲自己在实习期间做的事情,自己的成长,收获,变化等,形式是PPT展示+提问答辩。

我的PPT大概准备了两天多,主要包括下面几个方面:

  • 自我介绍(基本信息,在学校做过的一些事情,技术探索历程);

  • 实习工作总结(来阿里实习参与的几个项目,所遇到的问题,自己是如何解决的);

  • 学习与成长(实习期间读的书,发的ATA,以及自己平时养成的学习习惯如:坚持写技术博客,读书,关注开源社区,通过代码注解来沉淀学习成果,构建知识思维网络图等);

  • 改变与反思(前端工程化与项目复杂度,团队协同合作,技术敏感度与快速学习,用心工作与责任感);

  • 职业规划(择业初心:为什么选择前端,职业目标与实现方法);

在讲PPT的时候师兄A问了一些问题,如:做过的项目中最复杂的逻辑是哪块,遇到的复杂问题是如何解决的,有没有用到一些高级的前端技巧等。

讲完之后,师兄A又给了我一些建议,一方面是我的学习能力还不错,但是项目经验这块还比较缺乏,需要通过项目工作多多积累;另一方面是要在一些技术上不断深入研究,做到某几个方面在集团乃至业界处于顶尖水平,当然这需要我不断的努力和长时间的积累;再就是跟我说我选择前端是因为比较喜欢前端这点很不错,希望能保持对前端的兴趣和热情,不断进步

师兄A的这些建议对我来说还是很有指导价值的,后续的工作学习过程中会重视,努力,加强。