怎样成为全栈工程师?

为什么要成为所谓full stack engineer? 这个full stack engineer 的概念要理解清楚,我个人认为不是说要成为一个全能工程师。
先 讲个自己的故事,我是从90年代初就开始做技术的,那时候没有互联网、没有开放代码、没有各种平台,资料都是去书店去买,一本书里面真正有用的就10来 页,雷布斯当时写了本《未公开的dos中断》,当时奉为天人,后来知道是翻译的。做应用要懂dos,要懂各种bios的中断,要会用汇编,要会用c,要会 做网线,要会装服务器(那时还是netware的天下),还要会手动查查病毒,读懂分区表,要自己写sql和sqlform去实现用户应用需求,甚至在 DOS里面自己做字符的界面管理和鼠标控制,还要用汇编写中断去控制调制解调器和打印机,因为用户不愿意多买服务器(当时服务器好贵)写个简单的 tcp/ip的堆栈….
这 个够full stack吧,当时觉得自己真的属于上知天文下知地理,但是时至今日,这些本事有什么用呢?我觉得基本没用了,而且随着经历的丰富,反而觉得过去自己浑身 的本事都是雕虫小技,不懂的东西好多好多,真正有用的是留下来对项目的经验和架构的体会。IT行业发展到现在,和社会发展一样,进入了社会分工明确的时 代。每个方向深入下去都是大的不得了的东西:
1 你说你懂操作系统,能给linux提补丁吗?
2 你说你会运维,sed,awk,sar,snmp这些东西你都是活字典吗?
3 你说你会数据库,一条复杂sql能不看explain就能知道怎么运行的吗?看了explain能知道数据库的索引问题在哪里吗?知道怎么改吗?
4 你说你会网络,看过tcp/ip源码吗?知道wifi里wep,wpa aes的区别吗?知道千兆线和百兆线物理上的区别嘛?
5 你说你会web编程,看过http的rfc吗?看过webkit代码嘛?
6 你说你会大数据分析,概率论的几十种分布都懂嘛?每种分布适合那种情况知道吗?或然率公式会推导吗?
7 你说你会C/C++,你知道不同编译选项出来的优化代码的顺序吗?
。。。。。
真 正要懂一个技术,不是仅仅看几本书写几段例程就行的,都得实际干几个能上线的项目才能知道这个技术的坑在哪里,适合什么,不适合什么,出了问题大概怎么回 事。这件事从人的精力上来看我个人觉得是不可能的,而且做到了也没什么意义,最多就成为一把瑞士军刀:什么都能对付两下,真干专业的活那样都不好使。这对 一个技术人员真的不是什么好事,因为工程师是要实际动手干活的。
我 建议工程师的可以成为临栈工程师而不是一个全栈工程师,所谓临栈就是对于自己专项工作相邻的一些技术要有一定的了解,类似母语之外的外语。比如做后台的工 程师,对数据库要有点了解,或者对tcp/ip有点了解。做前台的工程师,对http要有点了解,对图形学、色彩学有点了解。这样有助于在工作中和团队中 的伙伴更好的交流,实在不行时候也能对付两下子救救急,或者证明不靠谱的伙伴做的确实猪头。但是,记住了,这不是你的饭碗,除非你打定主意改行。
当然,你要是想做那种光说不做的工程师、顾问呀什么的,那是另外一回事了。瑞士军刀也是有市场的。
歪楼结束,回到问题。
如何成为全栈工程师,我觉得是机遇,就和民国初期出了一堆学贯中西的人一样,不是他们多牛,而是时代造就:
小时候读私塾,国学童子功没问题。长大取消科举,留洋好找工作,不到20岁就去留洋,回来以后一看,我靠,学贯中西呀。
如果你每3年换一个方向,每个方向都扎的很深去做实际项目,还要复习过去的知识并跟上发展,你就可以成为一个full stack工程师。祝你成功!

未经允许不得转载:SuperMan's blog » 怎样成为全栈工程师?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址