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