前端工程师的技术进阶点在哪里?
单纯讲技术进阶点意义不大,脱离场景都是耍流氓。我举个实际例子,今天的阿里大文娱优土,阿里接管2年,底层替换差不多了,由内容为王慢慢转变为产品技术驱动。这种情况下,前端如何进阶呢?业务很多,历史问题很多,老板迫切希望创新,赶超对手。
端上,我有pc、h5、小程序,播放器
api代理层,我有node,可以快速实现api保证,1、内部有直接用,2)内部没有,自己写,3)不够用,我自己包装,不会让api层限制我的发展
历史问题,我可以快速的想办法吃掉,尤其是老的php,这部分要做的是1)稳定改造2)提高团队技术栈
我有端,我有api,即所有应用层面的事儿我都可以做。那么,新业务如何应对呢?根本还是在产品技术2个方面,对于团队技术,慢慢培养就好了,对于产品摸清他们的水平。
有哪些方向可以突破
全局方向: 做业务整体架构,进可攻退可守,技术不行做技术,产品不行做产品,不要给自己设限
深度方向: 做性能调优(前端、node)、高并发(node)、分布式(node)等专业要求很高的领域,node完全可以做任何java可以做的事儿,别抬杠
延伸方向: 以js 和node为中心很多大神转移到大前端,移动端、ai、区块链、大数据等方面,算是传统Web的延伸方向
前端不该只写页面,node也只是基本技能,最重要的一点,技术要驱动商业,否则没有任何价值。你是一个工程师,征途是星辰大海,何苦给自己设限?
计算机教会我很多原理,我却用它来更好的生活
就觉得最好笑的事情,一方面口口声声称前端不应该
被语言局限,跑过去用nodejs做后端,
一方面说前端的进阶就应该是懂算法懂底层懂框架
懂所有后端要懂的东西做了
几乎所有后端要做的事用nodejs做服务器端渲染还继续声称自己是前端仅仅是因为用了js。
前端和语言关系不大,而是通过预编译、转译来提高效率。
用node做后端,明显是理解有问题,随便举个前端库,node在里面是什么定位,想必大家都懂。node是辅助提效的,虽然理论上它应该做后端。
前端是open的,只要最终编译结果是js就可以,至于用什么语言编写无所谓,所以typescript、kottlin、webassembly等等都可以,黑的点不对
所以明确一下,
前端是指在用户端运行的代码,
后端是指在服务器端运行的代码。你用nodejs做什么中转层,
你的nodejs只要不是在浏览器端运行的,
它就归属于后端。
这话挑不出毛病。如果非要挑,今天大环境下,前端和api之间关系越来越复杂。于是才有了我们经常说的bff(backend for frontend)和api proxy。这是历史必然性。
端不一样,ue不一样,所以api不一样,h5和pc共用一套api就很恶心。很容易理解
业务发展,今天强调速度,二周一个迭代,如果前端过度依赖后端,几乎是很难快速的迭代的。这种情况就比较坑了。那么,又要有kpi,又要快速实现,无疑组装api和服务是最快的方式。不得不承认,这世界不是完美的。敏捷和微服务的结合点是完美小组,万能,但却可遇不可求。
前端是背锅侠,后端api宕机或者重启或者api字段变化等,故障都要前端先查,其实是非常浪费时间。前端是要有能力反制的,api代理层是有能力做到这点的。
最后说一下api mock,多端并行开发,明显提高效率的,可以看看yapi做法
如果不理解node做中间层的意义,可能不了解一线痛点,对前端指指点点不太合适。
你可以说招募一个JavaScript工程师
用nodejs来做后端开发,兼做着前端开发,
不要再说我们招一个前端工程师,
但是要你去做nodejs了。
最不喜欢PHPer和前端er的就是
他们永远都学不会什么场景下用什么语言
或工具解决什么问题,
一个好的工程师不会是语言的奴隶,
后端架构师之所以是架构,
在某种程度上就是包含了异构的元素。你把自己始终束缚在JavaScript的层面上,
反反复复的去争什么JAVA做到的,
nodejs也能做到纯属扯淡和赌气。
前端会写js这是基本技能。至于对后端了解多少,能否直接编写后端代码,这是另外一个话题。我的做法,先培养node小弟,把node底层服务、devops和开发框架搭建起来,前端在上面实现具体业务,真是毫无难度。
如果非要扯淡,公司所有人都不了解node,然后前端去用node写后端代码。。。存在不确定性是必然的。
在我看来,PHPer和前端er都是勇于面对自己问题并积极寻找解决方案的职业。非常棒。学习能力超强,“永远都学不会什么场景下用什么语言或工具解决什么问题”,这话说的真的很傻,能用一种语言解决的问题,为啥一定要学那么多呢?
一个好的工程师不会是语言的奴隶,能focus不focus的工程师也不是好工程师
“后端架构师之所以是架构,在某种程度上就是包含了异构的元素。“,说的好像前端不够复杂,不需要架构师一样。不同端,不同api,以及各种复杂的业务逻辑,稳定高效的输出,不需要架构师,只能说不够复杂。
node和php都是具有后端的基础,比如io,理论上java能做的事儿,它们都能做。这话没毛病。唯一的问题是积累问题,比如node处理excel就是比不过java,比如node做大数据,不是不行,是你真能投入那么多精力然而roi不高,你也能接受么?
前端的进阶有两个方向,横向来说,
去做Android,iOS,vr,动画,js这些。
这才是真正的大前端,
你的领域就应该是在用户这一方,
需要我做什么,就应该做什么,
这三个部门就应该合并在一起,
统一安排,统一规划。这种横向发展可以帮助你更深入的理解语言的差异,
也可以帮助公司更好的控制成本和进度。纵向发展就是复用性和扩展性。
前端变化快,不确定强,
那么到底有哪些内容是可以本项目复用,
跨项目复用的?能支持到什么程度的需求变化?这是你的业务,你的架构思想,
你的编程能力和视野决定的深度,
你的功底越深,抽象能力越好,封装的越强,写出来的代码越赏心悦目。
这个大前端的定义是狭隘的。
去做Android,iOS,这话不能这样说,不是让你写oc或java。而是基于react、vue这样的组件化方案,让前端能够主导移动端开发。对于前端来说,掌握react、vue之外,如果能够编写Android,iOS插件,了解sdk是加分项。
至于vr、动画,js,这明显前端基础,列出来不合适
前端能做更多,可以帮助公司更好的控制成本和进度。这话是没错的。而且更能应变,快速迭代。
大前端只考虑端,不考虑api,是不全面的。1)端(各种端,pc、h5、移动端、小程序、iot等等) 2)api聚合能力(有开发能力更好) 3)辅助提效,对团队发展,技术栈升级,开发效率等提供保障。
这段话,横向和纵向分法是没问题的,也很会拿话套路大家,唯一的问题的是理解的深度不够。
工程师除了性能,稳定性,扩展性之外,
还要考虑的就是开发效率,
什么方法能让我一天之内
完成过去两周才可以完成都事情?
算法切页面不也是一个很开心的方向么。
如果你乐意完全可以做这个啊,
虽然更偏算法工程师,
但你是用它来应用在前端。
也许未来有一天前端工程师的职责
就是跳个参数重跑算法和简单调整。
这又是套路话,前端开发效率,大家都是拿node做的。我们在讨论前端解决的时候,必然会提到node,无论工程化还是基本技能都躲不开。前端热衷于造轮子,其实都是在提效的。比如一个大组,没有人做基础设施,我不相信他们开发速度能多快。业务开发和基础支持是2个开发方向。
算法切页面是个方向,但问题是,前端来做还是后端做。后端做,就没前端什么事儿,意图干死前端。前端做就是创新,辅助自身开发,减少重复劳动。如果前端做,不用node,你要再学一门语言么?只能呵呵了。node做DeepLearning,也需要了解算法,这点上,所有语言都是互同的。不是不能做,不过你的成熟度,各种文档,学习资料真的能拼过py?
最后那句更傻,不是前端工程师,而是所有工程师都可能面临的问题。ai究竟能如何,我们要有这个危机意识,也要积极的想好应变办法,这一定是难不倒大家的。
系统的性能,扩展,复用和研发效率的提升,
是前端目前来说最重要的四个方向。
后端来说多了一个稳定,
对复用的期望程度略低于前端。
所以这就是前端工程师的技术进阶,
做出angular这种工程化思维强烈的框架,
大概就是长期期内的努力反向。
系统的性能,扩展,复用和研发效率的提升,是所有工程师都要关注的方向,拿这个绑定前端,呵呵。
后端就只有稳定性么?呵呵,我想问,为什么后端要现有架构?不是因为过于复杂嘛?如果不是为了复用,为啥会出现ssh、ssi、spring boot等等框架,如果不是为了复用,为啥会出现rpc,soa、以及微服务?如果不是为了复用,为啥要提倡敏捷?
其实,复杂到一定程度,架构出现是必然的,和前端后端有关系么?
最后再说工程化思维,我不认为只有angular算。从grunt、gulp到webpack到ykit,我们到底在折腾啥?难道react、vue就没有工程化思维么?组件复用都不算么?很明显写这句话的人是不太了解前端的。
少抱怨,多思考,未来更美好