全栈的边界?
目前,业界对全栈的认识普遍缺乏明确的定义,有人认为全栈 = 前端开发 + 后端开发,也有人觉得全栈 = 全能,一个人能单独搞定一个产品,包括原型设计、UI设计、前端开发、后端开发、部署上线等一系列流程。这也是因为业界对全栈的边界还没有任何明晰的界定。也因此,很多想往全栈发展的程序猿们要么不知从何开始,要么努力的方向错了,要么走了很多弯路。比如,有些程序猿将自己发展成了什么都懂一点,但没有一门精通的庸才,我前几个月面试过的人员中就有好几个。所以,我认识到对全栈定义好清晰的边界很重要。当意识到这一点之后,我就想起了吴军对工程师的五层分级,如下:
第五级:能独立解决问题,完成工程工作;
第四级:能指导和带领其他人一同完成更有影响力的工作;
第三级:能独立设计和实现产品,并且在市场上获得成功;
第二级:能设计和实现别人不能做出的产品,也就是说他的作用很难取代;
第一级:开创一个产业。
从本质上来说,不同层级的工程师需要有能力独立解决不同层级的问题。五个层级对应的就是:技术、团队、产品、行业、产业。至少达到第五级才能称得上一个合格的工程师。那么,一个合格的全栈工程师,就应该能独立解决跨栈的问题,完成工程工作。往上就需要具备管理能力和产品能力,再往上还需要了解行业和产业痛点,并能做出解决痛点的产品了。
那么,按照上面的标准,既懂前端开发也会后端开发并不意味着就一定是个合格的全栈工程师,因为也许缺乏解决问题的能力。比如我上面提到的庸才,虽然懂前端开发也会点后端开发,但还没达到能独立解决问题的水平。而一个人能搞定一个成功产品的工程师,则已经达到了第三级的水平了。但需注意的是,这是一个成功的产品,而不是你随便练手的To-Do之类的小工具。
为什么要进阶全栈?
移动端和前端开发人员,如果一直只专注在自己的技术领域,那么遇到职业天花板是迟早的事,尤其是在中小企业的开发人员,一般晋升到移动端或前端Leader就到顶了,再往上就很难突破了。所以,如果要打破这困境,就必须广度上进行扩展。一般有两条线,一是转型产品经理方向,那就需要扩展产品技能;二是往技术总监方向晋级,那就需要发展全栈能力。
另外,如果想超越吴军标准中的第五级工程师,不断往上攀爬,也必须具备全栈能力。因为现在的产品已经越来越复杂,不具备全栈能力的人无法hold得住整个技术团队,更无法设计和实现出成功的产品,更别提能看到行业甚至是产业的痛点了。
如何进阶全栈?
就如我说过的,要进阶全栈需要全面发展硬技能和软技能。硬技能是指具体的技术栈,如Android、iOS、H5、Java等,软技能我分为了两部分:基础软技能和技术软技能。基础软技能主要包括超强学习能力、良好沟通能力、解决问题能力、技能迁移能力、全局思维能力,技术软技能则主要是技术栈背后的设计能力、架构能力等。
我开设《进阶全栈工程师之路》专栏的主要目标就是希望为业界培养出更多合格的全栈工程师。以下是目前暂定的专栏提纲,后续根据实际情况可能会有调整。
“全栈”工程师的定义
全栈工程师,英文叫Full Stack Developer,是指掌握多种技能,并能利用多种技能独立完成产品的人 – 来自某百科。
一般理解:【全栈工程师】就是啥都会,啥都能搞,上能入天、下能入地。各种技能各种语言眼花缭乱,各种5杀 6杀 偷塔组合技能,pio pio pio,一人挑起全世界,各个技术栈技术点,前后通吃 疑难杂症统统不在话下,在世达芬奇,全能奇才多么牛x。
然而,真正的全栈是:我也不知道,我从来都做不了全栈而且也不想做啊,只知道,我在web前端行业挖的够深,够猛 够快乐就好了,T 字形人才,下面一竖要足够高足够粗了,才能撑起来上边的 一横。
我只知道,我从网上扒出来的计算机全栈大牛都是:基础知识无比扎实,蹲马步十个小时不带喘气的,从 二进制到 基础电路电位,到计算机运行原理,内存控制原理、数学计算基础、外语适应能力、逻辑思维能力、解决实际问题能力、出疑难杂症解决方案能力等等等等都是一把好手。各种编程语言 和 工具应用 只是他们解决某个特定问题的工具而已,仅仅是工具。
认识几位大牛
发明nodejs 的作者 :Ryan Dahl – 后端语言无所不通,思路绝顶聪明,计算机原理各种666,不然也不会解决多少年来让人头疼的 阻塞问题。
JS宗师人物:道格拉斯·克罗 俗称老道– 是无数前端人的偶像,他从 C语言、Java、c++、ruby、汇编什么的 市面上有的,他都得心应手并且是许多语言规范的发明和贡献者,可谓语言界的“全栈”鼻祖,尤其对js贡献巨大,现在许多web规范和语言范畴都是他制定的。出了十几本畅销20年左右的技术书。
Linux之父:Linus Torvald – 此人更传奇了,可谓颠覆计算机世界,无所不能 ‘My name is Linus, and I am your God’ 这句话出自他口他说自己是神,大部分人是信了。此人会什么自己去百度吧
(在吐槽一下,为了写这篇文章我搜了不少资料,某度tm的搜啥 啥不准,都不是我想要的结果,最后还得翻墙google,再说一句,百度早晚倒闭。邪恶)
自己造火箭的 埃隆·马斯克,这个货确实啥都懂,火箭飞船都自己私人公司造,你想想他各个领域的基础知识和汇聚知识并为己用的能力是有多变态。 不过他再牛,也是需要团队的,期间各个细节也是把控不了的,世界上真的有所谓的全检吗?
以上几位才能在一定意义上说是全栈,基础知识扎实,基础素养和习惯良好,才是成为全才的关键。
否则都是二半吊子,啥都会,其实就是啥都不会
以下几种人,很典型并大有人在:
1.、会个 PHP + js+MySQL就吵吵自己是全栈,前后通吃。
2、会做app、会做网站、会弄数据库、配置服务器环境,自己就是全栈了,有任何问题找我。
3、java、c++ 语言的转型前端 或者去做硬件然后掌握了不少框架 和工具之后,就说我是全栈了。
4、配置了服务器、了解了一门后台语言、听说和查阅过各种前端框架用法之后膨胀的,并立志我要做一个全栈。
我都不想说了,以上几种人在各位的实际生活中,公司中绝对都见过,而且吹牛逼的也很厉害,感觉公司离了他不能转,有任何难题就一句话: 简单,我会啊!结果 他留下的坑比要填的坑还要大。
具体原因
1、基础知识太渣,急于求成表现,盈利
2、坐井观天,会一项或者几项技能之后,自信心膨胀
3、技术浮于表面,经不起细节和解决具体问题方案的推敲
4、缺乏对解决问题的深度思考和负责人的能力
看我总结的公式:
普通人
全栈 = 全干 = 啥都会 = 啥都不会
真全栈
全栈 = 全都不干 = 全都有解决方案 = 各个行业都能干
所以,一开始就要喊 做全栈,你看看自己到底行不行,再来改变下你的定位。
最后结合我自己,熟悉我的人都知道,我除了帅,就是帅了,其实技术也就够吃饭、够撩妹的。
我从来不说自己想做全栈,不说自己啥都会,我总觉得自己啥都不会,三省吾身的,感觉自己知识还是不够牢固,了解的越多,越觉得自己是井底之蛙,还有很多不了解和学不会的,那就不学了吧/笑哭。
虽说我c、 c++、c#、java、php、Python等甚至 vb老掉牙的语言我都写过和学过,尤其是c语言,当年我大学可是名列前茅,但最后我不还是选择了前端 专攻js,毕竟我还是个视觉感性动物。
后端语言经历为我打了良好的语言逻辑基础和解决项目难题的思路,所以没有现在刚入门的新人这么困难,没有后端编程语言 尤其是 c系列语言的概念基础,学js确实有些困难和迷惑。
收尾:如果你真的想做 ‘全栈’,请你结合我以上观点,深刻挖掘自己潜力,务必打好基础体系 架构(这也是我个人一直强调的),不要急功近利,慢慢的往上走,把一门学科做到深入和佼佼者,自然融会贯通,因为世界万物到最后都是 【物质 】二字,都是一样的道理。
但,注意口型:请不要随意做 “全栈(贱)” 工程师。
《小钢聊全栈》