前端现在有发展前途吗？
我全职从事前端工作，到18年年底整两年，加上之前个人关注和工作中兼顾前端，将近四年。在做前端之前，我是那种跟在销售后面，他投标，我负责把他吹的牛逼变出来的板儿砖型程序员，什么语言和技术栈，根本不是借口，deadline放在那里，让你今天学一个技术栈，下周项目上线的事情，时有发生。我工作4年以来，对服务端，移动端，桌面端，和一些行业专有领域，都有过或多或少的涉猎，所以我对前端在整个技术图景中的位置和形态，一直有观察和评估。  在这期间我见到过各种各样的前端项目，既有大型企业级项目，也有精致的单一功能产品。到目前为止，我自己见识过得，认为可以某种程度上代表前端上限的产品有—— 单一功能产品，国外的有：gmail，office online，mapbox，niagara（一种智慧建筑管理系统），react，vs code等。国内的有：石墨文档，厦门hightopo的webscada，QQ空间，淘宝双11大屏，echart，白鹭引擎等。 我认为以上产品，在单一功能复杂程度，以及实现水平方面，分别在国际和国内代表了当前最高水平。 企业级的大项目，不好衡量，但是从业务复杂程度和可见部分的架构水平而言，一线互联网公司（比如facebook/google/阿里）的支撑系统，以及业界领先的企业应用产品（比如saleforce/aws/微软），应该是目前最棒的。 我认为这些产品，从工程管理和前端架构方面，代表了业界最高水平。  如果以以上产品为标杆，我们可以大致这样说： 第一，在单点技术深度方面，前端的上限，不会超过桌面时代的native应用。 第二，在整体架构和项目管理方面，前端的上限，不会超过当前主流的大型后端项目。  所以如果有人标榜什么前端技术，那是忽悠人。前端在深度和广度上，和其他领域比，都谈不上什么超前和优势。  那是不是说前端在技术上就可以什么可取之处呢？我认为也不是。  首先，前端是一个比较综合的领域，即有抽象的架构，又有具体的界面，对于综合能力的要求和培养程度比较高。在前端，埋头做一个小局部不关注整体，是很难跟上发展的。比如很多人因为技术栈老旧跳槽的时候不受欢迎，然后就有外人觉得这是因为前端浅薄，技术积淀不稳定。其实这不是主要原因，主要原因是新技术意味着新问题，你对新技术无感，意味着你已经很久没有解决过，甚至意识到新问题了。  第二，前端领域的业务问题往往更加难解，确切的说是更加难以定义。所以对开发人员的业务理解和抽象思维，有更大的考验。前端面临的问题，常常不是没有解决方案，而是连要解决什么问题都定义不清楚。好不容易划出一个子集定义清楚了，又发现涉及的相关方太多，从产品到设计到技术，很多时候前端表面的任务是设计一个方案或者完成一个功能，背后的逻辑却是要去引导一大群人的行为。  第三，我不知道这么说是否确切，只是我个人的观感——我觉得在技术水平从低到高的序列中，前端程序员能比后端程序员更早接触到“技术”或者“架构”的部分。  比如单点技术，表面看完全不一样的产品，后端模型可能是非常相似的。这就导致后端开发面临的问题其实也是高度相似的。而对于前端，当你度过了初级阶段，开始技术分化的时候，表面上看起来不一样的产品，那技术上也就完全不一样。你做数据可视化，你就要懂图形编程，你做编辑器，你就要懂编辑器领域的数据结构和经典实现方式。  而架构，或者说设计的部分，在后端微服务和云当道的时代，作一个普通的业务后端实在是太幸福了，或者说太容易了，躲在gateway后面写增删改查，某些时候往mq里面丢几个消息，就完事儿了。什么分布式之类的事情，可能一个大团队里面，只有一两个人需要关心。但是前端不行，刨除那些有枣没枣打一杆子的小作坊项目，任何一个稍具复杂性的项目中，一线开发的前端要是不关注架构，代码马上就会爆炸。这某种程度上意味着前端技术体系的孱弱，但是从历史的角度看，界面开发的繁杂程度之高，细节之多，理论模型之无力，确实是很多年来一以贯之的现象。  总体而言，前端与其说是一门技术，倒更像是一门手艺——不是说你掌握了一个什么技能，就一定能解决一个什么问题。很多时候，它更需要你心灵手巧。  回到问题，前端现在好不好？我觉得还行，至少不算是夕阳产业。虽然在话语权和成为中层/高管的路径上有劣势，但是对于大部分人而言，成长空间还是比较大的。有没有发展前途呢？我觉得还是有的，至少门槛不会越来越低，上限也不会越来越低。迄今为止，不管是前端内部的新技术，还是整个计算机领域的新技术，其实都没有在降低前端开发难度方面获得很大的进展，人的因素，在可见的未来还是占主导地位。
可以去问问后端程序员有前途吗？ web领域百分之九十的后端一样是mysql增删改查。 别看不起业务，大部分情况下不需要你去搞多大的领域。 天花板这个东西是自己给自己涉限的，计算机又没有阻止你去学习。 不论前后端一年经验吃三年的比比皆是，前几天不还有个java jdk该不该升级的问题吗？你看看下面多少人的回答，对得起自己当年刚入行拯救世界的心态吗？ 比比皆是，不求无功，只求无过的做人理念，有时间和精力的情况下都不去挑战提升自己。还把锅甩给业务。美其名曰 稳定。 那你以后更稳定，操手一个项目的升级所学到的东西能比自己看文档提升的小吗？？？ 其实 不论哪个岗位你只要比同龄的人同岗位的人一直努力优秀一点点就好了，不要那么好高骛远 程序员这个问题本质上是人的竞争，计算机也是为了解决问题出现的 如果你想当一个计算机科学家你不该这么提问，如果你想当一个程序员你更多的应该问问自己喜欢的领域，这是一个不学习就淘汰的行业。 从业务深入角度来看怎么都有天花板，既然你写不出vue reac ag但是也没人阻止你去深入学习理解它们，技术上来说没有壁垒。 作为一个前端完全可以在熟练的体系下发展新的知识 没人阻止你学习啊 想学后台 可以先node，如果觉得node不行了再去捡起来java也不迟啊，本质都是http协议更本质都是计算机网络操作系统，没人阻止你进步啊。 程序员鄙视链是一个鄙视程序员本身的链条，不是一个鄙视程序员岗位的链条。 作为一个前端你后台不说100分 你懂个60分不过分吧，在稳定的发展完岗位技能后，完全可以抽点时间去学习你喜欢的东西。 难吗？难。 笨吗？笨。 但是花了时间学不会吗？ 即使你面向工资编程 那你也要超过同岗位的人为目标。   所有的前提建立在你至少喜欢明白你的职业。 这行门槛不高是真的但是挺拼意志力的。 