很多刚从事Java开发的同学都有一个疑问,到底是向全栈式程序员方向发展还是做精通某种技术的专才?对于这个问题也是见仁见智。 在给出我的观点之前,我们先来分析一下全栈工程师的种类和专才的种类 ,之后关于这个问题的答案就很清楚了。

所谓全栈工程师并不是说要熟练精通的使用很多技术,重点在于要知道很多技术,这句话有点绕,举个例子,就是十八般兵器不用样样都很熟练精通的玩,而是要知道江湖中有十八般兵器,且知道每种兵器的用途是什么。 全栈工程师在我看来有两种,第一种是各种技术虽说都懂点会点,就是十八般兵器拿起来都会耍,但是每一种都只能耍到一两层功力, 第二种就是不仅是各种技术都懂点会点,而且是有一门技术特别精通,这第二种有点像我们说的专才,呵呵,接着看,我们后面分析。

我们再来看看专才,必须至少在某种技术上是特别精通的人才能称为专才,我认为也是分为两种,一种是精通某种技术,但也是仅仅知道有这种技术,比如,我精通耍大刀,但我也只知道江湖中有刀,不知道还剑戟等其它兵器,呵呵,这种是孤陋寡闻的专才;另一种相反,除了精通某种技术之外,还知道有其它技术,且了解它们的用途,比如,我虽然只精通耍大刀,但是我却知道江湖种还有其它兵器,并且对于其它兵器也了解它们的用途,这种专才是不是很像前面说的第二种全栈工程师?

所以综合上面对于全栈工程师与专才的种类分析,总结出工程师其实是有两类的:

第一类是不牛的工程师,包括第一种全栈式工程师(这一种工程师不用花很多精力就可以做到,功力不深厚),和 第一种孤陋寡闻的专才工程师,(这一种工程师肯定是有瓶颈的,而且容易闭门造车);

第二类是牛的工程师,包括第二种全栈工程师与第二种专才工程师(第二种全栈工程师其实就是第二种专才工程师),它们共同的特点是:全且专,这一类才是我们发展的目标;

将工程师重新分类后,我们再看看最初的关于全栈与专才的选择问题,就会发现问题本身太笼统了,所以问题应该变为:我是向牛的工程师发展还是向不牛的工程师方向发展?

我认为全且专是成为真正牛的工程师的必然或自然的趋势。因为只专的话,我想也不会专的很深,因为孤陋寡闻闭门造车,不能吸收其它技术的思想和优点,只是全也不行,浮于表面。

另外关于时间和精力的问题:我怎么可能有那么多时间和精力做到全且专?还是强调一下:这里的全且专是指了解的很广泛,但是只对某个技术进行专门研究到精通,不是说的对了解到的技术都做到精通。做到全是很容易的,不会花很多时间和经历,然后你就可以把剩下的时间和经历用在钻研某种你感兴趣的技术上了。