你要问前端开发难不难,我就得说计算机范围里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟知某范围技术的人来讲,由于不知道所以产生神秘感,神秘感就会叫人感觉非常难,也就是『难的不会』;当掌握这项技术之后,了解什么什么技术能做到什么办不到,只不过做起来花多少时间的问题而已,没什么难的,所以就是『会的不难』。
但,对于前端开发这个方向,即便『会了』……依旧感觉非常难,唉,说多了都是泪呀,我用三个亲身历程的怪现象来讲明吧。
第一个怪现象:大家都可以指手画脚的前端开发
我职业生涯非常长一段时间都在做前端开发,我也做过后端开发,两者一对比,给我影响最深的不是技术差异,而是——前端开发者听到的『需要修改建议』要比后端多得多。
后端这东西,毕竟是藏在后面的,外行不懂就是不懂,装不出来,他们也不好自取其辱乱比划,但,前端嘛……大家都能看得见,没吃过猪肉还没有见过猪跑,所以,大家都可以指手画脚提一点建议。
只看得见界面的商品经理可以提一些建议。
项目经理可以有一些建议。
什么也不懂的老板也可以提一些建议。
甚至连后端都可以来提一些建议。
……
正由于前端的产出是看得见摸得着的,所以导致了大家都可以『提一些建议』的现象。
前端开发最大的痛啊!
第二个怪现象:被鄙视但又十分抢手的前端
前端开发者,你懂的,居于开发者鄙视链的低端,业务逻辑大多都居于后端,超大并发量是后端达成的,超牛逼的人工智能、云数据剖析、商业逻辑都在后端,前端要做的只不过一个功能展示,所以,后端开发常见看不上前端开发的工作,直到……到了公司举办黑客马拉松活动的时候。
黑客马拉松,就是让技术员自行结队,在几天之内迅速开发出来一个小型项目,到活动结束的时候,每一个队要演示我们的商品,于是,问题来了,平常你可以鄙视前端开发者,你可以把前端开发贬得一文不值,但,到了黑客马拉松的时候,才了解前端开发的必不可少,由于没前端你没办法『演示』你的想法。
这个时候,后端开发者也会发现,平常感觉前端开发非常简单,但自己写一个最简单的AJAX form表单提交也要学半天,不管你的后端想法多么牛,假如最后没熟练的前端开发者,最后到了演示环节也要抓瞎。
所以,每到黑客马拉松时,平常居于鄙视链最低端的前端开发者,忽然就变成了最炙手可热的红人。
大家都感觉前端开发无关紧要,但又不能离开前端开发。
是否非常讽刺?
第三个怪现象:苦不堪言的多端开发
一个正经的商品,为了满足用户不同设施上用的需要,需要提供多推广客户端,最起码要有网页端、iOS端和Android端,目前大多数商品还要考虑微信小程序端,这还没有算iOS要分iPhone和iPad,Android也要考虑手机和平板,甚至要考虑机顶盒设施的界面……
各种设施、各种Android版本、各种浏览器都有各自的特(bu)点(g),每一个前端开发者都有领会,不少精力都消耗在处置某个特定平台/版本/浏览器的bug上,唉,说到这里真想流泪……
由于要支持这么多不一样的推广客户端,一个商品的前端开发者类型也不止一个,要有网站开发者、iOS开发者和Android开发者,大一点的项目,靠一个人支撑一种推广客户端就不可以了,需要的是网站开发团队、iOS开发团队和Android开发团队。
其实,不同推广客户端达成的都是同一种功能,完全是由于这个世界存在这么多种推广客户端,所以大家才被迫为每个推广客户端写一套代码。
虽然多端的存在,增加了不少技术员的就业机会,但,干过实质项目的都了解,这其实非常的麻烦,非常的麻烦非常的麻烦!为了给用户最好的体验,一定期望各端提供一致的功能界面,假如有新功能,要上一块发布上线,但,不同团队之间开发周期一定不同,非常难保证同时完成任务,最后,花费开发时间最长的那一端的开发团队就成为整个商品的弱点。
每每想到这里,就缅怀秦始皇,秦始皇你如果不光把度量衡统一,把所有推广客户端也统一了多好:-)
前端开发难在哪儿?
好了,看完上面这三种行业怪现象,不难看出,前端开发非常真的非常有困难程度,我这里只列出最重要的三点:
第一,当需要发生变化的时候,第一线中枪的总是就是前端,而且不少需要变化和后端无关,单纯就是前端的改变。这类需要改变有些是不适当的瞎折腾,但,客观来讲,也有不少是有必要的需要改变,应该用户是上帝,用户的爱好会变化,用户的爱好大家也要反复揣摩,需要要伺候好使户,也就是要适应需要变化,所以,难题就成了——怎么样让前端开发适应迅速变化的需要?
第二,平台、浏览器生态复杂,要考虑的场景太多,不同平台上达成同一界面功能的重复劳动紧急,这个难题在于——怎么样消除前端开发的重复劳动?
第三,前端的学习曲线其实挺陡,不少后端开发者以为前端只不过玩一玩HTML,到了自己上手的时候发现其实要学不少,下面只不过一个简化了的网页前端学习路线图。
上面这么多要点掌握,只能算基础知识,更别说:
假如要做到高性能,要考虑CDN优化、Javascript Profiling、打包方案……假如要做到安全,要预防注入攻击,要预防XSS攻击,要预防CSRF攻击……这说的还只不过网页前端,没说Android和iOS开发、微信小程序开发,假如把这类都带上,需要学习的常识量又要翻倍。
而且,前端更不是说读几本书就能上手做真实项目的,假如没对这个范围长期的浸淫,做出来的东西非常可能就是漏洞百出,这个难题就是——怎么样让前端学习曲线变得不陡?
总结一下:
怎么样让前端开发适应迅速变化的需要?怎么样消除前端开发的重复劳动?怎么样让前端学习曲线变得不陡?长期以来,虽然无数仁人志士想要解决这类问题,也获得了一些成就,但,前端是个被常见低估了困难程度的开发活动!
前端开发的出路在何方?
请注意,我目前说『前端开发的出路在何方』,并不仅仅是要解决『前端开发工程师35岁之后如何找工作』的问题,我想说的是整个行业怎么样定位前端开发的问题,或者说开发团队整体如何解决前面说过的前端开发困难的问题,反过来,假如大家认清了整个行业对于前端开发的定位,你作为前端开发工程师也就了解35岁之后怎么样找到适合的工作。
在我看来,问题的重点就是——目前不少前端开发的工作都是在重复劳动。
难道不是吗?
你去问一个网页前端开发工程师,他们在前一个项目里做的功能,和后一个项目里做得功能,本质有多大不同?
你去让一个网页工程师、Android工程师和iOS工程师一块讨论一下达成的功能,难道差不多就是一样的,只是用不同语言、部署在不一样的平台吗?
你去问一下这个企业的前端,再去问一下另一个企业的前端,他们要考虑的性能、安全性问题,解决方案难道不都是非常雷同吗?
我不敢说所有前端开发工作都是重复劳动,对于一些极具开革新的界面和功能,是发展一片新的天地,需要前端开发工程师开发全新的应用,但,让大家承认吧,对于大多数应用,特别是对于一些工具类应用,历史上已经被开发过无数回了,实在没必要再重复造轮子了。
只不过,每个应用的开发团队,都比较容易以为,我们的应用是『与众不同』的,这种想法也可以理解,毕竟,世界上每个应用都有我们的独特一面,但,这不表示所有些工作都要从零开始。
这个行业已经这么成熟了,应该有一种尽可能通用的框架来抽象可重复用的功能,从而防止重复劳动,防止了重复劳动,也就解决了前端开发的最大难点。
像React、Vue和Angular如此的前端框架,就是一种程度上的抽象,也非常通用,但我觉得并不是是前面结论中指向的最好答案,事实上,行业进步多年,也不乏不少平台在为了前端开发的轻量化、功能模块化而不懈奋斗着,近期看到APICloud发布了一些新的前端能力,也验证了我前面说的看法。
知道APICloud新品特质
低代码+高性能移动开发
低代码虽然早在国外应用多年,但直到这两年才渐渐被国内所关注,其主张代码复用,与通过模型或翻译引擎自动生成很多代码,这类都是非常不错解决前端开发重复性工作和高效迭代的方向;我对于APICloud的认同,也是打造在他们原有些跨平台开发技术上进而达成了向低代码开发平台的转变。
这次APICloud的商品迭代方向第三指向了前端,当然,大家都了解,日常的开发,不可能一步跨入共产主义,历史上拖泥带水的代码依旧存在,开发职员也不大可能一下子换到另一种语言,这一点在AVM这个框架上得到知道决,同时支持React和Vue,无论源于什么开发框架背景,都可以在APICloud上迅速上手。
上文我也说到,前端开发最大的痛苦,就是多端支持,这一点在APICloud新发布的商品上得到进一步补充,一套代码开发,自动生成合适Android、iOS、小程序、HTML5的引用,所有跨平台浏览器的问题得到解决,当然,市面上不少技术都在吹嘘类似的『多端支持框架』,但依旧要写不少不少代码,这一点可以参考APICloud的做法,就是在功能层达成最大的复用, 其实一款应用中的功能大多数已经由成熟的云厂家提供了,譬如你写个应用,最常见的IM、支付、统计、地图等等,但大家集成到我们的应用中还需要撰写代码的工作量,这点APICloud则通过统一的规范,封装到我们的平台,开发者一键集成确实省了不少的事,不需要苦逼地重复写fetch了!
其达成在所有些云服务都有一个趋势,那就是简单易用化,缘由也非常简单,既然是『云服务』了,意味着可以非常快用上,也可以比较容易换另一家『云服务』,假如某个云服务的学习曲线非常陡,那样非常快就会让用户流失,由于用户会选择其他服务,从这一点上来讲,可以相信APICloud如此的低代码开发平台学习曲线相对愈加平缓。
我更认同APICloud的方面,是APICloud不仅仅是一个框架,还提供SDK支持,官方的开发工具SDK就包括APICloud Studio、Sublime APICloud Plugins、WebStormAPICloud Plugins,你可以选择用官方Studio,并且新版本基于VSCode定制了,也可以用Sublime或者WebStorm如此已经用惯了的IDE插件来开发。
知道更多前端开发文档
最后来讲说,什么人会喜欢APICloud。
从应用开发的角度(也就是从管钱管资源的领导角度),APICloud如此的低代码开发平台模式,可以真的解决前端开发的三个大痛苦;但,以前端开发者角度(也就是出劳力拿薪资的打工仔角度),是否感觉到了一丝丝威胁,假如像APICloud如此进一步将前端开发者的工作量简化,那样岂不是前端开发者都要扔掉工作了?
非也非也!
第一,低代码平台不是无代码平台,该写的还是要写,前端开发这个工种并不会消失,只不过工作方法和内容发生了变化。
而且,大伙要以清醒认识到,几十年前根本没技术员这个职位,更别说前端开发职位,同样,再过几十年,有一些职业也会消亡或者改变,与其哀嚎世界变化快,还不如主动拥抱变化,APICloud主导的这种高性能移动开发+低代码开发的模式,是一种趋势,既然改变不了,还不如主动同意。
不光是同意代码开发的方法,与这类平台所提供的商业众包资源也在成为不少平台用户获得额外收入的一个主要来源。
假如不想一直996,或者不想35岁之后找不到工作,好好考虑考虑吧:-)