前端攻城狮要想做到全栈,核心在于以下两点:一是要掌握后端不会的UI(界面);二是要掌握前端不会的DB(业务)。当然,不是倡导大家每一点都接触一下,然后号称自己是全栈专家。这样的作死行为,就好比在简历里写“精通”某项技术,面试时一定会被问到。全栈是一种信仰,不是拿来吹牛的,而是用来解决更多问题、应对更多变化的,做到全栈可以让自己的知识体系不留空白,享受自我实现的极致快乐。
我的全栈之路
说起我的全栈之路,大概可以概括为以下几个阶段。
在这个过程里面,我也曾懵懂,也曾迷茫,但我一直信奉“一次只做一件事,尽力做到极致”,短时间内是比较枯燥的,但一旦坚持下去,就会发现技术其实是门手艺,厚积才能薄发。
我没办法说自己最擅长什么,但我知道在什么场景下应该用什么技术。或者说,应变是我最大的本事。很多框架、新技术我都没见过、没用过,但花一点点时间浏览一下,我就能用已有的知识快速理解,这其实是长期学习带来的好处。
现在越来越忙,写代码的时间越来越少,技术发展也越来越快,我能做好的就是每日精进,用这些已有的知识储备跟年轻人比赛。我不觉得累,相反我很享受这种感觉,确认自己还没有被时代淘汰,这是一件多么幸福的事啊!
从后端转
做后端开发的人对数据库是比较熟悉的,无论MongoDB,还是MySQL、Postgres,而对前端理解比较薄弱,可能只会基本的HTML、CSS、模板引擎等。因此,若想从后端人员变为全栈专家,要牢记——4阶段循序渐进,build与工具齐飞!
前端开发的4阶段,我的感觉是,按照顺序循序渐进学习的效果最好。
从前端转
从前端往后端转,API接口非常容易学会,像Koa这类框架大部分人一周也能学会,最难的是对DB、ER模型的理解,即对业务需求落地的理解。
我们来想想一般的前端开发人员具备什么技能。
那么他们如果想在前端领域做得更深入,有哪些难点呢?
以上皆是痛点,所以比较好的办法应该是下面这样的。
从我们的经验来看,这样做是比较靠谱的。先做最简单的前后端分离,里面没有任何和DB相关的内容,前端可以非常容易地学会。半年后,接触异步流程处理和数据库相关内容,学习后端代码,这样就可以做到全栈了。
从移动端转
看一下移动端的发展过程:Native(原生开发)→ Hybrid(混搭开发)→ React Native/Weex →H5。
目前React Native和Weex开发逐渐变得主流,组件化写法已经由前端主导了,国内强运营需求刺激新技术不断产生,这些新技术非常有前途。以前iOS和Android程序员占比很高,但现在只留一两个写插件的人足矣,真是差别很大。
那么面对这样的转变,该怎么办呢?要么忍!要么转!在温水里舒服了几年,也该学点东西了。Hybrid或组件化开发,总要会一样。无论会哪种,你都离前端很近,因为H5或组件化都是从前端走出来的。组件化在前端领域先行,无论借鉴还是学习都不可避免。如果没时间就直接学习组件化,如果有时间就好好学学前端的完整体系,但最终也还是要学习组件化的。
所以从移动端转为全栈最好从Cordova开始,先学习Hybrid开发。
只要入了H5的坑,其实就非常好办了。先学习H5|Zepto|IScroll|FastClick 等,然后再来学习WeUI|Vux(Vue+WeUI)|JMUI(React+WeUI)等微信开发常用的技术,接着“玩”点框架,比如 jQuery Mobile|Sencha Touch,接着来点高级货,比如Ionic Framework(基于 Angular、Cordova),随后进入前端4阶段,依次“打怪升级”,最后掌握Node.js。
这个基本上是我走的路,是我从2010年写iOS和PhoneGap(当时是0.9.3),一路走到现在的总结。
以前技术发展还不是那么快,写Java代码的时候,Apache的开源用得比较多,那时开源的代码托管SourceForge,Google Code也凑合用,自从Git和GitHub出现,代码社交兴起,极大促进了开源的发展,使得大量明星项目脱颖而出。这是好事,如果没有开源,中国的软件水平可能要落后好多年。那么问题也来了,如何能在技术快速发展的今天,同时获得更好的个人成长呢?
学习有3种层次,跟人学最快,其次是跟书(或者博客)学,最慢的是自悟。但是牛人不容易遇到,遇到了也未必有精力教你,书本或者博客上的知识也有限,而对于自悟,如果没有深厚的积累,也是有相当大难度的。
对于开发者来说,代码是一切的基础,在掌握了一定的计算机基础后,人与人之间的差别就在于代码编写能力和眼界。编程没有捷径,能够做到每日精进就是极好的。现在开源代码非常多,能够从中获取自己所需的知识,也是一种本领!如果能够坚持每日精进,其实根本不需要向其他人学习。
大家可以在GitHub上随便打开一个前端项目,里面有一半以上都是与Node.js相关的,各种包管理、测试、CI、辅助模块,如果大家对这些基础信息掌握得非常好,那么学习一个新的框架就会比别人快很多,最重要的是可以“学习一次,到处使用”
很多人问我怎么才能成为一个Node.js专家,我的回答是“如果能在CNode论坛上坚持写文章和开源项目两年,一定能轻松进入 BAT,不用你找他们,他们自会找你”。那么,从今天起,开始重视开源项目,重视Node.js,做到每日精进吧!