现代项目的开发,需要掌握多种技术。互联网项目,需要用到后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、restFul API设计和OAuth等等,比较前卫的项目,还会用到Single Page Application、Web Socket、HTML5/CSS3这些技术以及像第三方开发像微信公众号微博应用等等。
所以说一个现代化的项目,是一个非常复杂的构成,我们需要一个人来掌控全局,他不需要是各种技术的资深专家,但他需要熟悉到各种技术。对于一个团队特别是互联网企业来说,有一个全局性思维的人非常非常重要。
仔细分析,所谓的全栈开发工程师或许也分为两种:一种是做小公司小网站,一个人全包,什么都做,自然什么都会;另一种是大公司大网站,需要整体架构设计师,分工明细,很多人做,但需要人统筹。显然这是两种境界,初级水平是无一精通;高级是无一不精。
在十几二十年前,一个人一台电脑,搞定一个软件,一个网站。那个时候没有那么多细分,也就是客户端-服务器,或者浏览器端-服务器端,最多加上一个数据库端。我有一位老领导,一直沉浸在二十年前的技术美梦中,做什么系统都张口闭口操作系统,CPU中断,似乎一切都很简单,手到擒来。但理智点讲,全栈开发工程师曾经或许可以成为我们的梦想,但是现在的全栈开发工程师只是一个神话。就像招聘启事中和应聘简历中总写“精通XXX”,但其实认为精通的其实也很可能只是了解,最多熟悉而已,潜台词是具备多方面能力的多面手。
全栈开发工程师或许在各个方面或者各个层级都有些实战经验,但几乎不可能成为全栈专家。即使现在是全栈开发工程师,但每年技术都在快速的更新换代,若干年后或许也会发现有许多陌生的地带。不知道企业招聘所谓的全栈开发工程师是做什么,但我认为是这比较幼稚的想法和做法。企业和社会都是存在大量分工的,一个员工前端不错,后端也不错,但稍微大点的系统也不可能一个人全做了。一个员工技术不错,管理也不错,但一定会有一个主要的发展方向。企业最需要的不是全才,而是专才。做架构的专心于全局框架,写程序的专心于局部代码。
我做了十多年的程序开发,曾经自卑过,也曾经自信过,到现在反倒有些迷茫。做的时间越长,发现自己不会的越多。一个人的精力有限,上班要工作,下班要生活,穿插着学习一些新东西。这也想学,那也想学,最终可能变成十全大补丸。历来真正有技术成就者都是思想行为专注者。前端后端,软件硬件,基础理论,程序开发,软件工程,业务领域,团队管理,什么才是自己的核心技能?
由于经常在各种技术穿梭,他会经常忘记代码的语法和一些API,所以他经常需要去查API甚至查语法,他觉得没有Google我几乎没法工作。这在某些人的眼里,是技术不够的表现。他记的只是一个Key,一个如何找寻答案的索引,而不是全部,人脑不是电脑,他不可能能记下所有的东西。