开始
不知不觉发现自己已经快30了,古人说三十而立,在这个岁数是应该找到自己安身立命之本了,但是此时此刻的我感觉确十分迷茫,为什么?因为我是个程序员,是个小前端开发(哈哈哈);正如同很多前端开发那样,迷茫的是前端开发未来的出路是什么?
技术or管理
很多人面试的时候,十有八九都会被面试官问到你的职业规划是什么,笼统概括,一般都是:有人继续想深耕技术,有人想带人做管理。这也是大多人能够想到,或者说能够达到的一个未来发展,那么从自己个人的角度来分析,技术路线or管理路线,哪个会更加适合自己。
技术路线
前端这几年发展十分迅速:
- 前端框架从jquery到mvc,再到mvvm框架;
- 开发语言从coffescript到es6/7,再到ts;
- 脚手架从grunt到glup,fis3,再到webpack等等;
- 领域也从传统web前端,到服务端(nodejs),到移动端(rn,weex),再到桌面(electron);
既然发展那么迅速,涌现了那么多新的技术,为什么前端危机感还是十分之大尼?
- 前端技术入门槛依然比较低,这对于一项技术来说或许是一件好事,能够让更多的人进入这个领域;
- 前端技术天花板也比较低,当然这个观点不一定大家都同意(毕竟前端有nodejs,有webgl,这些技术天花板并不低);
- 前端技术离核心业务和数据太远,这其实与管理路线关联更加之大,不过这里既然谈危机感,就不得不提到这点;
- 前端技术没有突破性革新
- 最后一点,在移动互联网时代,web前端并有分享到这块大饼(原因很多),所以同样是客户端技术,安卓/ios开发在公司话语权都比web前端要大(毕竟江山都是他们打下的),甚至有的公司会把web前端归入到安卓/ios客户端管理里面去。
现在再慢慢分析为什么会有这些问题:
- 入门门槛低;js本身就是一门非常容易学习的语言,甚至我个人觉得以后小孩子入门编程,都可以从js上手;js发展曾经一度十分滞后,很多语言特性都是最近这几年疯狂打补丁上去的(async/await,es module等等),其实这一点也成为后面nodejs发展的一个隐患;对于js这门语言,我觉得有一个更加大的隐藏杀手是webassembly,不知道为啥,很多人都觉得wasm不会对js造成多少的冲击,他们的理由大都是引用文档(wasm是js的一个补充并非替代),wasm当前无法直接操控dom;先不说wasm是不是js的一个补充或者替代,毕竟使用用技术的是人嘛,你想要替代就替代补充就补充,从来不需要受文档限制;但可能最根本的一点就是wasm无法直接操控dom(目前还是要通过js间接操作,会抵消wasm的性能优势),这也是大部分jser觉得可以高枕无忧的一个原因,但是从wasm发展目标来看,直接操控dom会有的,gc也是会有的,只要有那么一点可能性其实都不应该掉以轻心。
- 前端技术天花板比较低,如果是过往几年或许没人会反对,但是最近这几年前端发展迅速,观点就有点变化了,所以最近这几年,前端把js关联的技术:nodejs,rn等等都纳入到前端范围了;这当然有了新的技术,也有了新的领域,我们的技术天花板又提高了一些;但是我个人认为,大前端最大的问题是整个都是围绕js生态的,js生态强自然就会有市场,所以关于第一点,wasm会不会动摇这根柱石真的很难说;而且我们看到前端的一些技术选型一般也是以围绕js去选的,搞服务端就找nodejs吧,别无二选,甚至愿意花费精力从零开始搭建一些监控或者发布运维平台(其实个人了解的一些公司确实没有成体系的nodejs开发设施);搞移动端跨平台吧,选rn,weex,也基本无视flutter这样的框架(之前很多人吐槽就是dart不是js,还要多学一门语言,真心短视守旧);我个人感觉前端若是想把技术的天花板提得更高,或许需要跳出js的生态圈,有时候背靠后端团队,或者android/ios团队去选型技术会更好,为啥搞前端搞后端开发就不能选个go,移动端搞跨平台就不能选个flutter,从技术评估来说,上手难度也不高,未来几年发展潜力也不错。
- 前端技术说真的没有什么突破性的革新,依然受到限制很多,整个web应用开发模型也没有什么改变,想一想为什么前端没有吃到移动互联网的大饼(移动互联网前中期简直就是web开发者的漫漫长夜,后期才算有点甜头)无非是性能,没有访问硬件的能力,还有体验等等没办法满足用户,这真的是要吐槽的,web的进步实在太慢了,极有可能下一个时代我们还是要吃别人的残羹剩饭,这也是导致有部分开发者挤破头也要挤进服务端领域,为web开发多开一线发展的空间;5G时代,web理论上有很多机会,毕竟网速上去了,web应用也可以承载更多的功能,希望浏览器作为web的容器能够提供更多的能力,我觉得甚至提出一种完全新的应用模型都可以,只要它能够充分发挥硬件的能力,提供给用户媲美原生级别的体验,那web还是大有可为的。
- 前端技术离业务比较远,这个几乎无法反对了,所以感觉在第二点的时候,有些团队会强力推行落地nodejs,其实nodejs能不能在服务端开发占有一席之地,某乎上也是撕逼了很久;不过尼,我所了解到的,有成体系node开发的公司真的不多(也可能是我孤陋寡闻吧);所以我才想到,如果我们落地nodejs这项技术,如果目标是为了接触到业务的核心,或许大可不必选nodejs作为切入点(当然前端选nodejs,完全合情合理),选个go语言也不错,学习成本不算高,也没有太多历史包袱,或许你的后端团队或许也已经有计划或者已经在利用go搞些项目在开发,完全可以共同交流,共同建设基础设施(这可能是我的个人一厢情愿的想法,哈哈哈)
- 移动互联网时代,前端开发确实没有吃到这块大饼,毕竟我们的体验一直比不上原生开发,无论是使用体验还是功能特性;希望最后半场,我们这个机会赶上吧。
总的来说,走技术路线,如果一直围绕的js来走,感觉将来会越来越窄;或许多做一些其他技术的储备更加好。
管理路线
管理并不是自己擅长的领域了,但是我知道人的管理有时候会比代码难写多了;不过尼,前端开发当前端技术的管理是可以的,但是当项目组的技术管理,这个大家都知道,项目组技术的管理大多是后端出身,毕竟刚刚也说到,后端开发更加接近核心的业务和架构,说明一个什么问题尼,核心管理岗位留给前端开发的不多,竞争压力会更大,对业务的不够深入了解,也影响着能否更上一层楼;
还有作为技术出身,是不应该选择纯管理的路线,除非在一家相当稳定的公司;感觉更倾向于技术+管理这种路线,既要保有自己的核心竞争力,又要拓展一些自己的附加能力。
结束
说了那么多,其实还是没有一个很明确的结论,只抛出了问题,或许日后我会知道答案吧。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。