怎么样成为一个全栈程序员(请把一个能力发展到90,如果你还有余力把另一个能力发展到90,否则就是平庸的废材)
受苏格拉底大神的启迪,我也来谈谈全栈。
禅师:成为全栈工程师,这个问题等于如何成为全才,有可能吗
码农:有可能,不过可能性比较低,因为达芬奇这类人毕竟是百年一遇的奇才。不过,因为我热爱这个行业,也有一定天赋,所以只做好软件全栈的话我想还是可能的
禅师:你玩过三国志这个游戏吗
码农:我还开发过
禅师:你喜欢什么样的武将,诸葛亮怎么样?
码农:不错,虽然他武力只有20,不过智力有100,不过游戏出战不是单打独斗,我可以给他搭配武力100,智力20的吕布,在战场上所向披靡
禅师:对于一个武力65,智力65的武将,你怎么处理
码农:砍头或让他下野,浪费军粮和黄金
禅师:但是他很全面啊,两项能力综合130分,比诸葛亮和吕布的综合分还要高
码农:话虽如此但他还是太平庸,无法独挡一面
禅师:赵云怎么样
码农:这是我最喜欢的武将之一,武力97,智力80,还有一个姜维也是,武力91,智力91,这是我心中全才的标准
禅师:首先,请把一个能力发展到90,如果你还有余力把另一个能力发展到90,再称呼自己全栈吧,否则你只是一个全面发展又全面平庸的废材。
码农:我明白了,我想facebook和google标榜的全栈,也肯定不是一个c++,java,ios,php,blabla都只会编写hello world的全栈。
参考:http://www.zhihu.com/question/22420900
-----------------------------------------------------------------
如果学习是被动的,那么人生也会是被动的。
-----------------------------------------------------------------
我比较喜欢的二句话,一句是:“广度是尝试研究的副产品”,另外一句话:“秒杀泛泛之辈的是一技之长,秒杀一技之长的是博闻强识。”
全栈不是目的,而是顺带的结果,当你职业生涯到差不多的时候,自然而然就是了,或者不是,无所谓的。
成为全栈工程师不是目的,在只有你一个人的时候,你需要独自把脑海中的想法创意变成产品,这时候你就不得不去学习全栈技术。做这件事的目的也许是为了实现人生价值,也许仅仅只是兴趣爱好。
非常同意楼上几位砖家的话,fullstack实际上并不是要你的知识面有多广,而是你要保持接触新事物的心态。在需要迫切解决某问题的时候,愿意第一时间去接触未知的技术、信息,解决必须解决的问题,而后积累下来成为经验,而经验能降低你的学习成本,让你更快的吸收理解未知技术。
兴趣和创业,会刺激你。。我是一个独立游戏制作人,我从事游戏行业已经10年了,以前在国内很有名的游戏公司任职主程序,可以从零写一个3D引擎,后来自己在北美发行一款独立游戏,收入很丰厚就辞职了。我会C++,C#,JAVA,美术方面我会手绘,3D建模,贴图,动画。。每款游戏带给我的利润值得我去做学习和开发。。。。我每天低调的享受自由的生活。。做全栈工程师的秘诀就是做自己想做的事情,各种需求会刺激你去学习。。如果是被强迫的,那么就毫无意义。
全栈或许不需要用一个职业去衡量,更多的是可以理解为一种解决问题的全局思维和有针对性学习的能力。假设你是个技术人才且主要负责前端方面的任务,那么无论你使用何种技能,最终你需要关心的是你或是你的团队是否出色的完成了任务。那么你是否清除当前所做的产品的准确定位,目前使用的前端ui和ue是否符合使用对象的交互习惯,是否要考虑使用更加符合移动需求的前端框架,用户的使用数据和后台的对接是否安全有效,考虑到目前的项目使用的后台脚本语言和数据库,是否要在目前的代码结构上做必要的优化以便于进行后期的维护,如果工程师对于技术的广度和深度有清晰的、全面的了解,这就是全栈工程师在解决这些问题上所具有的优势。 如果你选择了去创业,那么现在问题就变了,原来可能摆在你面前的难题是如何优化自己的工程,现在最大的问题就是如何让你的公司很好地生存下去,为了达到这个目标你就得不断地去学习没有接触过的知识,这时候如果你是个有一定创业经验和社会阅历积累的人,或许你就会少走很多弯路,这就是人们常说的有很强的嗅觉和大局观,facebook喜欢招全栈工程师应该也和其独特的startup文化有关,能草率解决问题的人不如能够彻底解决具体问题的人,而能够彻底解决具体问题的人,还是不能比肩提前预知问题并有效杜绝问题发生的人。
全栈,我觉得是一种学习精神吧。至于在cn,这么浮躁的大环境,全栈=万金油吧
不是为了全栈而全栈,而是解决的问题多了,整个知识体系建立起来之后,就能搞定各种各样的问题了。
自己创过业开过公司的,完整体会过拿到项目,项目分析,然后开发,数据分析,RushDemo,上线,通宵加班,扩展客户端,测试,运营,拉投资,开公司,招人,踢人,被人踢,项目拿钱,避税,追钱,追钱成功,讨债失败之后.....(好多苦逼的事情),最后二次创业之后无论做什么,其实都觉的so easy 一样的淡定。。。
现有的答案已经说明了,以一个正常人的精力和学习速度来说,想在 full stack 的每一个层面都达到顶级的精通显然是很困难的事情。但是做不到这一点就算不上 full stack developer (FSD) 了吗?其实我希望大家留意题主引用的那段英文的最后一句:a genuine interest in all software technology. (对所有的软件技术抱有一种真挚的兴趣)。
我觉得对于 FSD ,尤其是对于想成为 FSD 的人来说,这个态度才是最重要的事情。即使都是 FSD,每一个人各自的技能加点也肯定会不一样,有人在前端更擅长一些,有人在服务器层面更有经验... 但其实没有什么硬性的门槛,需要的是解决任何问题的能力和意愿。你要做到的就是不固步自封在一个领域。遇到问题,就去研究,不因为问题不在你的 comfort zone 就放弃或者推给别人。即使一开始的解决方案很笨拙也无所谓,just learn whatever it takes to make it work. 比如说我要做一个网站,我有一些东西没碰过,但我有足够的兴趣和动力去搞个八九不离十。(这里自学能力很重要,有好的 mentor 也会帮助很大)当你经历过一次这个过程以后,你就会有信心去弄明白更复杂的东西,在之前的基础上进一步去消化、改进、学更多的东西。
另外,我个人觉得这个过程应该是由实际问题驱动的,而不是漫无目的看到什么东西流行了或者觉得很NB就去学。@庄生 的答案里提到绝大部分的网站都活不到或者永远也达不到10k用户在线的水平,那种情况下去看 high scalability 的东西有什么意义?学的东西用来解决或是改进实际遇到的问题,这样你的整个知识体系覆盖面和侧重点会比较合理。打个比方就是你的技能点有限,所以加点方案得有一个主题,到处乱点的话就废了。
回到起点,全栈工程师不是为了工作本身,是为了方便实现自己的梦。如果不是创业,我的价值可能也就是个2w 多工资的架构师或者技术经理,这个价格远远对不起我这13年的付出。一个真正的全栈工程师,目标只有一个:创业。
-----------------------------------------------------------------
一个真正的 Full Stack Engineer ,他从生活中发现问题,洞察需求,他设计解决方案,并开发出初始版本的产品。为了达到目标,他愿意去学习任何领域的技能和知识。同时他不追求一个人完成所有工作,如果有人可以比他在某方面做得更出色,便会十分热情的邀请他们加入。
最终他的职位也许不再是 Engineer ,他不再设计 UI ,不再写代码 ... 他的工作不再是 design and building an app or product,因为他有更大更重要的任务要做 - design and building a team or a company which builds great products.
而这时,社会给了他们另一个称呼 - 创业者。尽管众人已忘记他们 Engineer 的身份,但在他们骨子里,内心深处,自己始终都是一个 Engineer 。当他们需要从头再来时,他们毫不犹豫从设计开发产品做起。Nikola Tesla,Ferdinand Porsche,Henry Ford,Jack Dorsey,Mark zuckerberg,Elon Musk ... 细数那些改变了或正改变世界的创业者,他们大多数是 Engineer 背景,热衷于设计创造。他们学习技能和知识,不是为了成为某个领域的专家;而是因为那些 是完成自己目标所需要的。
-----------------------------------------------------------------