前端开发的难点到底在什么地方?

BOM485480 2020-11-13 12:22:13
前端 开发 到底在 难点 点到


你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。

但是,对于前端开发这个方向,即使『会了』……依然感觉很难,唉,说多了都是泪呀,我用三个亲身经历的怪现象来说明吧。

第一个怪现象:谁都可以指手画脚的前端开发

我职业生涯很长一段时间都在做前端开发,我也做过后端开发,两者一对比,给我影响最深的不是技术差异,而是——前端开发者听到的『需求修改意见』要比后端多得多。

后端这东西,毕竟是藏在后面的,外行不懂就是不懂,装不出来,他们也不好自取其辱乱比划,但是,前端嘛……谁都能看得见,没吃过猪肉还没见过猪跑,所以,谁都可以指手画脚提一点意见。

只看得见界面的产品经理可以提一些意见。

项目经理可以有一些意见。

啥也不懂的老板也可以提一些意见。

甚至连后端都可以来提一些意见。

……

正因为前端的产出是看得见摸得着的,所以造成了谁都可以『提一些意见』的现象。

前端开发最大的痛啊!

第二个怪现象:被鄙视但又十分抢手的前端

前端开发者,你懂的,居于开发者鄙视链的低端,业务逻辑大多都居于后端,超大并发量是后端实现的,超牛逼的AI、大数据分析、商业逻辑都在后端,前端要做的只是一个功能展示,所以,后端开发普遍看不上前端开发的工作,直到……到了公司举办黑客马拉松活动的时候。

黑客马拉松,就是让程序员自行结队,在几天之内快速开发出来一个小型项目,到活动结束的时候,每个队要演示自己的产品,于是,问题来了,平时你可以鄙视前端开发者,你可以把前端开发贬得一文不值,但是,到了黑客马拉松的时候,才知道前端开发的必不可少,因为没有前端你无法『演示』你的想法。

这时候,后端开发者也会发现,平时觉得前端开发很简单,但是自己写一个最简单的AJAX form表单提交也要学半天,不管你的后端想法多么牛,如果最后没有熟练的前端开发者,最后到了演示环节也要抓瞎。

所以,每到黑客马拉松时,平时居于鄙视链最低端的前端开发者,突然就变成了最炙手可热的红人。

谁都觉得前端开发不重要,但是又离不开前端开发。

是不是很讽刺?

在前端领域混了这几年,总结了一套前端学习的精讲视频和学习路线,如果有对前端开发感兴趣的伙伴,
不管你是想转行,或是大学生,还有工作中想提升自己能力的web前端党,欢迎大家的加入
我的前端开发交流群:603985993 希望大家诚心交流!,与企业需求同步。好友都在里面学习交流,
每天都会有大牛定时讲解前端技术!也可以关注我的微信公众号:【前端留学生】 每天更新最新技术文章干货。

第三个怪现象:苦不堪言的多端开发

一个正经的产品,为了满足用户不同设备上使用的要求,需要提供多客户端,最起码要有网页端、iOS端和安卓端,现在大部分产品还要考虑小程序端,这还没算iOS要分iPhone和iPad,安卓也要考虑手机和平板,甚至要考虑机顶盒设备的界面……

各种设备、各种安卓版本、各种浏览器都有各自的特(bu)点(g),每个前端开发者都有体会,很多精力都消耗在处理某个特定平台/版本/浏览器的bug上,唉,说到这里真想流泪……

因为要支持这么多不同的客户端,一个产品的前端开发者种类也不止一个,要有网页开发者、iOS开发者和安卓开发者,大一点的项目,靠一个人支撑一种客户端就不行了,需要的是网页开发团队、iOS开发团队和安卓开发团队。

其实,不同客户端实现的都是同一种功能,完全是因为这个世界存在这么多种客户端,所以我们才被迫为各个客户端写一套代码。

虽然多端的存在,增加了不少程序员的就业机会,但是,干过实际项目的都知道,这其实很麻烦,很麻烦很麻烦!为了给用户最好的体验,肯定希望各端提供一致的功能界面,如果有新功能,要上一起发布上线,但是,不同团队之间开发周期肯定不同,很难保证同时完成任务,最后,花费开发时间最长的那一端的开发团队就成为整个产品的短板。

每每想到这里,就缅怀秦始皇,秦始皇你要是不光把度量衡统一,把所有客户端也统一了多好:-)

前端开发难在哪里?

好了,看完上面这三种行业怪现象,不难看出,前端开发很真的很有难度,我这里只列出最关键的三点:

第一,当需求发生变化的时候,第一线中枪的往往就是前端,而且很多需求变化和后端无关,单纯就是前端的改变。这些需求改变有的是不合理的瞎折腾,但是,客观来说,也有不少是有必要的需求改变,应该用户是上帝,用户的喜好会变化,用户的喜好我们也要反复揣摩,必须要伺候好用户,也就是要适应需求变化,所以,难点就成了——如何让前端开发适应快速变化的需求?

第二,平台、浏览器生态复杂,要考虑的场景太多,不同平台上实现同一界面功能的重复劳动严重,这个难点在于——如何消除前端开发的重复劳动?

第三,前端的学习曲线其实挺陡,很多后端开发者以为前端只是玩一玩HTML,到了自己上手的时候发现其实要学很多,下面只是一个简化了的网页前端学习路线图。
在这里插入图片描述
上面这么多知识点学会,只能算入门,更不要说:

如果要做到高性能,要考虑CDN优化、JavaScript Profiling、打包策略……

如果要做到安全,要防止注入攻击,要防止XSS攻击,要防止CSRF攻击……

这说的还只是网页前端,没说安卓和iOS开发、小程序开发,如果把这些都带上,需要学习的知识量又要翻倍。

而且,前端也不是说读几本书就可以上手做真实项目的,如果没有对这个领域长时间的浸淫,做出来的东西很可能就是漏洞百出,这个难点就是——如何让前端学习曲线变得不陡?

总结一下:

如何让前端开发适应快速变化的需求?

如何消除前端开发的重复劳动?

如何让前端学习曲线变得不陡?

长期以来,虽然无数仁人志士想要解决这些问题,也取得了一些成果,但是,前端是个被普遍低估了难度的开发活动!

前端开发的出路在何方?

请注意,我现在说『前端开发的出路在何方』,并不只是要解决『前端开发工程师35岁之后怎么找工作』的问题,我想说的是整个行业如何定位前端开发的问题,或者说开发团队整体应该怎么解决前面说过的前端开发困难的问题,反过来,如果我们认清了整个行业对于前端开发的定位,你作为前端开发工程师也就清楚35岁之后如何找到合适的工作。

在我看来,问题的关键点就是——现在很多前端开发的工作都是在重复劳动。

难道不是吗?

你去问一个网页前端开发工程师,他们在前一个项目里做的功能,和后一个项目里做得功能,本质有多大区别?

你去让一个网页工程师、安卓工程师和iOS工程师一起讨论一下实现的功能,难道差不多就是一样的,只不过用不同语言、部署在不同的平台吗?

你去问一下这个公司的前端,再去问一下另一个公司的前端,他们要考虑的性能、安全性问题,解决方法难道不都是很雷同吗?

我不敢说所有前端开发工作都是重复劳动,对于一些极具开创新的界面和功能,是开拓一片新的天地,需要前端开发工程师开发全新的应用,但是,让我们承认吧,对于大部分应用,尤其是对于一些工具类应用,历史上已经被开发过无数回了,实在没有必要再重复造轮子了。

只是,每一个应用的开发团队,都很容易以为,自己的应用是『独一无二』的,这种想法也可以理解,毕竟,世界上每一个应用都有自己的独特一面,但是,这不表示所有的工作都应该从零开始。

这个行业已经这么成熟了,应该有一种尽量通用的框架来抽象可重复使用的功能,从而避免重复劳动,避免了重复劳动,也就解决了前端开发的最大难题。

像React、Vue和Angular这样的前端框架,就是一种程度上的抽象,也很通用,但我认为并非是前面结论中指向的最佳答案,事实上,行业发展多年,也不乏很多平台在为了前端开发的轻量化、功能模块化而不懈努力着,最近看到APICloud发布了一些新的前端能力,也验证了我前面说的观点。

了解APICloud新产品特性

低代码+高性能移动开发

低代码虽然早在海外应用多年,但直到这两年才逐渐被国内所关注,其倡导代码复用,以及通过模型或翻译引擎自动生成大量代码,这些都是很好解决前端开发重复性工作和高效迭代的方向;我对于APICloud的认可,也是建立在他们原有的跨平台开发技术上进而实现了向低代码开发平台的转变。
在这里插入图片描述
这次APICloud的产品迭代方向再次指向了前端,当然,我们都知道,现实中的开发,不可能一步跨入共产主义,历史上拖泥带水的代码依然存在,开发人员也不大可能一下子换到另一种语言,这一点在AVM这个框架上得到了解决,同时支持React和Vue,无论来自于什么开发框架背景,都可以在APICloud上快速上手。在这里插入图片描述
上文我也说到,前端开发最大的痛苦,就是多端支持,这一点在APICloud新发布的产品上得到进一步补充,一套代码开发,自动生成适合安卓、iOS、微信小程序、HTML5的引用,所有跨平台浏览器的问题得到解决,当然,市面上很多技术都在吹嘘类似的『多端支持框架』,但依然要写很多很多代码,这一点可以参考APICloud的做法,就是在功能层实现最大的复用, 其实一款应用中的功能大部分已经由成熟的云厂商提供了,比如你写个应用,最常用的IM、支付、统计、地图等等,但我们集成到自己的应用中还需要编写代码的工作量,这点APICloud则通过统一的标准,封装到自己的平台,开发者一键集成确实省了不少的事,不用苦逼地重复写fetch了!

其实现在所有的云服务都有一个趋势,那就是简单易用化,原因也很简单,既然是『云服务』了,意味着可以很快用上,也可以很容易换另一家『云服务』,如果某个云服务的学习曲线很陡,那么很快就会让用户流失,因为用户会选择其他服务,从这一点上来说,可以相信APICloud这样的低代码开发平台学习曲线相对更加平缓。在这里插入图片描述
最后来说说,什么人会喜欢APICloud。

从应用开发的角度(也就是从管钱管资源的领导角度),APICloud这样的低代码开发平台模式,能够真正解决前端开发的三个大痛苦;但是,从前端开发者角度(也就是出劳力拿工资的打工仔角度),是不是感觉到了一丝丝威胁,如果像APICloud这样进一步将前端开发者的工作量简化,那么岂不是前端开发者都要丢掉工作了?

非也非也!

首先,低代码平台不是无代码平台,该写的还是要写,前端开发这个工种并不会消失,只是工作方式和内容发生了变化。

而且,大家要以清醒认识到,几十年前根本没有程序员这个职位,更不要说前端开发职位,同样,再过几十年,有一些职业也会消亡或者改变,与其哀嚎世界变化快,还不如主动拥抱变化,APICloud主导的这种高性能移动开发+低代码开发的模式,是一种趋势,既然改变不了,还不如主动接受。

不光是接受代码开发的方式,以及这些平台所提供的商业众包资源也在成为很多平台用户获得额外收入的一个主要来源。

如果不想一直996,或者不想35岁之后找不到工作,好好考虑一下吧:-)

版权声明
本文为[BOM485480]所创,转载请带上原文链接,感谢
https://blog.csdn.net/BOM485480/article/details/109093775

  1. [front end -- JavaScript] knowledge point (IV) -- memory leakage in the project (I)
  2. This mechanism in JS
  3. Vue 3.0 source code learning 1 --- rendering process of components
  4. Learning the realization of canvas and simple drawing
  5. gin里获取http请求过来的参数
  6. vue3的新特性
  7. Get the parameters from HTTP request in gin
  8. New features of vue3
  9. vue-cli 引入腾讯地图(最新 api,rocketmq原理面试
  10. Vue 学习笔记(3,免费Java高级工程师学习资源
  11. Vue 学习笔记(2,Java编程视频教程
  12. Vue cli introduces Tencent maps (the latest API, rocketmq)
  13. Vue learning notes (3, free Java senior engineer learning resources)
  14. Vue learning notes (2, Java programming video tutorial)
  15. 【Vue】—props属性
  16. 【Vue】—创建组件
  17. [Vue] - props attribute
  18. [Vue] - create component
  19. 浅谈vue响应式原理及发布订阅模式和观察者模式
  20. On Vue responsive principle, publish subscribe mode and observer mode
  21. 浅谈vue响应式原理及发布订阅模式和观察者模式
  22. On Vue responsive principle, publish subscribe mode and observer mode
  23. Xiaobai can understand it. It only takes 4 steps to solve the problem of Vue keep alive cache component
  24. Publish, subscribe and observer of design patterns
  25. Summary of common content added in ES6 + (II)
  26. No.8 Vue element admin learning (III) vuex learning and login method analysis
  27. Write a mini webpack project construction tool
  28. Shopping cart (front-end static page preparation)
  29. Introduction to the fluent platform
  30. Webpack5 cache
  31. The difference between drop-down box select option and datalist
  32. CSS review (III)
  33. Node.js学习笔记【七】
  34. Node.js learning notes [VII]
  35. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
  36. Vue router loads different components according to background data (thinking - & gt; Implementation - & gt; (more than implementation)
  37. 【JQuery框架,Java编程教程视频下载
  38. [jQuery framework, Java programming tutorial video download
  39. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
  40. Vue router loads different components according to background data (thinking - & gt; Implementation - & gt; (more than implementation)
  41. 【Vue,阿里P8大佬亲自教你
  42. 【Vue基础知识总结 5,字节跳动算法工程师面试经验
  43. [Vue, Ali P8 teaches you personally
  44. [Vue basic knowledge summary 5. Interview experience of byte beating Algorithm Engineer
  45. 【问题记录】- 谷歌浏览器 Html生成PDF
  46. [problem record] - PDF generated by Google browser HTML
  47. 【问题记录】- 谷歌浏览器 Html生成PDF
  48. [problem record] - PDF generated by Google browser HTML
  49. 【JavaScript】查漏补缺 —数组中reduce()方法
  50. [JavaScript] leak checking and defect filling - reduce() method in array
  51. 【重识 HTML (3),350道Java面试真题分享
  52. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  53. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  54. [re recognize HTML (3) and share 350 real Java interview questions
  55. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  56. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  57. 【重识 HTML ,nginx面试题阿里
  58. 【重识 HTML (4),ELK原来这么简单
  59. [re recognize HTML, nginx interview questions]
  60. [re recognize HTML (4). Elk is so simple