全栈开发工程师之路
经常有人产生疑问:
1、没有基础可以学IT吗?
2、小学毕业可以学计算机吗?
3、学计算机要先学什么?
4、JAVA前景好么?
5、哪种开发语言最好学?
6、有没有推荐的IT培训机构?
......
针对以上问题,本人以一个开发者的视角,介绍开发一套软件需要掌握哪些知识,以及这些知识在软件中所起的作用。本文试图以一个项目的形式来拆解基本要素,如果你不知道到底要学什么,很简单,只要学到其中一个基本单元并且精通,就可以在该领域崭露头角并拿到一份不错的薪水。当然,如果你对所有的基本单元都有涉猎,并且精通其中一项或几项,那你离CTO就不远了。
下面开始正文,全程高能,可先收藏再浏览,避免日后找不到!
大纲概要:
- 什么是全栈开发工程师
- 全栈工程师需要学习哪些语言
- 这些语言对应可以找哪些工作
- 全栈工程师的价值
- 软件开发的前景
- 什么是全栈开发工程师
全栈工程师是指掌握多种技能,胜任前端与后端,能利用多种技能独立完成产品的人。
通俗来说,就是你一个人完成一个项目,举例来说:给你资金,你给我建一栋房子。
可能有人会说,建房子需要泥工,水电工,油漆工,木工,搬运工等等。抱歉,全栈的话,是需要你充当所有这些角色,所有的事你一个人干。有人会惊讶,这怎么可能啊!天啊,这岂不是要累成狗,至少得累掉半条命!
你还别说,开发一个项目或软件,全栈工程师还真能干这样的事。
- 全栈工程师需要学习哪些语言
下面将一个软件拆分成基本单元,介绍完成这套软件需要哪些技能,就以头条为例吧!
这是创作者管理界面
这是用户浏览新闻的页面
以上两个页面,大家都应该熟悉吧,没有做头条号的至少应该熟悉新闻浏览的页面吧。
就单纯这些信息的展示,就需要学习HTML语言,来看一段代码:
<html><head><body><p>这里是示例</p></body></head></html>
看到了吧,就是上面这玩意,就能展示你看的新闻出来,来一段HTML的解释:
HTML称为 超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的 Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明 文字, 图形、 动画、 声音、 表格、 链接等。
英文翻译为:Hyper Text Markup Language
后续说到的语言自行百度吧。
这还不够啊,浏览新闻不能光看页面吧,你得点击进去啊,这些点击动作,又涉及到另外的语言:JavaScript,简称JS。
不知道你在浏览网页时候,鼠标点击的时候,是否看到页面上弹出一个窗口,那就是用js实现的效果,神奇么!
你看,js就是这么神奇。
然后,你看网页上那些字体,是不是有的粗,有的细,有的五颜六色的,不是单纯的白景黑字吧,这就是css了。
说白了,CSS就是给网页化妆用的,不然黑白相间的页面看起来很吓人的。
上图中基本都是HTML、JS、CSS这三种语言混合的代码。
说了这么多,HTML、JS、CSS已经三种语言了是吧,这还只是基础哦!
但是你要单纯的用JS、CSS去做交互,那么太复杂了,程序猿哥哥要累死几次了,这就要用到以下两种技术了。
jQuery
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
Ajax
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态 网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
看到了吧,代码的世界是不是很神奇,掌握以上知识后,你才能成为一个合格的web工发工程师,或者叫做前端开发工程师。
话说,看到这里,不点赞的就不是好同志了吧!
看完上面的内容,你可以在网页上浏览,点击,仅此而已!但是你做不了下面的动作:
是的,你没看错,你还需要登录吧,但是上面的语言明显不能满足要求,这就需要后台开发语言:Java或PHP。
Java:跨平台语言,适合做大型后台,也可以做前端,全球安装量超过50亿台
PHP:后台专用语言,轻量级,应用广泛
这里以Java举例来说明前端到后台数据处理的流程
首先,你在页面输入用户名、密码后,输入的内容需要获取并传到后台去,后台接收后需要保存这组数据并从数据库查询这组数据是否存在,
- 存在,返回给前端一个参数,跳转到主页面
- 不存在,返回另一个参数,提示该用户不存在
不知道以上过程我说清楚没有,哎,听着好乱的样子,这其中用到哪些语言呢?
Java,处理后台逻辑
XML,一种用于标记电子文件使其具有结构性的 标记语言,项目中用到的配置文件一般为XML格式,比如你用户省、市、区三级联动列表,这个是固定不变的,可以放到XML文件中保存在项目中,以便读取
Servlet,动态脚本语言,生成动态 Web内容
JSP,可以理解成HTML代码中嵌入Java代码
EJB,企业级的JavaBean,可自行搜索用途
当然,写代码少不了用框架之类的,所以,著名的三大框架SSH要登场了:
有了它,写Java逻辑再也不用操心了,幸福来得也太突然了。
然而,在编码中,少不了要用到一些设计模式、代理、Iterator、Strategy、正则表达式,这些会使你的代码效率更高。
掌握以上内容,后台逻辑基本上就差不多搞定了,如果你想对局部代码进行单元测试,JUnit4是必须要掌握的。
如果你的项目涉及到工作流,那就还需要学习JBPM了,这里就不多赘述了。
刚才说过,接收到数据后,需要到数据库中查询是否存在,这里又要用到数据库了,所以数据库又得学吧。
MySql:应用广泛,轻量级,通俗易懂
SQL Server:中型数据库,一般用于中型项目开发
Oracle:大型数据库,在超大型项目中应用很常见,是很牛逼的一套软件技术
有多牛呢,这么说吧,前面的Java是SUN公司开发的,Oracle收购了SUN公司,自行脑补去吧!
如果数据量太大了,像微信这种量级的应用,就要用到大数据Hadoop了。
不过一般的项目用不到Hadoop,你可以选择不学。但是如今数据每天在海量生产,大数据也是今后的趋势,有时间学更好。
哎,写到这里,我感觉做程序猿真他么累,苦逼,关键上面说的只有一半,请容我先吐点血!
你在本地写完以上代码,设计好数据库,但是这些东西放在哪里呢,总不能放在开发者电脑中吧。就像建房子,你买了材料、水泥、沙子这些东西,你得找块地皮让这些东西组合起来,聚沙成塔吧。所以,你还要搞服务器。开发者的电脑也可以作为服务器,但是电脑作服务器,显然达不到要求,而且电脑要24小时开机,这种要求都达不到。
像这种在科技电影中看过吧,不过一般的小公司用不到实际的机房,购买云服务器就行了,像大公司才需要建这种机房。
当你有了服务器后,需要在服务器安装环境,这就需要用到另外一种技术:Linux
通俗点说,就是你需要在远程服务器上用代码指令配置环境,全代码,无操作界面,可想而知有多痛苦,估计很多人看了都晕吐了。
然后,当你有了逻辑代码,服务器也准备好了,那代码怎么跑到服务器上呢,不会自己飞过去吧,哈哈~
git:管理代码的仓库,将本地代码推送到服务器端
到此,一套完全的软件流程就出来了,让我们来梳理一下好不好,不然我脑子有点乱:
前端网页用HTML呈现,JS做交互,CSS化妆,JAVA做后台,然后JAVA的一帮小弟配合,XML,SSH,JSP,EJB,Servlet齐上阵,MySql存储数据,Linux做后勤保障,git连接后台与服务器。这样,前后端就连接起来了,流程就走完了。
可是,全栈开发工程师就这样结束了吗?NO,NO,NO!
上面只是说了PC端啊,现在是移动的天下,用户不会天天抱着电脑看头条新闻吧,别人都是在手机上看的好不好,Android与IOS要压轴出场了,大家鼓掌欢迎!
前面说到的JAVA,就是安卓开发的主流语言,不过现在用Kotlin开发,两者熟练一种就好!
IOS主流的开发语言是Object-C,Swift,两者取其一就行。
是吧,移动端你又要学这两种语言,而且内容也不少~
当然,如果你的软件中涉及到音频、视频、直播、游戏之类的,这又涉及到很多框架与引擎了。
当你学完了以上内容,那么恭喜你,全栈开发工程师顺利毕业!但是好多人都没毕业!
写到这里,我头脑有点供能不足,容我下楼去吃点西瓜解解闷,缓解一下,毕竟夏天太热了!
- 这些语言对应可以找哪些工作
Java:后台开发,JavaWeb开发,安卓开发,游戏开发,网站开发,Java EE开发
JavaScript:Web开发,网站开发,小程序开发,微信公众号开发
PHP:后台开发,微信开发,服务器开发
Oracle:数据库开发,服务务器开发,大数据开发
Android:安卓手机软件开发
IOS:苹果手机软件开发
以上只列举了部分,具体可以去招聘网站查看岗位需求,只要技术过硬,岗位排队任你挑!
- 全栈工程师的价值
全局性思维
现代项目的开发,需要掌握多种技术。互联网项目,需要用到后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、restFul API设计和OAuth等等,比较前卫的项目,还会用到Single Page Application、Web Socket、HTML5/CSS3这些技术以及像第三方开发像微信公众号微博应用等等。
Web前端也远远不是从前的切个图用个jQuery上个AJAX兼容各种浏览器那么简单了。现代的Web前端,你需要用到模块化开发、多屏兼容、MVC,各种复杂的交互与优化,甚至你需要用到Node.js来协助前端的开发。
所以说一个现代化的项目,是一个非常复杂的构成,我们需要一个人来掌控全局,他不需要是各种技术的资深专家,但他需要熟悉到各种技术。对于一个团队特别是互联网企业来说,有一个全局性思维的人非常非常重要。
沟通成本
项目越大,沟通成本越高,做过项目管理的都知道,项目中的人力是1+1<2的,人越多效率越低。因为沟通是需要成本的,不同技术的人各说各话,前端和后端是一定会掐架的。每个人都会为自己的利益而战,毫不为己的人是不存在的。
而全栈工程师的沟通成本几乎为零,因为各种技术都懂,胸有成竹,自己就全做了。即使是在团队协作中,与不同技术人员的沟通也会容易得多,让一个后端和一个前端去沟通,那完全是鸡同鸭讲,更不用说设计师与后端了。但如果有一个人懂产品懂设计懂前端懂后端,那沟通的结果显然不一样,因为他们讲的,彼此都能听得懂。
创业公司
对于创业公司来说,全栈工程师的价值是非常大的,创业公司不可能像大公司一样,各方面的人才都有。所以需要一个多面手,各种活都能一肩挑,独挡多面的万金油。对于创业公司,不可能说DBA前端后端客户端各种人才全都备齐了,很多工作请人又不饱和,不请人又没法做,外包又不放心质量,所以全栈工程师是省钱的一妙招。虽然说全栈工程师工资会比一般的工程师高很多,但综合下来,成本会低很多。
偷偷告诉你,全栈工程师离架构师仅一步之遥,几乎唾手可得!
- 软件开发的前景
1、市场需求大
目前软件工程专业毕业生主要在各大软件公司,企事业单位,高等学校,各大研究所,国防等重要部门从事软件设计开发,应用于研究工作。有数据表明,我国软件出口规模达到215亿元,软件从业人员达到72万人。
软件类人才的需求到底有多大?按教育部和商业部的规划,近5年内需要培养120万名软件与外包人才,其中需新增培养100万名软件领域大学生,巨大的软件人才市场需求需要优质软件人才培养的跨越式发展。“中国软件产业人才培养战略研讨会”公布的统计数据是:我国现在缺少软件开发人员30万到40万左右,在未来5到10年中将缺少更大数量的软件开发人才。
而其中软件工程师目前已经成为今年最紧缺的人才,北京,上海的需求量分别占33%和29%,从企业分布来看,民营企市业需求量最大,占到19%,外商独资的欧美企业占15%。市场上对软件技术人才的需求骤增,造成了人才极度抢手的局面。
下图为2018年各专业人才需求分布:
2、就业范围广
现在各行各业,略有规模的大中型企业,基本都会有自己的IT部门或者各类应用管理软件,其中消费电子和通信设备行业,对于软件开发人才的需求尤为旺盛。
3、薪资收入高
软件在IT产业里是利润最高的部分,而最大的成本就是工资成本,所以软件开发人才的薪资也相对较高,同比高出其他行业50%左右。据前程无忧的调查数据显示,2016年IT软件技术研发类岗位的平均调薪幅度为11.1%,薪资上涨幅度也远远超过其他行业。
4、职位晋升快
软件开发人才需要的是技术和实际操作,一个熟练的软件开发工程师,特别受用人单位的欢迎,升职加薪非常快。
5、岗位性质重要
软件是电子载体的灵魂,软件开发人才的关键性不言而喻。
因此,对于一些有软件梦想的人来说,现在无疑是一个好时机,特别是对于那些刚毕业找不到理想工作的同学来说,选择学习软件开发技术是找工作、拿高薪的好途径。
所以,不要再怀疑 IT的市场前景了,认准了,干就完了!
问答环节:
1、没有基础可以学IT吗?
当然可以了,谁当初学IT有基础了,不都是从0学起的么
2、小学毕业可以学计算机吗?
少儿编程了解下,别人可是连小学都没有毕业呢~
3、学计算机要先学什么?
基本的电脑操作,最好会点英文基础,这么没办法,毕竟软件架构都是老外设计的
4、JAVA前景好么?
看一下上面的前景分析,再看看它的安装量,不好能这么受欢迎么
5、哪种开发语言最好学?
Java,通俗易懂,应用广泛,跨平台,涵盖范围广
6、有没有推荐的IT培训机构?
最好的培训机构就是自学,可以培养个人能力,进步快,性价比高。培训机构跟学校一样,唯一的区别是它针对性强,你想学它的技术,它想要你的钱,就这么简单!听说费用也不低。
附上一份全栈开发工程师线路图
如果还有什么不明白的,可以看上面图片找我!
哎呦,码字不易,伤筋动骨的,一不小心又耗费几十亿脑细胞,我要加个鸡腿压压惊!
来都来了,点个赞呗~~~