首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全栈工程师的悲与欢

全栈工程师的悲与欢

作者头像
阳光岛主
发布2019-02-18 15:43:09
7200
发布2019-02-18 15:43:09
举报
文章被收录于专栏:米扑专栏米扑专栏

从小米辞职出来创业的两个多月里,通过猎头或自己投简历,先后面试了知乎,今日头条,豌豆荚,美团,百度,App Annie,去哪儿,滴滴打车等技术团队,一二面(技术面)几乎都轻松的过了,三面却没有毕业那会的干脆。

回想两年前刚毕业那会,去百度,创新工场,搜狗面试,一二三面全都一次通过,在面试完回家的路上就接到电话拿到了offer,去年加入小米亦是如此。

工作两年后,随着项目经验的积累,技术能力的沉淀,团队管理的成长,似乎反而更难拿到offer,有些迷惑,有些思考。

经过思考也深刻分析了原因,优点是知识面广,架构设计视野开阔,缺点是精专不足,基础知识不够非常扎实,跟自己的工作阅历有关,原因终在自己。

先介绍一个名词“全栈工程师”,这个词在国外(QuoraStackOverflow)和国内(知乎CSDN)知名论坛的讨论是比较火的,结论也是毁誉参半,详见我的个人博客:全栈工程师的毁与誉

全栈工程师(Full Stack Developer),又名全端工程师,指掌握多种技能,并能利用多种技能独立完成产品的人。简言之,他一个人可以做一个系统。

当年研究生毕业时,放弃了百度,搜狗的高薪offer,选择回到创新工场(注:研一暑假在百度实习半年,后来研二暑假去了创新工场实习,更多经历见CSDN专访),加入创业的潮流中,在一个初创的技术团队;去年又加入小米电视团队,也是一个初创技术团队。

初创的技术团队,优势是它有一个足够大的舞台,能够让你尽情施展自己的才能,发挥自己的技术,拓展事物视野;缺点是业务刚起步,你必须扛住压力,快速学习各种技术,迅速搭建业务原型并上线,核心是解决问题。

在创业公司里,各种快速迭代的业务需求,强力驱使你必须快速的融入团队与技术,从Android应用,到Android游戏,到网页爬虫,到游戏后台,到AWS服务器,到后台接口API封装与优化,用到的技术也是从前端到App,从后台到测试自动化,用到的语言和工具有Java,Python,HTML/CSS/JS,JSP,HighChart,Shell,AWK,MySQL, Memcache, Redis, DynamoDB, MongoDB,Tomcat,Resin,Apache,Nginx,Tornado,又拍云,阿里云,AWS云服务等,犹如一个知识网络栈,一个人全搞定!

广而不精,往往会被认为功底不深厚(实事也可能是),比较难进TABLE(Tencent, Alibaba, Baidu, Xiaomi, 360)等大公司的核心技术部门。

由此,全栈工程师的地位就很尴尬,说得不好听一点,全栈工程师就是什么都会,什么都不会。

他们的技术专长是能够根据不同业务特点和项目周期,合理权衡并选择相应的实现架构和工具,因为他们有着全局性的思维视野和业务经验;

但他们的弱点也很明显,例如在应聘面试的时候,就会很吃亏,在某一专业领域,他可能只会用来解决问题,但研究的不够深入,在遇到深入某一专业面试的时候可能会被提前直接淘汰。

全栈工程师,犹如一匹赤兔马,埋没于千军万马里,遇到赏识自己的伯乐,它将会成为一匹脱缰的战马,驰骋沙场,纵横千里,荡平千川万水,帮助主人成就一番丰功伟业。

面试,在基本技术能力和责任态度都靠谱的前提下,更多的是和面试官的一种缘份。

鉴于此,在简历的项目经验和技术专长里,会特意去掉了一些自己熟悉并能用之解决问题的技术,项目经验也只写一两个具有代表性的作品,目的只有一个:尽力避免给面试官以为自己什么都会,什么都不会的印象。因为大公司的很多面试官,在潜意识里就只招技术专业精专的人才,哪怕在实际项目中用不着那么高深的专业能力,哪怕实际项目需要的是技术面广,更肯学习,更能解决问题的人。

全栈工程师与专家工程师,犹如一个是特战队员手里的瑞士军刀,一个是削铁如泥的干将莫邪。

瑞士军刀负责单兵独入一个人清除掉项目前期的各种技术障碍,快速实现产品原型,验证产品的可行性;

干将莫邪就像项目底层技术的中流砥柱,稳健有力支撑强大的业务技术难点,但需要多柄干将莫邪剑融合才能显示出它的强大威力。

这两个技术方向都没有对与错,发展到一定程度都会相互溶合,就好比中国佛家禅修的南顿北渐,其实到了最后,渐悟与顿悟是一样的,顿由渐中来。

全栈工程师不是全为了工作本身,而是为了方便实现自己的梦想。

工作对于他们来说不是负担,而是一种乐趣;工作已融入了他们的生活,犹如空气和水。

全栈工程师,是一群渴望上进、积极主动、务实肯干、想闯出一番天地的程序员。

他们内心深处不安于已掌握的技术和安稳的工作,他们非常乐意并且会主动去学习一些新技术,新框架,业余时间还会自己动手实践一些小创意,寓学于乐。

工作,学习,技术,小创意,已经成为了他生活的一部分,不断主动的去学习,自然而然的就学会了多门技术,精通多种语言。

技术学无止境,广而不精,这个问题自己也很早就认识到了,也想了很多办法来弥补,例如花大量时间和精力写技术博客,记录自己学习到的点点滴滴,并把知识和技术转化成自己理解的语言;遇到解决不了的问题,会很自然的主动去官方下载源码下来学习;业余时间自己也动手实践,做一些小创意(建立博客音乐盒理财)或写一段工具源码托管在Github上(priorityqueue),来加深自己对技术理解。

在工作之余的周末假日,会宅在家里研究一些自己感兴趣的技术或产品,例如自学Clojure,Go,PHP语言;搭建WordPress博客Discuz论坛;创建微信公众帐号(ithomer),支付宝捐助;捣鼓GAE,AWS,BAE,SAE,Aliyun等各种云服务(对比);安装配置Tomcat,Resin,Apache,Lighttpd,Nginx,Tengine服务器;学习Hadoop,Storm,Lucene,SolrClould,ElasticSearch,Sphinx等工具;跨平台Thrift,Protobuf接口….(不会又是精而不专的“罪证”吧,^_^)

自认自己还不算一名真正的全栈工程师,它只是自己努力的方向,在通向全栈工程师的道路上,业余时间做的小产品,让我感到很快乐,有一种淡淡的成就感。

在中科院,百度,创新工场,小米的学习和工作经历,不仅学会了分析解决问题,更学会了思考。

各种编程语言,系统架构,设计模式在我的脑海里,已经编织成了一张脉络清晰,相互交融的知识网。

当遇到问题,会立刻由点及面快速搜罗合理的解决方案,并快速实现项目原型;当遇到新技术,会发散联想已有的知识体系来对比学习,把它编织进自己的知识网络,最终提炼,磨合,打通经脉,做到融汇贯通,自成体系。

我追求的全栈工程师,是从全栈 —> 精专 —> 精专全栈的迂回辗转,回味甘甜的一条路。

路上,有苦亦有乐,也有说不出的难言与误解,更多的是自己学习奋斗的青春歌谣,自己是快乐着。

以前,软件工程师最在意的是成为某个领域的专家或者高手,例如中国第一代程序员王江民,鲍岳桥,求伯君等。

今天,随着软件技术的发展以及需求的变化,尤其是越来越多的程序员出来自己创业,由于各种条件限制,许多技术上的问题不得不亲力亲为地去完成,因此,很多程序员慢慢地就练就了精通多门技术的本领,有意或无意识之间便成了全栈工程师。

一个真正的Full Stack Engineer,他从生活中发现问题,洞察需求,并设计解决方案,开发出产品原型。为了达到目标,他愿意去学习任何领域的技能和知识。同时他不追求一个人完成所有工作,如果有人可以比他在某方面做得更出色,便会十分热情的邀请他们加入。

Full Stack Engineer的核心并非否定团队和协作,而是更多的体现在架构设计,快速原型,TroubleShooting等方面。随着今天的分层越来越清晰,平台和语言越来越有特点,更加全面的技术人员可以根据不同的语言搭建整个架构。

全栈工程师,在创业公司,大企业,小团队,都可以发挥出他独有的技术特长。这一特长在面试,刚进公司或许还体现不出来,甚至还会有负面的印象(不够精专),但一旦他熟悉了业务,跟进了团队的节奏,他体内的巨大能量将会源源不断的释放出来,对团队的贡献将会是两三个工程师工作量的总和还多。因为全栈工程师,具备了前端后台以及测试运维服务器等多专业知识,沟通成本几乎为零,他甚至可以在不寻求外力的条件下,独立完成整个项目的核心或全部(时间足够)。

工作,只是全栈工程师生活的一部分。

在工作中,由于种种条件限制,全栈工程师的能量很难全部释放出来。

全栈工程师,是孤独的,也是寂寞的,他们在寂寞中孤独。

一个真正的全栈工程师,目标只有一个:创业

2014.07.31 夜

摘自我的独立博客: 全栈工程师的悲与欢

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年08月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档