什么全栈工程师?_什么是全栈工程师

全栈工程师:能处理数据库、服务器、系统工程、客户端所有工作的工程师。根据项目的不同,客户可能需要移动堆栈、Web堆栈或本机应用程序堆栈。

完整堆栈:表示完成一个项目所需的一组技术。要从能力和思维方式两个方面来判断一个人是不是合格的全栈工程师。简单来说,全栈工程师就是能够独立完成一个产品的人。

1、Web开发流程

大中型互联网公司产品R&D流水线:产品设计-交互设计-视觉设计-前端开发、后台开发-测试-发布。

产品经理:产品经理其实就是从根本上负责一个产品的经理。他平时的工作包括做产品规划,协调多方资源,控制产品方向和质量细节等等。有时候,他从零开始规划一个新产品,更多的时候,他是在优化一个现有产品的一部分。总之,产品经理在流水线上起着非常重要的作用,从策划到跟进再到发布。

用户研究员:用户研究员的工作是研究用户行为。他有时候会从宏观角度分析数据,有时候会从微观角度分解用户场景,有时候会召集一些用户进行访谈或者观察用户对产品的使用情况。从输出来看,用户研究人员一般会向产品经理和交互设计师输出用户研究报告,作为产品设计的目标参考。

交互设计师:交互设计师通常简称为“交互”。他和视觉设计师最大的区别是交互设计师更注重如何优化用户界面的信息分发和操作流程。交互设计师的输出一般是描述用户与网站“交互”过程的流程图,以及描述页面信息结构的线框。输出线框将被交付给视觉设计师。

视觉设计师:在一家细分交互设计师和视觉设计师的大公司,视觉设计师根据交互设计师输出的线框做一些修图和设计,然后将最终的产品视觉稿交付给前端工程师。在一些不细分交互设计师和视觉设计师的小公司,他们统称为“设计师”,职责是设计整个用户界面。

前端工程师:产品视觉稿经产品经理和交互设计师确认后,交给前端工程师,由前端工程师制作页面,实现视觉稿和交互功能。从题目的变化可以看出,此时编码才真正开始。前端工程师需要非常熟悉HTML、CSS和JavaScript,以及性能、语义、多浏览器兼容性、SEO、自动化工具等方面的丰富知识。

后台工程师:使用服务器编程语言开发服务器功能。在编程语言的选择上,很多公司会出于对现有团队成员的知识储备、程序员的供给或者语言性能的考虑而选择。在这方面,后台语言的选择相对自由,不像前端工程师为了页面兼容,不得不使用HTML和CSS。如果你关注一下各大公司的招聘信息,就会明白不同的公司使用的后台语言是不一样的,比如传统的C#和C,Java,PHP,或者新潮的RoR和Python。小公司的后台工程师除了功能开发,可能还要负责服务器的配置和调试,数据库的配置和管理。在大公司,这些工作会下放给后台工程师、运维工程师、数据库管理员(DBA)等岗位。

运维工程师:运维工程师是和服务器打交道的人,他会关注服务器的性能、压力、成本、安全性。

测试工程师:顾名思义,测试工程师保证产品的可用性,即使在小公司,这个岗位也是不可或缺的。

备注:甘特图经常用于项目管理。甘特图是一种直方图,显示项目、子项目、进度等与时间相关的系统的进度。

2、技术开发

说到全栈技术,就不得不提到一个具有代表性的全栈框架——MEAN,它是MongoDB-Express-Angular JS-node . JS的缩写,是一个从数据库、服务器到前端页面的完整技术栈。

MongoDB是一个面向文档的NoSQL类型的数据库。MongoDB颠覆了传统的基于表格的数据存储方式,采用类似JSON的文档结构来存储数据,因此在存储数据时可以更加灵活。

Express是Node.js框架,可以创建灵活的Web服务,比如单页应用、多页应用和混合应用。

AngularJS是由Google和开源社区共同维护的开源JavaScript框架,用于创建单页面应用。它的目标是使用模型-视图-控制器模式来标准化Web应用程序,并使开发和测试交互式单页面应用程序变得更加容易。

Node.js是运行在服务器端的JavaScript运行时环境,其底层是基于Chrome的JavaScript运行时环境——V8引擎。Node.js可以作为一种服务器端语言来创建快速且可扩展的应用程序。Node.js也可以在这台机器上运行,做一些本地操作,比如加快本地开发进程,或者实现一键发布。

MEAN可以说是传统灯方案的有力竞争者。因为从服务器到页面使用相同的语言(JavaScript)和相同的架构模式(MVC),一个擅长JavaScript的工程师可以兼顾前端和后端的开发,前端模板代码和后端模板代码可以复用。

3、越来越多的平台提供PaaS服务。

随着Web技术的发展和开源社区的积极努力,很多公司都提供了便宜方便的一站式服务,可以为独立开发者解决很多麻烦。

比如亚马逊提供的PaaS(平台即服务),可以省去创业公司的开发者架设和维护服务器的麻烦。

GitHub在2012年获得了1亿美元的融资,这也显示了市场对代码托管市场的信心。可以预计,未来可能会有越来越多的公司为开发者提供服务。未来,小公司也能以更低的价格获得世界一流的IT服务支持。毫无疑问,更多的IT服务将托管在第三方服务器上。

VPS(虚拟专用服务器)是一种将一台物理服务器虚拟化为多台虚拟专用服务器的服务。每个VPS可以分配独立的公有IP地址,运行独立的操作系统,拥有独立的磁盘空间、内存、CPU资源、进程和系统配置,模拟“独占”使用计算资源的体验。

4、专科多长?

我和一个行业专家讨论过全栈工程师的话题,他也不太认同全栈工程师的方向。在他看来,工程师应该有专门的技能和目标。新手如果急于做大,想做全,并不是什么都好。我理解他的担心。如果一个工程师没有扎实的基础(比如专业理论知识,对常见设计模式的理解,或者某个特定职业的基础知识),那么他所掌握的非专业技能越多,就越容易迷失。

所以我觉得全栈工程师首先要“专攻多长”。专业多久?工程师首先有一个专门的方向,在精通这个方向(高级工程师级别)后,会学习更多的知识,以此为切入点增加自己的长处。如果你对某一个方向还没有深入了解,就不要囫囵吞下其他领域的知识。

有些知识是需要时间积累的,不是快速阅读就能掌握的。术语“全栈工程师”可能会引起读者的误解。不要在流沙上建高台。“全栈”是一个长期积累的过程,是专门的工程师在不断解决问题的过程中积累知识和经验的能力,而不是一蹴而就的过程。

5、解决问题,不沉迷于技术

公司存在的意义就是解决问题。公司要解决用户的问题,员工要解决公司的问题。

公司的问题可能是降低成本、扩大用户群、增加营业额、优化业绩等等。不同的问题有不同的重点。如果投入同样的时间,有的项目可以让公司收入增加几百万,有的项目只能增加几万。

随着互联网领域的快速发展,问题的优先级总是在动态变化的,所以团队往往每半年或三个月就要回顾一下当前的情况,制定新的工作计划。如果新计划不是你的强项怎么办?你应该马上开始学习新技术。我说的就是这个,不是关注技术。

高级工程师可以选择上下游拓展自己的能力,承担更多的责任,给公司带来更大的收益,也给自己带来更大的成长空间。程序员在小公司主动承担更多责任,无论是自己还是公司都会相应成长。在自由职业市场,全栈工程师是最耀眼的明星。全栈工程师也是天生的企业家。