做者:Alex Ronin翻译:疯狂的技术宅前端
原文:https://frontnet.eu/how-to-be...程序员
未经容许严禁转载面试
“如下文章已经完成了很长时间,因此文章提到了一些旧技术。”数据库
全栈开发工程师的话题是目前存在的最热门话题之一,对其的争议每每没有尽头。编程
在 LinkedIn 和 Facebook 上,有不少人将当前的工做标记为全栈工开发程师。在 Medium 上关于这个问题的文章也收到了不少读者的好评。一些人认为应该专一于我的技能和对技术的深刻理解,而不是把精力放在像全栈工程师这样含糊不清的东西上。segmentfault
从我的的角度来看,我认为主要是辩论的目的是将全能的工做人员与 IT 行业的熟练专家进行比较。当提到每一个人的技术能力时,这指的是“广度”和“深度”两个属性。后端
“须要 9 我的的工做会超过 9 个职业” —— 个人父亲曾经这样呀教导他的子女。“要真正精通一件事,而不能样样稀松“。可是全栈开发工程师则要反对这个建议,挑战本身不只要熟练掌握一种技术,并且要熟练掌握多种技术。设计模式
Quora 解释了什么是全栈开发工程师:缓存
全栈开发工程师,能够处理与数据库、服务器、系统工程和客户相关的全部任务。能够用移动、Web 或原生应用等技术栈独立完成客户须要的项目的要求。
实际上,全栈是项目所需的一系列技术的集合。 全栈开发工程师是指可以在许多不一样领域协调其知识而无需额外帮助来实施项目的人。服务器
在 OSCON 大会上,一位 Facebook 工程师说,他们只招募了全栈开发人员,这引起了对选择这条道路的人的优缺点的争论。
凭借普遍的技术理解,全栈开发工程师能够快速完成产品原型,具备比其余工程师更开放和主动的外观。因为技术敏感性,这些人还为产品提供了许多有用的想法。
从另外一个角度来看,全栈开发工程师能够帮助团队最大限度地减小技术或通讯问题的时间和成本。
许多全栈开发工程师后来成为初创公司的创始人或技术顾问。
当选择横向发展技能时,他们必须接受缺少深度的不足。一些全栈开发工程师没法掌握某种技能。甚至许多人都声称本身是全栈开发工程师,但只有发言者知道究竟是怎么回事。
全栈开发工程师须要知识来知足与构建软件程序相关的全部领域。
首先,你须要了解许多编程语言,如 Java、PHP、C#、Ruby、Python 等。固然你不须要全都懂,但你必须掌握至少一种语言。关于语言,必须了解如何使用该语言设计、编码和测试项目。例如若是选择 Java,那么你须要掌握面向对象的设计、设计模式、基于 J2EE 的组件等。
流行的编程语言都有很好的框架,好比 Java Spring、MyBatis、Hibernate、Python Django 等。你必须知道如何灵活地使用这些框架和支持库。这取决于项目要求。
前端在当前的软件行业中变得愈来愈重要。用户体验是评估产品成功或失败的重要因素之一。
做为全栈开发工程师,你不能忽视 HTML五、CSS、JS 等前端知识以及 JQuery、AngularJS、React 等流行框架。
每一个程序都须要一个数据库来存储数据。你须要了解如何与至少 1 ~ 2 个不一样的数据库进行通讯,例如MySQL、MongoDB、Redis、Oracle等。
MongoDB 具备很高的灵活性,经常使用于 Internet 服务。同时对于大型项目,我建议使用 MySQL 或 Oracle。 Redis 还可用于存储缓存,提升系统性能。
关于全栈开发工程师的大多数争论都没有提到设计,但在我看来,对于想成为一名全能工程师的人来讲,这也是一项必要的技能。你应该掌握有关如何设计简单原型、UI/UX 设计的知识。
根据 Gladwell 的 10,000 小时原则,掌握前端、后端和面向客户的知识可能须要 10 年才能成为全栈开发工程师。然而它仍然不是最终目标,由于你须要不断学习新知识并深刻研究现有技能,真正为全部需求提供动力。