在我阅读到《也谈谈全栈工程师》这篇文章之前,对于全栈工程师这个名词我也只是听说而已。在我印象中,全栈工程师不过是懂得前端后端的全能选手,只不过两头涉猎都不精罢了。而在看了那篇文章过后,发现自己对全栈工程师的理解是如此浅薄,甚至还有偏差。作者作为一个全栈工程师,有着对自己职位独到的见解,令我受益匪浅。
在《What is a Full Stack developer》这篇文章中有这么一句话:
To me, a Full Stack Developer is someone with familiarity in each layer, if not mastery in many and a genuine interest in all software technology.
这句话说得很清楚,基本上和我当时的理解一致。全能选手,懂得前端后端的大部分知识,包括服务器、网络、主机环境,数据建模,业务逻辑,API层/Action层/MVC,界面,用户体验和理解用户、业务所需。然而我觉得最后半句话才是重点:对所有软件技术有着极大的兴趣。没错,为什么有人要成为一个全栈工程师?知乎一个帖子的赞最高的回答说得比较好,我看过之后也是有很大收获。他拿facebook只招全栈工程师为例,说成为一个全栈工程师需要那些素质。事实上经验不重要,重要的是思维方式和学习能力。作为一个全栈工程师,势必要接触到许多过去不了解的知识。当你在做项目的时候,你大学学的是后台的技术,比如数据库或者数据挖掘等,这时有一个前端JavaScript的问题需要解决,这对于你来说简直是一窍不通,那么你愿意去解决吗?我想大多数人都觉得这是前端工程师的事情,与自己简直毫无关系。这在大公司也许是行得通的,但是如果公司里没人能解决,是不是永远都不用解决这个问题了?这就是全栈工程师的思维方式,不要认为自己是只做前端或后端,一切的知识自己都需要去了解,有问题出现,就需要你立即找学习资料去学习来解决问题。这里就体现了学习能力对于一个全栈工程师的重要性。
很多人觉得,自己专精某个方面,比你什么都会但不精的万金油要好得多。的确,如果在大公司,各自分工明确的情况下,你一个万金油,确实不会受到老板的待见。所以全栈工程师目标往往只有一个:创业。只有在创业的小公司,人手不足,没有DBA,没有运维,没有开发,没有前端,甚至没有产品,没有人事...这种情况下,往往一个人要充当多个人的角色。这才是全栈工程师的用武之地。全栈工程师往往在不断的学习中体现自己的价值。在这里又提到了学习能力,全栈工程师的知识广度往往要比一般的工程师要广,他们有着更广阔的视野和更全面的知识,这对于他们来说是一笔巨大的财富。因为对于他们来说,完全可以对一个软件或应用,从上到下,从软到硬提出一个全面的设计思路和解决方案,他们对产品的设计和理解比起一般的工程师或一般的产品经理要强大得多。这也是全栈工程师创业最有威力的一把武器。
文章的最后作者用了一个词来评价全栈工程师:视野。我也十分地赞同,这无疑是全栈工程师最亮的一个标签。