共计 3675 个字符,预计需要花费 10 分钟才能阅读完成。
我的故事
我叫 Jeff,是一个软件业余学生,学习前端满打满算两年了,大二接触了三大件,过后写一个 go 的全栈我的项目,过后看着视频做了个连起来的 webapp,然而还是只知其一; 不知其二,后因为过后(2020.1)网络上没有啥 go 的材料,(学了 gin 和 orm,过后也不想学 java)我也找不到学习的方向,就学了 react,之后在某老师的实验室做前端,react,老师很有想法,做的是理论我的项目,蛮累的,然而很有播种,起初我如愿在大二下拿到了某一线大厂前端实习生 offer,寒假入职,实习中 leader 和 mentor 都很关照我,我也能胜任这份工作,也能取得肯定的成就感,然而蜜月期一过,哪些光鲜亮丽的光环褪去,我看到了前端程序员发展前景残暴的假相。
前端程序员倒退空间很窄,降职难
事实
高级前端很少,T9/P7 以上前端就是风毛菱角,前端组长,个别是某个后盾组的组长专任或者找个前端当副组长,总之,真正前端组长很少,在往上的管理者都是后端或者产品,前端真的见不到。我惟一看到的高级前端是做文档的,有且只有做文档这种真正重前端我的项目才有高级前端的降职机会,其余做 CMS 零碎的前端就很难降职,做一个我的项目,1 个产品,1 个前端,5 个后端,做完上线了,绩效不错,分功绩,后端 5 个中 3 个能降级,产品能降级,前端没有份。前端降职难也就导致前端为了降职须要做的更多,后端把我的项目高质量的实现,不出错就能降职,前端不行,前端必须造轮子,这就导致了前端轮子多,然而能跑的不多,圆的轮子被造完了,就只能造方的轮子,还要吹方轮子比圆轮子跑的溜,降职下来了,轮子就能够丢了,位置就很难堪,一个组,10 集体,就一两个人是正经造轮子的,正经造轮子的也升到高级的门口就有点升不动了,同年龄的 senior 开发者,做后端的个别比前端高。所以当初前端就很多用 node 抢后端工作的,不论适合不适合,造就完事了,前端也就图一乐,真要看技术还得写服务端(nodejs/Ts),redis 集群,分层架构都搞起来。前端想降职就得比谁更像后端,降职卷不了的前端就去搞社区影响力和转行教课去了。
起因
至于前端为什么会落到这步田地,我认为有如下起因
- 前端程序员离业务远。网上有探讨一说前端离业务远就一堆人进去说前端的倒退快,难度不用后端低啥的,少不更事的我被这些花花舆论迷住了眼。的确,前端难度不用后端低,然而,前端离业务远,这是前端最大的弊病,老板要的是业务,不是开发,会跟老板探讨流程和业务的会更失去老板的青眼,后端,产品,都是深刻交换业务的角色,你不找老板老板也会来找你,他们天生就带有“向上治理”的属性,只须要把工作做好就会失去赏识和认可,就是老板眼中的功臣,就能够升职加薪
- 前端程序员很多工夫要做不属于本人明面上工作内容的琐事。产品的需要间接体现在前端,产品个别不懂前后端职责,个别都是指着页面说我要这个我要那个,前端在这里就承当了需要到技术评审的第一环节,须要沟通很多货色,更不要说产品很多时候没想分明需要要改需要个别也是从页面动手,接口改的不多;客户和测试出了问题先找前端(除了接口压测),前端是现网问题的第一个经手者,你可能不须要 onCall,然而出了问题,他们肯定会先找你,你要定位问题,再周知各方;后端常常不论前端的需要,后端经常会随便批改 api 字段名,有很多问题也会抛给前端,比方让你查问列表项所有我的项目的详情来获取某些信息,比方从 a 接口和 b 接口查问不同的信息聚合在一起,你要做很多“服务聚合”的工作,即便这应该是后端的工作,还有的蹩脚后端把树形结构化,很多计算问题都抛给前端,会给前端带来困扰,还有的时候你们定好了接口,你用 mock 数据做好了页面,然而后端说他要改实现,你那他没方法,闹到产品哪里,个别产品不懂后端在干啥,晓得前端在写页面,后端咬住说做不了的时候,就会让前端“辛苦辛苦”。前端来来回回这些工夫都付出了,汇报的时候老板感觉这是你分内的,不是你的“功绩”,你得给我看点别的货色,比方你的“轮子”。(我听过后端最离谱的理由:标签和查问是不一样“重要性”的服务,不能放到一起,你本人查问一下吧)
- 前端技术自动化程度有余,前端工作次要内容差异不大,不须要太简单的设计。前端尽管有很多组件化之类的工作,也有很多公司专门分出 UI 前端开发,专门写款式,然而因为 ui 难以进行正当的自动化形象,前端依然解脱不了原始的生产模式,组件的地位,组件的状态都是要认真的一个一个放上去,这是一个脏活累活,前端其实很大的工作在这里,直到明天还是解脱不了,前端很多工作其实还是写页面,一两年教训的前端和五六年教训的前端在次要工作上根本没有区别,多的是 CI/CD 工具应用,平安工具的接入形式,接入层部署的常识,node 写服务的技能,所以前端其实很容易被代替,要换集体来,也能很快的通过调试工具找到各个代码写在哪里,上手没有什么问题,不像后端,写的不太直观,要一个一个接口找也有很大上手老本,所以换一个前端我的项目顶多推延 1 个月,换一个后端我的项目可能要推延 3 个月,老板更想留住这个后端,就会给他升职加薪。
- 前端程序员整体程度参差不齐,成为了团队推广新技术的阻力。前端的确很缺人,所以会点就会往上赶,非科班,转行的,能用就行,这就导致前端程序员程度参差不齐,你要换技术栈,他得学半天,你要推广 BFF 写服务 node 接入层,他连 sql 和 nginx 都不懂,网络协议也只会常见的那点,更他说 rpc 更是对牛弹琴,新技术推广阻力微小。
- 前端变动太快导致前端代码包袱重大。前端模块化计划当初不说啥了,然而我看到很多我的项目都要要用 CMD 的,这只是很小的一部分,还有用 react16 导致和基于 react17 的库不兼容报错的,更有的是 react15,须要独自拆分两个模块,更不要说 Ts 的问题了,以前没有 Ts,代码保护起来真的是很艰难,接口字段都没有定义,还有有的程序员代码写的真的不太考究,各种不该混一起的混在一起用 if/else 进行分支,各种对象手动赋值,保护老我的项目经常心里憔悴。
- . 老板在前端身上付出的成本低,会认为从前端身上失去的效益低。后端把握的是数据,公司的服务器数据集群的开销次要是后端在用,后端就像老板的理财助理,投入在他身上的资金,流水更多,天然看他更悦目,前端顶多用个 cdn,老板在感情上就没有付出,就感觉这些回报都是后端赚来的,而且后端的货色就像老板的私有财产,前端的货色,他人一下子就能保留和拿到,天然感情上有意无意有所偏差。
- 终端技术大倒退,前端性能瓶颈较少。前端的 app 工作在客户机上,当初客户机性能下来了,没啥性能问题了,性能次要是网络和后端,这就导致前端又少了 kpi 和奉献值了。
破局
很多人钻研图形学,钻研跨端,钻研交互,在我看来其实这些都没有真正达到真正解脱前端窘境,当初前端最次要的不是如何画的更好看,难看不难看是产品和 UI/UX 的工作和功绩,和你没太大关系,前端要破局只有两个方向:1. 亲热业务,成为业务的主导。2. 晋升前端开发效率。
亲热业务:当初很多公司都是一个前端对接 3 - 6 个后端,前端活儿很碎,又因为上手新我的项目快,所以一个前端经常要声援其余我的项目,所以前端身上挂 3 - 4 个我的项目也很常见,在这种状况下,前端很难熟悉业务,产品后端跟一两个业务,搞明确业务和需要也够呛,更何况前端还有很多工夫被其他人的事务挤占,前端想要亲热业务有两个路子
推广 BFF,前端业务化,后端服务化,前端变成 JS 全栈,前端负责买通业务流程和逻辑,后端负责提供高性能存储,解决“存储”这个最大的性能瓶颈。- 长处:开发更快了,接口都由你定,开发很顺畅;前端也能更熟悉业务,更能专一了解互联网经营和商业模式,更理解后端服务的常识,为当前转架构和治理做铺垫
- 阻力:前后端开发者程度无限,后端往往不能很好的设计和划分服务,前端很多开发者对后端无所不通,妨碍了架构的转型,让团队用个 graphql 都够呛,还要前端业务化,后端服务化。
- 毛病:NodeJs 究竟扛不住很高的并发量,开发效率是高,运行效率个别,然而个别业务都够了。不过这些我都懂了我间接进行一个转后端不香吗?
- 做重前端业务:比方比方 gis 零碎,数据大屏,WebGl,甚至转行做游戏。
- 工具建设:前端也想少点“劳动密集型”的工作,老板也想少雇两个前端,你能通过工具建设能少几个前端还能把我的项目推动和实现,就是大功臣,当初前端次要目标不是交互,不是跨端,就是交付!交付!交付!你能按时上线,给产品变更和后端迁延留足空间,你就是最靓的前端仔,所以浏览器插件,IDE 插件,Webpack 插件,低代码平台,性能监控和日志上报零碎是造轮子的好形式
- 转后端:我要转后端了,等我背八股文和算法题进来乱杀。
打开高级前端秘籍,外面写满了学后端
感激大家的关注,没想到一点小小的牢骚,竟然能取得大家如此的共鸣,我真心的心愿所有的程序员都能够跳出本人的圈子,有所涉猎,开眼看世界,成为独当一面的程序员,而不是一个独自定义本人为的前端或者后端。长路漫漫,与君共勉。
ps : 前端好找工作是真的。薪资程度也差不多。