科技时代,哪个行业工资最高?待遇最好?当然是互联网IT行业。
2017年中国软件产业规模已超过5万亿元,软件和信息技术服务业占我国电子信息产业的比重将超过30%,软件产业能力显著提升。
但据国内权威数据统计,未来五年,我国信息化人才总需求量高达1500万—2000万人。其中“软件开发”、“网络工程”等人才的缺口最为突出。以软件开发为例,我国软件人才需求以每年递增20%的速度增长,每年新增需求近百万。
这也是目前很多非科班出身的同学为了搭上互联网的快车开始学习编程的原因,但是刚开始应该选择哪个学科,却给很多同学带来了很大困扰。
然而,大家对于“前端、后端、全栈”的概念还非常模糊,今天小编就带大家去了解什么是前端、后端以及全栈。
一、前端方向
网站的“前端”是与用户直接交互的部分,包括你在浏览网页时接触的所有视觉内容--从字体到颜色,以及下拉菜单和侧边栏。这些视觉内容,都是由浏览器解析、处理、渲染相关 HTML、CSS、Javascript 文件后呈现而来。
技能与工具
前端开发,就是要创造上面提到的网站面向用户的部分背后的代码,并通过建立框架,构建沉浸性的用户体验。为了实现这个目标,开发需要熟练运用下列语言、框架、工具库:
三大语言: HTML,CSS,和 Javascript;
此外,掌握 jQuery 和 LESS 等工具库也很重要,它们能帮助开发者以更高效的方式编码;
很多前端开发岗也要求 Ajax 方法的使用经验,它可以帮助你使用 Javascript 在后台从服务器拉取数据,协助实现页面的动态加载。
工程师的职责
-为网站上提供的产品和服务实现一流的Web界面,优化代码并保持良好兼容性。
-Web前端表现层及与前后端交互的架构设计和开发。
-JavaScript程序模块开发,通用类库、框架编写。
-利用各种Web技术模拟开发产品原型。
-配合后台开发人员实现产品界面和功能。
-Web新技术调研和资讯整理。
-精通HTML/XHTML、CSS,熟悉页面架构和布局,对Web标准和标签语义化有深入理解。
-精通Ajax、JavaScript(或者ActionScript)、DOM等前端技术,掌握面向对象编程思想。
-熟悉一种以上后台开发语言(如PHP/Java或C/C++/.NET)以及一种数据库(如MySQL/Oracle),有Linux系统操作。
web前端开发工程师需要长期的web开发经验,例如:
-对Web技术创新及丰富互联网应用开发(Rich Internet Applications)有浓厚兴趣。
-对用户体验、交互操作流程、及用户需求有深入理解。
二、后端方向
是什么给网站前端提供支持?数据存放在哪里?这就涉及后端内容了。网站后端包括服务器、应用还有数据库。后端开发者构建并维护这些组件,为网站提供多方面支持。
技能与工具
为了让服务器、应用、数据库能够彼此交互,后端工程师需要具有如下技能:
用于应用构建的服务器端语言: PHP, Ruby, Python, Java, .Net 等;
数据相关工具: MySQL, Oracle, SQL Server 等;
PHP框架: Zend, Symfony, CakePHP等;
版本控制工具:SVN, CVS , Git 等;
还要熟练使用 Linux 作为开发和部署环境。
工程师的职责
在Web开发世界中,大多数后端开发人员从事于构建他们正在工作的应用程序背后的实际逻辑。
通常,前端开发人员构建用户界面,而后端开发人员编写代码,使其工作。
例如,前端开发人员在应用程序中创建一个界面,上面有一个按钮,按下按钮来获取客户的数据。
后端开发人员写可使得按钮工作的代码,通过指出从数据库中提取哪些数据并将其传回到前端(并最终显示在那里)。
后端开发人员也可能会大量参与系统架构,决定如何组织系统的逻辑,以便能够正常维护和运行。
他可能会参与构建框架或系统架构,以便于更容易编写程序。后端开发人员比前端开发人员花费更多的时间在实现算法和解决问题上。
三、全栈
有时前后端之间并没有明确的界限,“前端开发者通常需要额外学习后端技巧,反之亦然,尤其在特定市场条件下”,Matranga 说:“开发者需要跨领域知识,有时甚至需要成为全才。”
全栈工程师,最初是6年多以前由 Facebook 带动的概念。全栈的核心,是指这批开发者能够承担包括前端、后端在内的所有功能开发任务,他们拥有一个技能全家桶。
“能够同时承担服务器端和客户端工作会为你带来更多机会,” Grovo 的全栈工程师 Federico Ulfo 说 “当然这也就意味着更多的挑战。以厨艺作类比,掌握烹饪和烘焙都需要时间与经验积累,同时掌握两者要花费更多精力。照着菜谱做谁都可以,我此处所说的是做出真正美味东西的能力。”
技能与工具
-通过终端连接到非图形化界面环境的远程服务器
-基本的 shell 脚本编程
-管理服务器的用户和用户组
-管理服务器程序比如 Apache 和 Nginx,以便其服务于应用程序
-管理防火墙和权限
-安装新软件,更新软件版本
工程师的职责
懂得如何通过 Docker 或虚拟机比如 Vagrant 来创建良好、健康、隔离的开发环境。
熟谙版本控制系统,才能够可靠地生成可共享的、协作的代码库及其备份, 并且随时间流逝跟踪其变化。
除了实际管理的或虚拟化的服务器,开发者可能还需要知道云 – 托管平台,像 Heroku、Google Clould、Azure、AWS 等。
看了这些,是不是对于选择职业有了更清晰的认识了呢?