在咱们实际的开发过程当中,咱们当前这样定位前端、后端开发人员。html
1)前端开发人员:精通JS,能熟练应用JQuery,懂CSS,能熟练运用这些知识,进行交互效果的开发。前端
2)后端开发人员:会写Java代码,会写SQL语句,能作简单的数据库设计,会Spring和iBatis,懂一些设计模式等。java
如今来看,咱们对先后端的要求仍是蛮低的,尤为是后端,新员工通过培训以后都是能够参与到后端开发的,没有过高的技术门槛,惟一须要作的就是先变成熟练工种,这个阶段没有涉及到设计模式、架构、效率等一些列问题。mysql
仍是先google一下,看看网上对Web前端开发、Web后端开发分别是什么?程序员
Web前端: 顾名思义是来作Web的前端的。咱们这里所说的前端泛指Web前端,也就是在Web应用中用户能够看得见碰得着的东西。包括Web页面的结构、Web的外观视觉表现以及Web层面的交互实现。web
Web后端:后端更多的是与数据库进行交互以处理相应的业务逻辑。须要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等。sql
咱们再来看看大公司对先后端人员招聘的要求,经过这个角度看看前端、后端的技术要求:数据库
Web前端:编程
1)精通HTML,可以书写语义合理,结构清晰,易维护的HTML结构。后端
2)精通CSS,可以还原视觉设计,并兼容业界认可的主流浏览器。
3)熟悉JavaScript,了解ECMAScript基础内容,掌握1~2种js框架,如JQuery
4)对常见的浏览器兼容问题有清晰的理解,并有可靠的解决方案。
5)对性能有必定的要求,了解yahoo的性能优化建议,并能够在项目中有效实施。
6)......
Web后端:
1)精通jsp,servlet,java bean,JMS,EJB,Jdbc,Flex开发,或者对相关的工具、类库以及框架很是熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,对Web开发的模式有较深的理解
2)练使用oracle、sqlserver、mysql等经常使用的数据库系统,对数据库有较强的设计能力
3)熟悉maven项目配置管理工具,熟悉tomcat、jboss等应用服务器,同时对在高并发处理状况下的负载调优有相关经验者优先考虑
4)精通面向对象分析和设计技术,包括设计模式、UML建模等
5)熟悉网络编程,具备设计和开发对外API接口经验和能力,同时具有跨平台的API规范设计以及API高效调用设计能力
6)......
从几个公司的招聘要求能够看到,作Web开发,对前端和后端的要求是各自所不一样的。而咱们目前的实际状况,也和这个差很少,可是,咱们不管在知识的掌握程度上,仍是知识掌握的宽度上,都是不够的。
首先,咱们在前端缺少积累,没有沉淀,专业的前端技术的积累是从去年才开始的,同时,在前端也缺少支撑与高手,因此,走起来比较困难。同时,前端人员培养的较少,一个缘由是对前端了解太少,另一个缘由就是对前端与后端的工做比例估计不足。所幸,咱们在这一年也在前端有了很快的进步,培养了几个优秀的开发人员,有意识的解决了前端的用户体验,这都是可喜的。今年,须要更进一步,专业化。
其次,咱们在后端发展的不够宽,后端的知识体系已经比较完善,可是,不少应用点都没有涉及到。同时,对现有技术框架的理解都不够深刻,太浮躁。咱们目前的设计团队在解决互联网高并发、大数据量的存取上经验与能力都还不足,须要正视这些问题。后端技术的发展须要更加的精进,以解决实际存在的问题为主。
最后,咱们在前端、后端都缺少熟练工,这会影响到开发的速度,同时,也不利于后期技术的研究。
web前端跟后端有什么区分,通过搜罗也找到这么一篇文章,附上:
咱们常常对Web designer(网页设计师)和Web developer(网页开发者,也称程序员)傻傻分不清楚,其实他们之间有着巨大的差别。二者之间的差别主要表如今:一个是有关网站的视觉或美学方面,被称为“前端”;另外一个则是看不见的编码方面的设计,被称为“后端“。简而言之,漂亮的网站界面都是出自网页设计师之手,而牛逼强大的功能则是网页开发者的杰做……
以上只是从双方的职能上来理解彼此的差别,事实上他们的差别远不止这些。为此,国外设计网站Downgraf特地制做了一张图表来展现两个职业的种种差别:网页设计师和网页开发者(程序员)都留胡茬,一个没钱,一个没时间;二者都喜欢内涵T恤,一个走字体设计路线,一个走代码风;二者都配自家设备,一个必带MacBook Pro,一个只挑小键盘⋯⋯除了以上种种差别,他们还有一个共同点:惧怕MM,看来都是“宅”惹的祸。
WEB前端和后端开发面临的挑战
要成为一名高效的Web开发者,这须要咱们作不少工做,来提升咱们的工做方式,以及改善咱们的劳动成果。而在开发中不免会遇到一些困难,从前端到后端,近日,在问答网站知乎上,有人抛出了“Web前端开发面临的挑战主要有哪些?”和“后端开发主要的挑战有哪些?”。
1、Web前端开发所面临的挑战
盛大Web工程师 曹刘阳:前端语言的胶水性需求太强 前端必须重视可维护性
1.CSS和DOM提供的接口水平过低了,而BOM提供的控件只有input、select、textarea这几种最基本的,稍复杂一点的UI效果,都要前端本身利用CSS和DOM去组合创造。看到一个需求,脑子里第一步要想如何利用CSS、DOM这些基本的零件组合成最终的效果,实现最终效果实际上是一个“创造”的过程,好比说tabView,treeView,richEditor,colorPicker这种看起来常见的组件,其实在前端里都是没有现成可用的,须要本身去实现。
2.前端语言的胶水性需求太强。CSS、DOM、JS是三种不一样的技术,这也是前端知识系统中要掌握的最重要的三个基本功。server端编程固然也会须要不一样方向的知识,好比PHP、SQL等,但server端编程大部分时间只用专一在某一个知识点上,只要必要时粘一下其它语言。但前端不一样,前端的效果是经过CSS、DOM、JS三者配合起来最终呈现出来的,脱了任何一个技术都步履维艰,时刻要同时考虑多个方向的知识点。换句话说,server端编程像是一个单线程,即便有技术交差,也是串行的,而前端编程像是开了三个线程同时在跑,复杂度是成倍增加的。
3.CSS+DOM+JS的组合实在太强大了,同一个效果能够有多种彻底不一样的实现方式,每一种实现方式都会有不一样的开发难度、扩展性、可维护性。解决方案太多,看到一个效果首先会先想到如何用CSS和DOM里那些low level的接口实现,这是一个“创造”的过程,这时脑子里可能冒出好多种不一样的实现方法,“创造”完了以后还要“比较”,权衡各类解决方案的优劣,纠结一阵以后,才能选出最适合的方案。固然,并不是前端都是完美主义,必定要选一个最好的方式出来,而是由于前端是GUI编程,直接面向用户,是最直接的产品呈现的部分,是门面。正由于如此,因此前端也是最容易被反复修改的部分。反复“修改”有多可怕,是个程序员都懂的,若是可维护性很差,那简直是恶梦。因此前端不得不重视可维护性,不重视可维护性直接等于自虐。
4.浏览器兼容性。浏览器种类很是多,IE、Firefox、Chrome、Opera、还有众多的IE加壳浏览器,相似搜狗、傲游、360,再加上这些浏览器的移动终端版本。须要有Web标准,前端的知识大部分是通用于各个浏览器,但仍是会有历史遗留问题,不一样的浏览器有不一样的问题特别是市场占有率最高的IE系,就IE本身市面上就有六、七、八、9这4个版本,4个版本之间各有各的问题。若是不积累点经验,面对疑难杂症那是一头雾水。
豆瓣前端工程师 张克军:前端开发的五大挑战
第一大挑战:兼容性。虽然微软已经决定将IE 6安乐死,IE 9/10看起来至关标准。向后兼容彷佛轻松了,但向前兼容又开始愈来愈让人头疼了。Android上的webkit是多么混乱,在桌面浏览器上老是有CSS Hack能够摆平,但在mobile上只能考虑退化方案。从兼容浏览器(外加套壳的浏览器)到兼容设备,实际上兼容性变得更复杂了。
第二大挑战:交互的复杂度。和目前UI/交互的要求相比,浏览器引擎给咱们接囗的确过低级了。因而今年前端技术的热门话题是各类Javascript,CSS的预处理器、各类MVC框架和微框架的讨论。
第三大挑战:代码可维护性。复杂度的提高直接影响代码的维护性。JS/CSS/HTML代码生命周期愈来愈长,也就愈来愈须要从代码质量、架构和工具上保证它们的可维护性。代码的历史问题是永远的痛点。
第四大挑战:性能。
第五大挑战:我的成长。
互联网评论员 莫言:开发者的思路很重要
前端的开发,若是没有整体的设计思路,会成为一种碎片似地程序,一个效果一堆代码,一个功能一滩脚本,一个需求片逻辑,我曾经遇到过,由于ue调整,把整个前端的代码除了核心数据处理函数保留,其他的所有修改的状况。基本上前端的开发,处于DOM操做,数据处理,数据交互三部分,若是合理的分配这三部分的功能,那么前端的代码就很容易扩展和调整。他认为真正的前端开发挑战,还在于开发者的思路。兼容性,布局,CSS和JS都不是问题,问题在于如何合理的组织语言逻辑,若是正确抽象出需求中的模块。如何用代码处理,清楚的用代码表达出思路,清楚的写好注释,给后续维护者一个可阅读的思路。前端的改动量,是后端的数倍,前端没有绝对,只有跟随需求不停的修改。
2、Web后端开发面临的挑战:
1.第一大挑战,后端开发最重要的挑战,来自于规模
规模的扩大,好比访问量扩大,文件存储量扩大,数据量扩大,服务器数量扩大等。一个前端看起来如出一辙的网站,某一种指标若是扩大十倍,几乎都会面临一大堆的问题和挑战。另外一方面,在规模扩大之后,后端系统架构,必定会复杂化。原来只有一台Server,LAMP都装在一块儿。而后数据库分出来,反向代理,负载均衡,分库分表,Memcache,Message Queue,事务处理,CDN,NOSQL,种种架构,Server,就逐渐的演化出来了。架构的复杂化,天然会带来更多的问题和更多的挑战。
2.第二大挑战,来自于安全
安全问题层出不穷,防不胜防。须要技术手段,也须要管理制度。
3.第三大挑战,来自于效率
可否提供足够的处理速度,可否提供足够的带宽,可否保证响应能力,这些是对外的效率。可否使用更少的服务器,可否使用更加便宜的服务器,可否使用更加节省能源的服务器,这些是对内的效率。
4.第四大挑战,来自于需求变动
固然,不管前端后端,都会面临需求变动,只要是软件开发,这都是大挑战。可是当一个系统已经稳定的,高效的运行时,需求变动来了,在知足需求以后,本来来没有问题的部分,会不会忽然崩溃,一旦崩溃,就是后端工程师的噩梦。
5.第五大挑战,来自于教条
这个世界上有无数IT大公司,他们都很开放,都愿意分享本身的架构与技术。因而,对于“眼界开阔”的后端工程师而言,困难不在于如何解决,而在于如何从众多的解决方案中作出挑选。框架、实践不断涌现,成功案例也不断涌现。人家都用得好好的,你敢用吗?究竟是敢于尝鲜,仍是保守要紧呢?这个很难。
互联网评论员 Neo Lee:后端开发的三大法则
1. Design for failure。后端至关比例的代码不是为了通常状况下正确而存在,而是为了保证特殊或者极端状况下系统可接受的响应而存在的。这里有很是多的折衷要作:渐进改进仍是超前设计?水平扩展、业务优化、前台仍是后台处理?大量的折衷都是要根据不断变化的环境和需求去权衡的,因此很容易犯错。
2. Architecture is about abstract。为何要抽象?由于抽象的概念有更好的适应性,更易于复用,更能灵活适应变化。可是抽象是很难的,不恰当的抽象更是贻害无穷,要命的是,这些并无很好的方法论,多数是依靠一组基本的原理,凭经验做出的。而Web后端开发在很长时间里并无很重视这些,不少网站都是粗放型设计和开发出来的,因此补丁叠补丁的结构就瓜熟蒂落的成为了主流。
3. Architecture IS product。架构自己即产品,一个软件产品包含了不一样的视角,其中最重要的包括用户看到的视角、以及软件骨架即架构的视角。但产品就是产品,全部这些视角都是必须统一和一致的,这就要求架构必须理解产品的灵魂,而产品要理解架构的困难所在,不然很容易出现想作的事情作不到或者以巨大的架构代价实现一个边角功能这类悲剧。