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

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

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

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

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

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

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

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

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

……

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

前端开发最大的痛啊!

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

前端开发者,你懂的,居于开发者鄙视链的低端,业务逻辑大多都居于后端,超大并发量是后端实现的,超牛逼的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岁之后找不到工作,好好考虑一下吧:-)

前端开发的难点到底在什么地方?相关推荐

  1. 微信小程序开发的难点到底在什么地方?

    从当初的一夜成名,到今天火爆的市场占有率,微信小程序已走过 4 个年头.据今年 1  月阿拉丁发布的报告显示,微信小程序 2020 年 DAU 已破 4 亿,其总数超 380 万. 作为一个技术人,今 ...

  2. 攻克前端开发的难点,码农不惧!!

    前言 你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』:当学 ...

  3. 前端开发的瓶颈与未来

    前端开发的瓶颈到底在哪里,前端技术是否已经走到一个十字路口,全栈化的系统架构是否能改变目前的窘境?本文将根据作者自身的开发经历谈谈当下前端开发中遇到的一些问题和想法. 近两年我一直在思考的一个问题: ...

  4. 前端开发薪资之各地区对比(图文分析)(share)

    发现最近大家都在关注有关前端开发的薪资问题,不同地方各有差异,今天我就总结一下发出来方便大家的查阅.(2014年) 前面给大家介绍了关于前端开发需要学习的东西,根据你掌握的技能程度,薪水是不一样的.d ...

  5. 前端开发薪资之各地区对比(图文分析)

    http://www.html5cn.org/article-6769-1.html 前端开发薪资之各地区对比(图文分析) 2014-9-3 09:50| 发布者: html5cn |来自: www. ...

  6. Web前端开发到底是什么?最通俗易懂的解释了!

    软件开发的是一项系统的工程,就像盖房子一样其分工也是很明确的,比如写前端的,后端编程的,写底层的...等等. 那么,这里就有一些同学可能会听说过的一些名词了.前台.后台.前端.后端,到底什么是前台,什 ...

  7. 前端笔记(Html+CSS+JS+DOM+网页特效+jQuery+HTML5+CSS3+canvas 标签+web开发重难点+面向对象+AJAX)

    第1章Html Html:超级文本标记语言(HyperText Markup Language),在浏览器上运行的一种标记语言. 就是给文本加上含有语义的标签. 接下来应该学习更多具体语义标签: 一. ...

  8. Web前端开发的框架可以应用到哪些地方

    随着时间的推移,网页设计越来越具有创新性.web前端开发将成为2020年技术领域最热门的学科之一.以前,前端空间的开发人员只要了解一些HTML,CSS,也许还有jQuery来创建交互式网站,就足够了. ...

  9. 前端开发必看 | Vue在前端市场这么火,它到底是什么?

    混迹前端市场的大家可能都知道,Vue可以说是一匹黑马,目前github star数已居第一位!前端开发者对Vue使用频率也越来越高. 作为由华人程序员尤雨溪开发的前端构架,它的出身给国人带来了巨大的荣 ...

最新文章

  1. 基准分类模型、分类应用(多分类数字识别、疾病预测、欺诈检测)、监督学习总结
  2. CentOS 7 安装部署 cassandra作为kairosdb的数据存储
  3. C将十六进制数字字符串转成数字
  4. 解决vuex页面刷新导致数据丢失问题
  5. centos清除dns cache.
  6. libcurl使用方法
  7. WebHook入门教程:快速实现自动化运维,如自动热部署、自动重启服务、自动备份数据库等等
  8. 全向轮移动平台参数校准
  9. cs61a 2018spr hw05 的一个题目
  10. MAC下如何解压.bin文件
  11. 文件服务器索引服务,ftp服务器文件索引
  12. 不会画关系图?5 类图形为你展示—变量间相互关系—提供示例与完整代码-ggplot2-geom_point-ComplexHeatmap-pheatmap-ggpairs
  13. Google Chrome 扩展程序
  14. MySQL数据库程序设计(三)
  15. 利用java计算长方形的面积
  16. 利用mammoth.js将doc文档转为html
  17. python 白噪声检验-利用python实现平稳时间序列的建模方式
  18. 教师工资管理系统C语言课程设计
  19. 2022-07-31:给出一个有n个点,m条有向边的图, 你可以施展魔法,把有向边,变成无向边, 比如A到B的有向边,权重为7。施展魔法之后,A和B通过该边到达彼此的代价都是7。 求,允许施展一次魔法
  20. 无源S参数2X-Thru去嵌方案

热门文章

  1. golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法
  2. docker build run 卡住_还在使用第三方Docker插件?SpringBoot官方插件真香!
  3. 计算机网络那有红叉,未能连接一个Windows,电脑网络连接有个红叉-
  4. 旧版eclipse安装maven_厉害!Eclipse 已经开始可以支持 Java 14~
  5. java-HashMap默认机制
  6. 自定义应用程序配置文件(app.config)
  7. CCNA 学习笔记(七)--交换知识(VLAN VTP TRUNK)
  8. Domino学习笔记之邮件发送程序
  9. wordpress中文教程
  10. OSPF的网络类型特征总结