从前端走向后端
每次过年回老家聚会,遇到不熟悉的亲戚朋友,经常被问到职业是什么。一开始,我总是很认真的回答这个问题,结果常常引出一番尴尬的问答。
“你是做什么的?”
“我是做软件的,程序员。”
“做APP的吗?”
“不算是,但是又有关系,做APP分前端和后端,我做后端的。”
“什么是后端?“
“后端就是你看不到的东西”
“我都看不到,做了有什么用?”
“比如你在淘宝上购物,点了‘提交订单’按钮,弹出‘正在提交’的对话框,背后还做了很多事情比如核销优惠券、检查商品库存等等,这叫做后端。”
“你这样说我就明白了。”
“明白了吧!”
“你是管仓库的。”
以上是和一个读过大学的年轻人的对话,要是老年人就更谈不下去了。隔行如隔山,为了避免浪费口舌,我调整了一下策略。再有人问我“你是做什么的”,我都回答“修电脑的”,结果有好事者就掏个碎屏的手机出来,说“电脑可以修,手机也可以修吧?”。
严格来说,我算是全栈开发者,不是用Node.js通吃的伪全栈,而是掌握了HTML、CSS、JavaScript / JQuery、Vue、Android以及Java技术体系的真全栈。我并不是跟大家吹嘘自己技多不压身,因为掌握前端技术完全是生活所迫。如果可以选,我宁愿把花在JavaScript的时间用去学习Java。
1.项目经验
一些小公司招人,给不起薪资的时候就会说“非常锻炼人”,这可不是套话。小公司为了节省成本,那可是人尽其用。只要是个程序员,还管什么前端后端,通通都要做。我就在这样的公司干过,被迫学会好多东西。我做过的前端项目里面,除了小公司项目,还有一部分是私活。
- 毕业设计管理系统
项目特点:这是我的毕业设计,程序员的蹒跚学步。在这个项目里,我把HTML和CSS运用的非常熟练,用原生JS校验表单、操作DOM。
运用技术:HTML、CSS、JavaScript、ASP、Access
- 伪原创文章生成器
项目背景:十年前的百度还无法高效的分辨文章是否原创、语义是否合理。将原创文章的句子打乱,加入特点关键字组成一篇新文章,叫做伪原创。这种伪原创文章读者看来狗屁不通,百度看起来是原创的。只要网站发布一定数量的伪文章,域名的年龄长一些,在搜索特定关键字时,能获得很好的排名。
项目特点:这是个人创业项目,用来采集、生成伪原创文章。为了做这个项目,我不得不学习PHP,因为ASP太孱弱、Java太繁琐。
运用技术:HTML、CSS、JQuery、PHP、MySQL
- 掌购手机商城
项目特点:这是某小公司的移动电商网站,只支持手机浏览,主要销售数码产品、服装。在这个公司里,我学会了很多技术,比如用冲击钻打孔、修打印机、装货架。
运用技术:HTML、CSS、ASP、MS SQL Server
- 剧场售票/检票系统
项目特点:私活项目。采用Vue开发微信公众号售票功能,用iView开发Web管理端。开发了一个检票APP,运行在基于Android系统的手持检票机上。
前端技术:HTML、CSS、Vue 2.0、Android
后端技术:Java、Spring Boot、Mybatis、MySQL
2.前端的发展
在一次求职中,我删除了简历中所有前端相关的技能和项目经验,只找后端开发、系统架构相关的职位。放弃Web前端或者Android开发的原因有两个:
- 前端离业务太远
前端工程师调了一个后端接口,只要接口能调通,返回结果正确,就不用管什么了。负责接口的后端工程师,首先要精通业务逻辑,确保结果无误;其次接口设计要合理,尽可能高并发低耗时;充分考虑扩展性,严苛的情况下要监控接口的可用性。
在任务分工上,前端天然就离业务远一些。事实上,相当多的前端工程师主动远离业务,只做一个API Caller。
- 前端的发展面太窄
我们先来看看常用前端技术:
- Web:包括但不限于HTML、CSS、JavaScript、JQuery、Bootstrap、Node.js、Angular / React / Vue等,主要用于开发Web网站、微信小程序、手机APP。
- Electron:基于Chromium和Node.js,使用JavaScript、HTML 和 CSS 构建跨平台的桌面应用,代表作 Vs Code, Fackbook Messenger。
- WPF / WinForm:微软的桌面软件技术,主要开发基于Windows的Windows的企业软件、工业软件、桌面工具。
- QT:跨平台的C++开发库,主要开发桌面软件、嵌入式软件。
- Android / IOS:主要开发消费类的手机APP。
前端技术发展非常快,有些技术也非常复杂。以APP原生开发为例,性能优化就包含了很多方面,比如从简单的启动优化、 UI优化、 卡顿优化、 崩溃优化、安全性优化,到深层次的弱网优化、 大图加载优化、 储存优化、 高效传输优化、 极限瘦身优化,实际开发过程中的OOM问题原理解析、 ANR问题解析、 Crash监控方案。
然而,多数产品只是展示后端数据、基本流畅就行,不需要工程师深入了。通常企业要求前端工程师做到两点:高效率,三五天出个Demo;跨设备,一套代码多个平台用,节省成本。前端在中小公司发展面非常窄,最多就做个前端组长;只有知名大厂喜欢技术专精人才,要求研究框架原理和造轮子。
3.专注后端
相比前端,后端工程师要掌握的东西也太多了,随便罗列一下:
- 分布式:掌握解决三高(高并发、高性能、高可用)的微服务架构,常见方案有Spring Cloud、Spring Cloud Alibaba,可能还要处理分布式事务、管理集群日志的问题。
- 消息队列:业务系统常常采用消息队列对请求削峰填谷,提高系统稳定性,常用的消息队列产品有RocketMQ、Kafka、RabbitMQ。
- 数据库:运用关系型数据MySQL或者Oracle持久化数据,设计表和查询优化是基本功。NoSQL数据库如Redis、MongoDB等使用广泛,如何与关系型数据库搭配使用,又是基本功。
- 反向代理:至少掌握Nginx的基本原理与配置。
- 容器化:至少掌握Docker与K8S的基本原理,解决容器化应用的常见坑。
- 操作系统:掌握Linux基本原理以及查看日志、内存占用、CPU负载等命令。
除了上面的6点,还有大数据处理、分布式文件系统、Service Mesh等等。很多技术是一套解决方案,不能简单的归类为后端了。像淘宝这样高流量的网站,上面说的技术全都用上了,对前端而言,能看到也只是接口而已。后端开发的知识面很广,发展方向更多,许多技术管理的职位也是后端工程师担任,这是我转向后端的根本原因。
如果你做前端时间不长,而且兴趣不是特别大,建议转型做后端开发,会发现很多有趣的事情,比如加班特别多。
公 众 号:编码专家
独立博客:codingbrick.com
文章出处:https://www.cnblogs.com/xiaoyangjia/p/16419715.html
本文版权归作者所有,任何人或团体、机构全部转载或者部分转载、摘录,请在文章明显位置注明作者和原文链接。