全栈的定义是什么? 度娘给出的答案是:
全栈工程师,也叫全端工程师,英文Full Stack developer。是指掌握多种技能,并能利用多种技能独立完成产品的人。
相信很多人不认同此观念,但是不得不说,绝大多数的开发者都以此为目标。近段时间在工作中,频繁的与同事聊到这个话题,也让我深思了一下。
以实现一个电商APP作为例子:
使用Java之中的maven项目管理,以Spring + SpringMVC + MyBatics作为服务端框架,以RestFULL形式提供API接口。数据存储使用MySQL,使用Redis作为缓存加速。刚开始可能由于不够熟悉运维,设备云服务都在阿里云和七牛上购买现成的。将整个需要制作的需求全部理清楚,API接口开发完毕之后。可以开始书写前端和客户端逻辑了。
JavaScript对于每个后端的开发者都是一个较为头痛的问题,好在与朋友咨询过,前端页面使用Google的AngularJS作为MVVM框架,使用Bootstrap作为UI,使用Gulp作为整个项目的打包工具。调用之前自己封装的接口,终于能够出现一些商品展示页面了。
这个时候开始书写客户端了,Android客户端开发之中在github上淘了一些华丽的第三方控件,使用OkHTTP、Retrofit作为网络框架,EventBus作为整个APP中的事件流传递系统。配置使用Gradle并使用第三方的360加固保护自己的APP。iOS开发使用AFNetworking作为网络框架,JSONKit来解析协议之中传输过来的JSON。等~
左青龙,右白虎,老牛在腰间,龙头在胸口。人挡杀人,佛挡杀佛的不叫全栈工程师,而是一个公司之中的救世主。他凭借一己之力,减少了公司内部的沟通成本,人员招聘成本,帮助画饼的CEO,把饼变成了现实。对于这样,我只能说“请收下我的膝盖~!”。
然而,这样的人存在吗?
根据格拉德威尔的10000小时定律,希望熟练的掌握前端、后端、客户端方向的知识内容,每天都花时间来专研也得花10年左右的时间。大多数自称为“全栈”的工程师,都停留到这个方向我“略懂”的境界。至于具体如何实现,如何让架构更时候后面阶段的模块化开发,那就真不知道了。
国内的公司基本很少在自己的招聘JD上书写自己需要招聘全栈工程师,很多CTO的职位所描述的也不是对一位“全栈”的要求。。Facebook的一位员工就曾在OSCON上说他们只招聘全栈工程师,这样很多了解很多方便技术的人才都欢欣鼓舞。然而,“全栈”指的不是掌握不同方向的技术,在Facebook工作的朋友之前就和我说过,自己曾是一位做推荐系统方向的专家,然而由于Facebook部门内部的人员变动,自己却要扛起整个部门系统架构的事情。随着公司业务的发展,每个缺少人力的方向都会得到补充,这里的“全栈”所指的更多是,在业务需要的时候迎难直上的自我学习能力与责任担当能力。并不是让一个人亲手的完成公司内部的业务,这从时间成本、精力成本都不现实。这样的“全栈”工程师才是Facebook所真正需要的。
对于创业公司来说,“全栈”工程师无意是一个香饽饽,因为这么一个人对于创业公司来说,能够解决很多的招聘成本。鄙人的朋友小B,在大学的时候学习过Java,毕业之后现在一个初创公司使用Python写过1年的网页后端,后面发现公司的业务发展需要,自己又转头回去从事Java的开发。近两年由于iOS的大力发展,工资待遇也不错,自己又转行去做了iOS APP的研发。自称自己为“全栈”,从起频换更换技术方向来说,我并不认为他在之前的那几个方向都擅长,反而模糊了自己的定位,弄不清楚自己想要什么。对一个企业来说,我招聘Python工程师、iOS工程师、Java工程师,他都能算是中级(也许还算不上)。这个时候,除了跳槽去一个不懂技术CEO的初创企业之中扛大旗,其他也别无他法。
如同我们公司的CEO一样,公司初创的时候,自己得做PR、市场、金融产品采购、企业注册、工资发放、融资、产品需求确定、以及扫地阿姨。但是,HR+市场+财务+PM+扫地阿姨 ≠ CEO,只要CEO的事情他们没有做好,其他方向他做的再好那也是百搭。一个牛逼的人,能够在需要他的时候承担一些之前没有从事过的工作。反过来,一个每个方向都做得得心应手的技术小能手,却未必是一位牛逼的人。
希望奋斗在一线的年轻工程师不要迷信“全栈”的歪理邪说,把自己的精力都投入到学习井喷式的“新技术”之中。明确自己的目标是什么,系统架构师? or 客户端安全专家? or 推荐系统大神? 每个方向都感兴趣就等于没有兴趣,“略懂”足以能够帮助你在后面的工作中减小你与别的工程师沟通的成本,“深究”一门技术才能然自己的眼界变得更宽。毕竟技术在进步,时间不等人,锚定目标,才能不断的接近目标。最后,给大家几个建议:
尝试与别人沟通自己的想法——不做困在笼子里的孤鸟
学会阅读英文文档——拒绝阅读英文意味着永远只能接受别人的二手资料
要做思维迁移——IT技术本质是相同的,打好技术才能以不变应万变
对自己负责——所有你发现的问题,都是你的问题
.
移动一小步,视界大不同!
更多程序员技术交流,奇闻轶事,
联系客服