上周末见了好多开发的年轻朋友,问了我一个问题:“前后端的区别和要求是什么?”分不清前后端开发的区别和要求,一种是因为前后端都了解,号称“全栈工程师”,但又什么都不是很精通;另一种是前端的不理解后端,后端的不理解前端。那前后端的区别到底在哪里呢?
一、前后端开发岗位的区别
1、对于初学者来说
(1)前端:入门简单,先易后难,能看到自己做出来的展示界面,有成就感;
(2)后端:入门难,深入更难,枯燥乏味,没有太大成就感,看一堆业务逻辑代码。
2、对于程序员来说
在实际的开发过程中,这个阶段对前后端的要求还是蛮低的,尤其是后端,新员工经过培训之后都可以参与到后端开发中,这些都是比较浅的技术层面,没有太高的技术门槛,唯一需要做的是先编码成为熟练工种。
(1)前端开发人员精通HTML、CSS和JS,能熟练使用JQuery,并能熟练应用于页面布局、页面样式和屏幕分辨率自适应以及交互效果的开发等工作;
(2)后端开发人员熟练使用一门编程语言(比如:Java、C#、Python、C++等)和懂一些设计模式,会编写SQL语句并懂数据库设计。
3、对于工程师来说
(1)对于有了一定经验的前端软件工程师来说,这个阶段需要懂Node.js、Vue.js、React.js等前端框架,涉及到前端开发架构和开发效率(比如:组件、模版和验证/解析方法封装等等)等一系列问题。
(2)对于有了一定经验的后端软件工程师来说,这个阶段需要懂Spring/MVC、iBatis等框架,涉及到数据结构、设计模式、后端开发架构和开发效率(比如:业务功能和方法封装等等)等一系列问题。
4、对于技术经理或者架构师来说
这个阶段编程已经不是主要工作了,但必须具备上面的技能,还需要具备架构能力,跟开发者已经不在一个level上了,主要区别在于技术领导力,本文只探讨前后端开发,就不再往下延伸了。
二、前端和后端开发内容的区别
1、运行环境不同
(1)Web前端代码主要在客户端(PC、手机、pad)运行;
(2)Web后端的代码主要在服务端运行,服务器可以在提供服务厂家的数据中心,也可以在云端。
2、与用户紧密关系不同
(1)前端重用户体验,主要是考虑怎样能让用户觉得用起来更舒服,考虑界面布局、交互效果、大数据量页面加载速度等等,主要是偏向用户看得见的部分,客户端(pc、手机、pad)上浏览web页面,处理各个浏览器平台的兼容和对界面的渲染差异,对UI库的依赖较强;
(2)后端更多是考虑业务逻辑、数据库表结构设计、数据的事务操作、跨平台API设计、负载均衡、应用和服务部署等等,更多的是考虑用户看不到的部分,保证业务逻辑处理数据的严谨,保证用户访问数据吞吐的性能。
3、需求变更带来的影响不同
(1)前端主要怕系统原型的频繁变更,布局样式、交互效果的需求变更;
(2)后端主要怕业务逻辑变更,或者当使用规模增大之后对稳定性带来的影响。
4、前后端通吃的全栈工程师
作为一个前端开发人员,如果它懂得后端,那他可能会很容易理解为什么要通过多个后端接口获取数据后,才能组装上它所需要的数据?
而作为一个后端开发人员,如果它懂得前端,那他可能会很容易理解为什么后端接口都设计得如此完整,而前端还要求我再定义一个接口来返回一部分的数据呢?
这两种情况下如果大家相互理解,如果全栈工程师就不需要大量沟通提高了开发效率;而为了解决这个问题,很多开发架构分离出数据操作的职责给ViewModel,它是由MVC框架演变为MVP和MVVM框架而来的,在MVP框架中View 与 Model 不发生联系,由后端实现通过 Presenter 传递;而MVVM框架中ViewModel 只关心数据和业务的处理,不关心 View 如何处理数据,在这种情况下,View 和 Model 都可以独立出来,由前端实现双向数据绑定。
三、前后端开发业务应用的区别
很多开发者跟我交流,大多数开发人员认为:做后端开发天生是有优越感的。因为与前端相比,后端更加接近业务本质,数据结构基本上都是后端来设计的,对公司的业务后台开发也更加了解,所以在很多人眼中或者潜意识里:后端比前端要重要。这也是很多人选择做后台开发的原因。然而事实真的如此吗?
如果非得下个结论的话,就从软件项目和软件产品两个维度说一下侧重点:
如果是做项目的思路:初期以功能为主,更侧重后端开发,后期功能稳定后更侧重前端开发,做得好可以把项目软件提升档次;
如果做产品的思路:更多的是采用MVP(minimum viable product,最小化可行产品)不断迭代的开发方式,而MVP方式更注重在前端界面等涉及到用户体验方面的模块开发,当然相对应的后端功能开发也必须跟上。
总体来说,不管是前端还是后端,大家都是为了把项目或者产品做好,通过项目或者产品实现其用户或社会价值,都是朝着这样一个共同的目标努力。
想学好任何一门技术,还要看自己对这门技术的兴趣度,如果是想从事软件开发又不喜欢的朋友,真得想好了是不是要保护自己的发际线位置和头发的颜色。