假如你想成为全栈工程师…

jopen 9年前

让我来发挥一下剪报君的特长,下面是百度百科对[全栈工程师]的说明:

全栈工程师,也叫全端工程师,英文Full Stack developer,是指掌握多种技能,并能利用多种技能独立完成产品的人。

上面的定义,基本上已经比较直白了,我们再举两个例子就更明白了。

假如你是一个Web开发者,如果你既能做前端(需要熟悉HTML、CSS、JavaScript、H5以及Bootstrap、EasyUI等各种前端框架),又能做后端(需要熟悉Java或ASP.net或php或Node.js或Go,选项太多就不一一列举了),可以独自一个人完成一个类似电子商务网站的产品的开发,那你就算是全栈工程师了。

假如你是一个App开发者,既能开发Android应用(需要熟悉Java和Android框架),又能开发iOS应用(需要熟悉 Objective-C或Swift以及Cocoa for iOS),又可以开发应用需要的后台(需要熟悉Node.js或Java或Go或……),总之你可以独自一个人开发出一个覆盖Android和iOS的且有业务后台的App,那你也就算是全栈工程师了。

嗯,现在估计我们真的明白[全栈工程师]是什么鬼了。那让我们来看看,假如你想成为全栈工程师,都该了解些什么……比如怎么成为全栈工程师,比如全栈的好与坏,比如选择哪条技术栈来贯通……

全栈ABC

关于全栈工程师,有一些周边是你必须了解的。

对自己产品的渴望

注意,我放在第一位的,不是对技术的渴望,而是,[对自己产品的渴望]。就像一个男人,渴望要一个自己的孩子,99%会选择走“谈对象、结婚、做爱、生娃、养娃”这样一条路。作为一个工程师,如果你对产品的渴望就像那些思子若狂见了人家孩子就想抱走的男人或女人,那你就可能会愿意成为全栈工程师。

一个真正的全栈工程师,会从生活中发现问题,洞察需求,设计解决方案并迫不及待的实现产品。而为了实现产品,他愿意去学习任何领域的知识和技能。注意,他们学习某个领域的知识和技能,并不是为了成为那个领域的专家,而是为了完成自己的目标。他们视野开阔心存高远,不会拘泥于技术,假如挥一挥手,就有产品、设计、开发蜂拥而至为他们开发想要的产品,那他们丝毫也不介意扔掉所有的技术。换句话说,只有在一个人既对产品有迫切的渴望又没人帮他实现时,他才会走上全栈之路。所以,全栈,只是实现目标过程中的副产品,目标,才是首要的。

时势造全栈

前面我们说了,当一个人渴望自己的产品又没人帮他实现时,他如果不能放下灼心的渴望,就可能走上全栈之路。这其实是形势逼迫。那类似的还有另外一种情况,也可以逼着一个人成为全栈工程师。那就是:[加入一个缺人的创业型公司]。

大公司人员充沛,一个萝卜一个坑,个个都是螺丝钉,让你一个人搞定所有事情的概率很小。而小公司、创业型公司则不同,他们往往是人员极度匮乏,一个人得顶几个人用。你搞前端的,后端没人你也得顶上。你搞Android开发的,iOS没人你也得顶上,后台没人说不得也得顶上。就这么着,你很快就全栈了。所以,有一种全栈工程师,是被别人养成的。

思维方式和学习能力

有的人,拿刀逼着也成不了全栈工程师。有的人,把他扔到没电没网络的荒漠,他也可以走上全栈之路。有的人……

这其间的差别,就是思维方式和学习能力。

从思维上讲,要想全栈,你就不能给自己设限。把自己定位在前端工程师或iOS工程师上,任尔东西南北风,咬定青山不放松。这样是不行的。应该心随好猫意纵天高或者鹤舞白沙我心飞翔,总之因时而变、因势而变,需要用什么就学什么,服务器没人搞那我来搞,Android App没人写那我来写……这样打破了自我设限,就具备了成为全栈工程师的基础。

除了这种自我设限的思维模式需要破除,还有一种定势要破,那就是精通每一项技术。对于热爱技术的人来讲,搞精每一项技术是很强的诱惑啊,简直比门口走过的妙龄女郎的吸引力还大。这种思想要破除,因为把门门技术都精通必然会耗时很长,影响你实现自己的产品,所以,只要你学到的那部分能够顺利帮你实现目标,那就可以挥一挥衣袖,继续前行了。

一旦思维上破除了定势,具备了成为全栈工程师的基础,如果你有很强的自我学习能力,那就真的可以顺利走上全栈之路了。而假如你学习能力稍差,面对新技术总是寻寻觅觅寻不到入门的路,那恐怕也把自己逼不成全栈,或者得逼到白头。

全栈的好与坏

全栈工程师的好处就是涉猎技术很广,能够很快运用他所了解的技术开发出产品原型。所以,很多全栈工程师后来走上了创业之路,成了创业者;或者进了创业公司,成了技术合伙人。他们视野开阔,思维活跃,对技术和产品都很敏感,是创业期不可或缺的核心。

然而,正因为全栈工程师的技术是横向发展的,广博有余而精深不足,所以你提到什么,他都能侃上半天,但你要问一些基础的知识点,他可能答不上来。假如全栈工程师不去创业或不加入创业型公司,而是应聘某一个技术方向的岗位,那在面试时就会比较吃亏,因为他用到的大部分技术,细问起来,别人可能都会觉得有了解但不深入。所以,这可能会影响他的求职。不过,如果先一专再多能,然后有意识的选择目标职业,就可以避免这种情况。

选择哪条技术栈

额,其实,对于全栈工程师来讲,往往是没得选择的。比如你做App,你要全栈,你基本上就很少选择余地,Java、Objective-C都是必须的。所以,很多时候是产品和形势选择你成为全栈,是做着做着成了全栈。而不是为了全栈而全栈,假如是为了全栈而全栈,那你是可以选的哦。比如选择 MEAN(MongoDB+Express+AngularJS+Node.js),比如J2SE + SSH + Android + Objective-C + Cocoa……

假如你的目标就是成为全栈工程师,你会发现,哇哦,好多东西要学嗳,吓死人啦。那假如你要做一个产品,比如因为你酷爱炒股,你要做一个简单的股票 App:跟踪自选股行情,支持自定义提醒,界面要清爽干净,平台呢要支持Android、iOS和Web。那你在做这样产品的过程中,就会被逼成全栈而不自觉。因为,做你喜欢的事儿,是不会觉得累的。


最后,娱乐一下,送给全栈er一个来自推ter的段子:

刚来这家公司面试的时候,老板语重心长的对我说:“虽然工资不高, 但是你可以在这里获得快速的成长,这对做IT的人来说是最重要的。”

现在,两年过去了,老板没有骗我,
我看起来已经像是60岁的人了。

——From. Scswga(https://推ter.com/Scswga/status/548684273717215232)

来自:http://www.jianshu.com/p/3ae026814134