程序人生前端后端全栈工程师,分别是什么?又有什么区别?

Posted 别出BUG求求了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序人生前端后端全栈工程师,分别是什么?又有什么区别?相关的知识,希望对你有一定的参考价值。

一、前端开发

1. 开发网页上的内容展示和与用户的交互。

  • 内容展示:网页上看到的图片、文字、视频、数字等信息
  • 用户交互:用户在网页上通过点击按钮、输入文字等动作,对网站提供数据输入,然后前端对用户的输入进行响应,比如更新页面上的内容——举个更具体的例子,就是点赞后、页面对你的点赞动作做出响应就是在后台数据库把点赞量+1并在页面上显示点赞+1后的点赞量;

2. 基础技术:html控制页面内容、CSS视觉效果、javascript用户交互

  • HTML——超文本标记语言,由众多标签组合而成
  • CSS——用来指定每个HTML标签以什么样的外观和风格展示(长宽、位置、颜色、居中/分散、字体、显示属性等等)
  • JAVASCRIPT——网页与用户交互、与后端交互,真正部分的编程

3. 但是写程序的时候,大家都不会重复造轮子,而是调用现成的library来实现一些常见功能、让开发更加高效。对于前端Javascript而言,React、Vue是目前比较流行的library

  • React:实现与用户的交互逻辑和事件响应,页面上几乎全部的HTML代码都可以通过React来生成(这种在浏览器端生成HTML代码进行渲染的方式叫做Client-side Rendering,与之相反的是Server-side Rendering由网站的前端服务器生成好后,再发给浏览器)
  • 前端服务器:其编程逻辑可以通过任何编程语言实现,比如java、JavaScript、Python、php甚至是Scheme
  • Vue:国内用的比较多,B站就是

二、后端开发

相当一部分的后端开发工作就是开发数据访问服务,使得前端可以调用后端服务,对数据进行增、删、查、改(CRUD——Create Read Update Delete)

比如在网站进行注册的时候,前端就会调用后端,把用户信息写入数据库。一个后端服务器是不局限于只被前端调用的,还可以被mobile app调用、被其他后端服务调用

前端往往需要通过调用后端服务来完成对用户请求的响应,后端服务需要通过查询数据库来完成对前端请求的响应。因此,前后端的共性就是,通过调用一个比自己更靠后的服务来对前方的客户请求进行响应

  • 后端工程师工作范畴:设计后端服务的API、设计后端服务的架构图、设计后端服务的数据库、写代码实现后端服务的业务逻辑。
  • 同时需要保证设计后端服务的highly available——就是访问量很大的时候也不会宕机、并对客户请求的响应时间短、吞吐量高,单位时间内能够处理的请求数量多。如果要从头搭建一个新的后端服务,那么整个过程需要进行大量的系统设计,也就是后端工程师面试时会考到的System Design,做System Design非常考察平时的知识积累

后端工程师的技术和工具

  • 后端服务器:后端服务器和前端服务器一样,也可以由任何一种编程语言实现,只要能把正确的数据返回给调用者即可,主流的编程语言也有各自流行的Web Framework,也就是现成的轮子,在框架上快速实现一个后端服务。
  • 基于Java的Spring Boot和Dropwizard
  • 基于Javascript的Express
  • 基于Python的Flask
  • gRPC远程调用框架支持用Java、Python、C++和Go等语言来开发

一个公司没有你很熟悉的语言和框架,照样能投,对公司来说会其中一部分就够了,很多东西都是再工作里面学的。而且两周内上手一门新的编程语言是一名职业程序员的基本素养。

  • 数据库:除了开发后维护后端服务器,后端工程师还会花大量时间在数据库上,不管是为你的后端服务创建数据库,还是为数据库的性能调优,或者是分析里面的数据,目前最常用的数据库就是关系型数据库。比如在工业界广泛被使用的mysql和PostgreSQL

如何设计一个关系型数据库,如何使用SQL query来访问数据,以及如何依靠index来为数据查询加速,可以在数据库课程中学习。

非关系型数据库No-SQL也开始用的越来越多:比如基于Json文档的MongoDB、比如基于LSM tree的LevelDB。这些数据库在某些特定的情况下可能会比关系型数据库更适合业务需求

数据库往往是一个后端系统的性能瓶颈,也就是最慢的一环。因此后端工程师在进行系统设计时会用很多办法来使得后端的性能、比如响应时间,尽量少被数据库拖后腿。比如使用MemCached这种缓存系统来加速后端读取数据的速度,比如用Kafka把数据写入异步化,提升后端写入数据的性能

  • 后端开发的其他重要环节,比如性能监视、DevOps

三、全栈开发

自己构建和部署一个完整的、可以工作的Web App。独立编写前后端代码、配置服务器、还能设计数据库

无论那种岗位,都要考算法,因此都要刷题

四、Bonus

这里其实要说明一下,即使是全栈,也最好要有一门拿得出手的比较深入的具体方向,不然只能沦为api工程师。

国内的很多程序员,其实也会一些跨端的技术,比如说,我是 ios 开发方向的,也认识不少 iOS开发,会 Go、Cpp、JS,与 iOS 开发密切相关的 ruby其实也是很多iOS开发回去学的。

但是写了一段时间,比如说三五年,就需要找到一个自己去深入研究的方向了,因为人的精力是有限的。这个时候,就需要去权衡自己的方向了,没有必要过于求全。就比如说我自己,是一个 iOS开发,在前端技术栈上走的是,React->ReactNative->Rax路线,Flutter也会一点;在后端技术栈上走的是Node.js以及Flask。但是我要是面试,还是会自称 iOS开发。

主要问题还是个人的精力有限,比如说我在iOS的方向上,主要是研究APM,这里面就牵扯到了很多很深入的知识,网络的相关知识要看,不然网络优化就搞不明白;操作系统的知识要看,不然OOM的问题就搞不明吧;甚至还要了解一些硬件方向的知识,不然就搞不明白如何节约电量。

如果你是在校生,学好四大基石很重要:os 计算机组成原理 数据结构与算法,计算机网络。如果你是急于转行找工作的,时间紧迫的,你那学好一门语言基础,掌握一门框架,掌握常用算法,选择一门数据库。其他的不要贪,时间不允许,以后你可以工作中逐渐深入。

老人对萌新的建议:不要一上来就想着憋个大,要整个多么牛逼的东西。如果你真的很牛逼,那这句话你可以略过。 二.技术只是解决问题的工具,你可以深耕技术,但职场发展光技术是不够的。注意目前有些卖课的,打着什么级别的课程,不要管,你学好自己的。三.碰到起着焦虑的标题,比如这个你不掌握就被淘汰,面试官看不起的,建议直接拉黑屏蔽。卖焦虑,是目前卖课商家捆绑销售的常规手段。

最后,希望你们都从编程中一直找到自己的快乐

前端后端全栈有什么区别?

随着信息产业的迅猛发展,IT行业人才需求量也在逐年扩大。
据国内权威数据统计,未来五年,我国信息化人才总需求量高达1500万—2000万人。其中“软件开发”、“网络工程”等人才的缺口最为突出。以软件开发为例,我国软件人才需求以每年递增20%的速度增长,每年新增需求近百万。
这也是目前很多非科班出身的同学为了搭上互联网的快车开始学习编程的原因,但是刚开始应该选择哪个学科,却给很多同学带来了很大困扰。
在和同学的交流当中发现,大家对于“前端、后端、全栈”的概念还非常模糊,俗话说“磨刀不误砍柴工”,了解了互联网的工种定义、职能及技能需求,才能使你能更高效,更有计划的学习,从而迈向互联网经营的目标。
一、前端方向
网站的“前端”是与用户直接交互的部分,包括你在浏览网页时接触的所有视觉内容–从字体到颜色,以及下拉菜单和侧边栏。这些视觉内容,都是由浏览器解析、处理、渲染相关HTML、CSS、Javascript文件后呈现而来。
技能与工具
前端开发,就是要创造上面提到的网站面向用户的部分背后的代码,并通过建立框架,构建沉浸性的用户体验。为了实现这个目标,开发需要熟练运用下列语言、框架、工具库:
三大语言:HTML,CSS,和Javascript;
此外,掌握jQuery和LESS等工具库也很重要,它们能帮助开发者以更高效的方式编码;
很多前端开发岗也要求Ajax方法的使用经验,它可以帮助你使用Javascript在后台从服务器拉取数据,协助实现页面的动态加载。
打个比方,前端开发者的工作专注于“房屋”装修,而盖房子的工作由后端开发者负责。
通过一些专门的工具,前端开发者与设计师/用户体验分析师密切合作,帮助构建原型或是线框图,参与产品开发到发布的全过程。
一些前端开发者甚至能准确定位影响用户体验的特定问题,并给出建议或是代码解决方案,对产品设计带来积极影响。
在专业能力外,与其它团队协作,以理解特定目标、需求、机遇,以及高效的执行力也非常重要。
这听起来工作内容很多,但也回报丰厚。“我是一名技术人员,也是一名设计者,在数字平台上使用标记语言和代码修改视觉元素并与之互动是很自然而有趣的体验,”。有八年前端开发经验的Mikey Ilagan说:“这让我能够直接影响到用户体验,操纵应用和网站里用户所见并直接与之交互的元素,这非常棒!”。
总之,前端开发者要为后端开发者搭建的“房屋”进行内部设计和装修工作。装潢风格由房屋所有者指定。Apptix的产品市场负责人Greg Matranga表示:“前端开发者有时更容易为他们的工作感到振奋,因为他们有更广阔的空间发挥自己的创造力。”

二、后端方向

是什么给网站前端提供支持?数据存放在哪里?这就涉及后端内容了。网站后端包括服务器、应用还有数据库。后端开发者构建并维护这些组件,为网站提供多方面支持。

技能与工具

为了让服务器、应用、数据库能够彼此交互,后端工程师需要具有如下技能:

用于应用构建的服务器端语言:Python, Java,PHP, Ruby, .Net等;

数据相关工具:MySQL, Oracle, SQL Server等;

PHP框架:Zend, Symfony, CakePHP等;

版本控制工具:SVN, CVS , Git等;

还要熟练使用Linux作为开发和部署环境。

后端开发者使用这些工具编写干净、可移植、具有良好文档支持的代码来创建或更新Web应用。但在写代码之前,他们需要与客户沟通,了解其实际需求并转化为技术目标,制定最有效且精简的方案来进行实现。

“我热爱后端开发因为我喜欢操纵数据”,资深后端开发者就职于Wildbit的JP Toto说。“现在共有和私有API已变成移动设备、网站以及其它互联系统交换数据的必备通道。创建对大家有用的API是我工作里非常鼓舞人心的部分”。

三、全栈

有时前后端之间并没有明确的界限,“前端开发者通常需要额外学习后端技巧,反之亦然,尤其在特定市场条件下”,Matranga说:“开发者需要跨领域知识,有时甚至需要成为全才。”

全栈工程师,最初是6年多以前由Facebook带动的概念。全栈的核心,是指这批开发者能够承担包括前端、后端在内的所有功能开发任务,他们拥有一个技能全家桶。

“能够同时承担服务器端和客户端工作会为你带来更多机会,”Grovo的全栈工程师Federico Ulfo说 “当然这也就意味着更多的挑战。以厨艺作类比,掌握烹饪和烘焙都需要时间与经验积累,同时掌握两者要花费更多精力。照着菜谱做谁都可以,我此处所说的是做出真正美味东西的能力。”

技能与工具

全栈开发者也通常在服务器端进行编程工作,但他们熟练前端语言,能够操纵网站面向用户的部分。基本上可以形容他们是百事通。
具体工具依项目和客户需求而定,全栈开发者需要对Web架构的每一个层次都有足够的了解:搭建和配置Linux服务器,编写服务器端API,利用客户端Javascript代码驱动应用,将设计层面的东西转化到实际的CSS代码。

掌握并使用大量工具的同时,全栈开发者需要敏捷地分配服务器端和客户端任务,提供解决方案并对比不同方案的优劣。

看了这些,是不是对于未来的选择有更清晰的认识了呢?

以上是关于程序人生前端后端全栈工程师,分别是什么?又有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

前端后端全栈有什么区别?

前端后端全栈有什么区别?

什么是后端开发与全栈工程师

前端学完vue学啥

前端后端和全栈到底不该学什么

先成为全栈工程师?