炼金术(5): 区分前端开发/客户端开发/后端开发/核心开发

前端开发,指只做过HTML、CSS、JavaScript以及具备使用在此基础上构建的各种Web类型的UI框架开发的能力,例如React、Vue、Elm等Web框架,同时对NodeJS生态下的Gulp、Webpack等打包工具链、有所熟悉。前端开发人员还需要对PC端网页渲染、移动端网页渲染,或响应式渲染有所熟悉。必要的,前端开发人员还需要熟悉微信开发、微信环境的H5开发、以及各种小程序的开发等。

客户端开发,指完整的开发过PC端程序、移动端(Android、iOS、或者ReactNative等跨平台开发框架)程序的开发人员。客户端开发要处理的复杂度指数比上述前端开发人员高。客户端开发一般也会对UI层、逻辑层、数据层分离的构架有所理解,并能主动做此分类。客户端开发也可能需要处理多线程、本地文件读写、网络通信、多进程构架等问题。

相对来说,一个前端开发的熟手可能对Web的各种框架和工具链有熟练上的优势能力。但是另一个方面,前端开发相对于客户端开发来说,可能对端内的分层构架没有什么意识,对常见的OOP封装也没有什么概念,因为他们大量的精力都消耗在了如何调整Web组件、如何做好样式、如何写交互上。因此他们对如何做分层、如何做封装、如何做规约的经验增长的比较慢。

后台开发,需要掌握Linux上的各种基本命令,并以此为基础掌握这些系列的能力:网关配置,例如nginx,需要熟悉网关的服务路由配置策略、反向代理策略等;静态路由导向静态网站,反向代理则可能导向内部的Web服务,例如Java、NodeJs等内部起的Web服务;Web服务背后可能就是一系列Rest接口的实现或者RPC接口的实现;进一步背后可能有缓存层、数据库CRUD读写层。但这只是最基本的形式,后台构架会一步步演化,演化到最后又会变成开发人员只需要写业务代码,通过工具链一件部署等。

实际上后台这部分混合着基础组件的开发和业务逻辑的开发。业务逻辑层面的技术需求和基础组件的技术需求并不相同。基础组件部分,需要的是做云资源的资源抽象、虚拟化组件的掌握、调度、消息中间件等等分布式组件的技术,而面向业务,最常规的来说就是要对缓存、数据库的设计有良好的把握,以及一条完整业务流程全过程中,所有端的时序、事件、数据流的把握。

最后一个是核心开发。其实核心两个字具有骗人的作用,好像其他开发都显得无足轻重,其实不然。核心开发一般是指开发某种Kill级别的底层技术,例如Google的QUIC网络协议设计和开发、一种满足特定需求的存储系统/数据库、一个车辆识别系统等等。一个典型例子是Microsoft的浏览器团队能开发独立的浏览器核心引擎,但是生态没构建好,原版Edge浏览器并没有获得成功,反之,基于Chromium版本的Edge则反而有跟原版Chrome在市场上一争的潜力,本文就是在基于Chromium版本的Edge浏览器上编写的。

理解和区别这些不同类型的开发,对于一个项目的人员安排和调度是必要的。我深刻理解到一个项目的延期时间基本上是由耗时最长的那个端决定的。能不能某些端放的人靠谱,某些端放的人不靠谱呢?有风险。基本上来说,要想做出高质量的项目,就需要在合适的端放上合适的人。如果人上面没有办法满足,意味着那个人在那个端上没办法独立Hold住一面,这个时候就一定要在整体上对那个端有一个经过设计的构架,把风险规约到构架里面,我想构架的作用在这个时候就会本质的显露出来必要性,而不是装饰性。

全栈是一个谎言,双拳难敌四手,TeamWork不应该是一个人把所有的事情都做了,这是不对的。好的软件开发过程,如果出现了一个人做了过多角色工作,一定是这个软件过程的警告信号,不是什么好事。

技术人员可以拥有很多个技术栈的能力,随着项目的锻炼和经验的丰富,也会有这样一个自然而然的过程。但是还是要从角色上区分不同位置需要的不同能力,这是思维方式的问题。例如一个常见的问题是「做UI太头疼,审美是硬伤」。

首先,这就是思维方式的问题,不要自己做设计,做UI开发,纯界面技术上需要掌握的是如何布局(基于坐标的布局或者基于排版的布局)、如何配置样式(直接绘制方式的或者CSS调整样式的方式)、如何模块化UI(组件化、组合方式)、如何路由(跳转、前进、后退)、如何处理事件等。进一步的是如何做UI层、逻辑控制层、数据层的分离等。

而美工方面,你应该放心的交给美工设计师去设计,你需要做的只是把美术设计师设计的原型,通过你掌握的上述技术呈现出来。你只要思考一下,美术设计师做不了你的工作,但TA做的也是【UI】的一部分。

其次,审美是会随着经验的增加而一点点改变的,它不是静态的,所以也不必妄自菲薄,审美并非仅仅意味着「好看」,还包含「合理」、「用户友好」...等等。

--end--

原文地址:https://www.cnblogs.com/math/p/rule-005.html

时间: 2024-07-29 23:59:00

炼金术(5): 区分前端开发/客户端开发/后端开发/核心开发的相关文章

C#开发客户端、JAVA和tomcat开发服务端

hessian入门,Hello和文件上传范例,C#客户端+Java Tomcat后台 2.Hello范例1)后台--定义Java接口:package org.migle.hessian; public interface Hello {      public String sayHello(String smt);      public void printHello(String smt);  }2)后台--实现Java接口:package org.migle.hessian.impl;i

利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境

前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有2个问题不可避免:第一是前端调用后台接口时的跨域问题(因为前后端分开部署):第二是前端脱离后台服务后无法独立运行.本文总结最近一个项目的工作经验,介绍利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境的实践过程,希望能对你有所帮助. 注:

基于Laravel+Swoole开发智能家居后端

基于Laravel+Swoole开发智能家居后端 在上一篇<Laravel如何优雅的使用Swoole>中我已经大概谈到了Laravel结合Swoole的用法. 今天,我参与的智能家居项目基本上已经结束了Web服务器及android端的开发(熬了个通宵突击把剩下的做了,好累), 趁热来聊聊基于Laravel+Swoole开发智能家居后端的关键技术点. 16进制ASCII码协议的解析 硬件我不谈,我只需要关心数据解析.如何基于Swoole如果在php中解析16进制的ascii码,这种文章还比较少呢

爱创课堂2016年Angular.JS前端开发从入门到上手企业开发视频教程(完整版)

资源网盘: 2016年Angular.JS从入门到上手企业开发 链接: https://pan.baidu.com/s/1dF2vBzV 密码: 3hbk 免费学习网站地址:http://www.icketang.com/ AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得是小花招)来让浏览器做我想要的事.AngularJS试图成为WEB应用中的一种客户端的解决

实战使用Axure设计App,使用WebStorm开发(6) – 迈向后端

系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使用Axure设计App,使用WebStorm开发(3) – 构建页面架构  实战使用Axure设计App,使用WebStorm开发(4) – 实现页面UI 实战使用Axure设计App,使用WebStorm开发(5) – 实现页面功能 实战使用Axure设计App,使用WebStorm开发(6) –

spring boot + vue + element-ui全栈开发入门——前后端整合开发

一.配置 思路是通过node的跨域配置来调用spring boot的rest api. 修改config\index.js文件,设置跨域配置proxyTable: proxyTable: { '/api': { target: 'http://localhost:18080/', changeOrigin: true, pathRewrite: { '^/api': '/' } } } 完整的config\index.js代码如下: 'use strict' // Template versio

Java SSM开发大众点评后端

Java SSM开发大众点评后端 后端开发: 1.2017龙果微服务架构的分布式事务解决方案 2.2017年龙果spring boot 入门实战视频教程-首套中文教程 3.51CTO Spring Boot实战与原理分析视频课程 4.ElasticSearch5视频教程 5.Elasticsearch顶尖高手系列:高手进阶篇(最新第二版) 6.IDEA学习视频 7.Java 微服务实践 - Spring Boot 系列 8.JAVA-ACE-架构师系列视频课程-RocketMQ 9.Java-分

前端全栈架构,组件式开发,响应式开发,全栈工程师架构,用户界面架构,企业级架构项目实战

我本是一名文科专业半路出家的前端开发人员,从最初只会切图和写CSS.Html到现在会写点JS,一路坑坑洼洼,也是经历了很多,从2010年开始就用WordPress开设了自己的博客,虽然内容零零散散的并不多,但是多多少少也留下了时光的缩影,一直希望自己有一个自留地.用Node.js做服务端替换WordPress是去年的一个想法,由于一直腾不出时间,所以拖到了现在.当然了WordPress作为全球用户量最广的开源博客程序,易用性等诸多好处无可厚非,光自己的博客在过去几年就用了很多套模板,也用它做过很

WPF学习开发客户端软件-任务助手(下)

时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码)  已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主,采用MVVM模式(有小部分没有修改过来),小巧.使用方便. 具体功能与更新如下: 计划助手:本软件由[email protected]开发与维护,免费使用,如有好的意见或建议,可发送邮件到[email protected],谢谢使用!注(功能与特色):1.本软件使用方便.操作简便:2.本软件可设置