网站建设公司认为连一个简单的web栈模型:包含前端技术和后端技术。我们知道,前端工程师就是负责页面浏览器端编程的人,后端工程师就是负责服务器端编程的人,那么什么才是全栈工程师呢?
对于全栈工程师,业界并没有严格的定义,并不是说一定要一种都不能少地具备哪几项知识才能叫做全栈工程师。我倾向于认为,应该从能力和思维方式两方面,来判定一个人是否是一个合格的全栈工程师。国外是怎么定义全栈工程师的呢?在著名的问答网站Quora上有人提出了这个问题。一个获得了高票的回答是:全栈工程师是指,一个能处理数据库、服务器、系统工程和客户端的所有工作的工程师。根据项目的不同,客户需要的可能是移动栈、Web栈,或者原生应用程序栈。基本上,当客户需要一个全栈工程师的时候,客户需要的是一个全能的“大神”。简单来说,全栈工程师就是可以独立完成一个产品的人。当客户让他去做一些舒适区之外的工作时,他敢于迎难而上,并成功完成任务。我们每一个工程师,进入到公司和企业工作之后,就会有一个职位头衔。我的职位头衔是“UI工程师”,其他人的头衔可能是“交互设计师”“PHP开发工程师”,等等。“全栈工程师”不需要头衔。他既有全面的技术能力,也渴望跨界工作的状态。“全栈”好像是一个遥不可及的梦想,所以对于初次了解“全栈工程师”这个概念的工程师而言,有可能觉得“不可思议”或者抱着“这不可能”的排斥心理。但如果我们回头看看Web开发的历史,就知道“全栈”其实没那么难。Web开发流程有人曾开玩笑说,全栈工程师是资本家的阴谋,因为老板想雇一个人来做三个人的工作。其实在2000年第一次互联网泡沫破裂之前,那时候的Web工程师也许符合“全栈工程师”的简单定义:一人包揽整个网站的构建。
那时的Web工程师们所面临的挑战比今天小很多,他们可能只是制作一些静态的页面,不会面对如今富交互的Web应用程序。那时网站可能包含数据库和一些HTML表单,但仅此而已,甚至只需要将一些静态页发布到服务器上。在网站的前端无需视觉设计和交互设计,因为网站屈指可数,市场竞争很小,工程师仅用一些基本的HTML标签和闪亮的GIF图片就可以吸引网民的目光。同时,网站访问量都比较小,前端资源的体积也不大,无需关注服务器压力和CDN,网民对加载速度的容忍度比较高,也不需要过多考虑用户体验。但随着技术的发展、用户量的增加、客户端种类变多,每一个小小的细节都需要优化和考虑。在海量的访问量面前,也许改变一个按钮的位置和颜色就能影响上千万的订单。如今的互联网产品已不是以一己之力就可以完成的乐高积木了,Web开发需要以某种可控的方式来管理。于是,所有认真对待互联网产品的大公司都引入了流水线开发流程,在这条流水线上诞生了多个非常专业的职位。
产品经理:产品经理其实是对一个产品负根本责任的管理者。他通常的工作包括制订产品规划、协调多方资源、把控产品方向和质量细节,等等。有时候,他会从头策划一个新的产品,而更多的时候,他是在优化已有产品的一个部分。总之,在流水线中,产品经理需要从策划跟进到发布,是一个非常重要的角色。
用户研究员:用户研究员的工作是研究用户行为,有时候他会从宏观的角度分析数据,有时候也从微观的角度分解用户场景,有时候会召集一些用户专门来访谈,或者观察用户对产品的使用情况。从输出品的角度来说,用户研究员一般输出用户研究报告来交付给产品经理和交互设计师,作为产品设计的目标参考。
交互设计师:交互设计师常被简称为“交互”。他与视觉设计师最大的区别是,交互设计师更多着眼于如何
优化用户界面的信息分布和操作流程。交互设计师的输出品一般是描述用户与网站“交互”过程的流程图,以及描述页面信息结构的线框图。输出的线框图会交付给视觉设计师。
视觉设计师:在细分交互设计师和视觉设计师的大公司,视觉设计师根据交互设计师输出的线框图来做一些润色和设计,输出最终的产品视觉稿之后将视觉稿交付给前端工程师。在一些不细分交互设计师和视觉设计师的小公司,二者被统称为“设计师”,他们的职责就是负责整个用户界面的设计。
前端工程师:产品视觉稿在得到产品经理和交互设计师等多方确认之后,会交给前端工程师,由前端工程师制作页面,实现视觉稿以及交互功能。从头衔上的变化就可以看出,这时候才真正开始编码。前端工程师需要非常熟悉HTML、CSS和JavaScript,以及性能、语义化、多浏览器兼容、SEO、自动化工具等广泛的知识。
后台工程师:使用服务器编程语言,进行服务器功能的开发。在编程语言的选择上,很多公司都会出于团队已有成员的知识储备、程序员的供给量或者语言性能方面来进行选择。在这一方面,后台语言的选择是相对自由的一件事,不像前端工程师,为了页面兼容性,必须使用HTML和CSS。如果关注各大公司招聘信息的话,您就会了解,不同公司使用不同的后台语言,比如传统的C#和C++、Java、PHP,或者新潮的RoR和Python。小公司的后台工程师除了负责功能开发,可能还会负责服务器的配置和调试、数据库的配置和管理等工作。在大公司,这些工作会分别委派给后台工程师、运维工程师、数据库管理员(DBA)等岗位。
运维工程师:运维工程师是跟服务器打交道的人,他会关注服务器的性能、压力、成本和安全等信息。测试工程师:顾名思义,测试工程师保证产品的可用性,即使在小公司,这一职位也是不可或缺的。流水线的优势由于有了流水线,其中每个职位的可用工作时间都会作为“资源”来管理,因此需要一位项目经理来把控项项目进度,并对人力资源进行调控。比如一个项目立项时,就要预约好这个周期版本需要实现哪些优先级较高的特性,而把优先级不那么高的特性推迟。对于确定在这一周期要实现的特性,就要安排本周进行设计、下周完成开发、下下周进行测试等。在项目管理中,经常会用到甘特图。甘特图(GanttChart)是柱状图的一种,显示项目、子项目、进度以及其他与时间相关的系统的进展情况。流水线在大公司的任何一个严谨的大型项目里都是必不可少的,因为无论是Web产品还是App产品,它的复杂性都已经超出了单个工程师可以控制的程度。通过把复杂度分解到各个组件,每一个组件就可以进行很好的质量控制。
用于项目管理的甘特图。Web页面的生成和传递需要经历复杂的过程,因此容错能力就是首当其冲要考虑的问题。数据从位于深圳某个机房里的服务器传输到用户手机浏览器页面上进行运算和渲染,这个过程中的每个环节都可能出错,所以每一步都要做好容错处理。如果服务器出现错误,是否能在30秒内切换到备用机?后台数据异常时返回什么结果给前端,等等。Web页面可以在无数种设备上显示。兼容性在此时成为了前端工程师需要考虑的一个重要问题。不同的用户在不同手机上浏览页面,显示的方法会有些许不同,甚至要考虑到如果浏览器不支持JavaScript,则需要给出特定的提示。模块化的Web开发流程在很大程度上提高了服务的可靠性和可用性,让我们对每一个环节都能单独进行测试。这让大型Web开发真正变得可管理、可控制、质量可评估。基于以上种种如果你已经掌握了上述技能,那么,你就是一个
网站建设公司里面的全栈高手了。好了本文关于“一个全栈建站工程师需要掌握那些?”的建站知识就分享到这里,谢谢关注,博纳网络编辑整理。