一个好的全栈工程师(Full Stack Developer)需要具备哪些技能?

全栈工程师是指掌握多种技能,胜任前端与后端,能利用多种技能独立完成产品的人。成为一个好的全栈工程师需要具备哪些技能?

个人经历总结:

  1. 如果是前端开发出身,要成为全栈,会有一定难度,因为掌握后端技能,不仅仅是简单的增删改查,还得学会利用好各种中间件,比如Nginx、Mysql、Redis、MongoDB、ElasticSearch,会搭建,会设计存储结构,最好还得会优化;

  2. 如果是后端开发出身,要成为全栈,只要肯付出时间有耐心,学起来还是挺快的,到底是学原生的html+css+js,还是学框架类的 React、Vue、Angular,看个人情况吧;据我了解,后端出身的学习前端技术,一开始最难受的就是布局和调样式;

    我个人的情况是:后端Java开发出身,后来学了Golang,通过工作上的实践,形成有了自己的一套开发框架,比如Java直接用SpringBoot、Golang用Gin,都是轻量级的,开发效率高,然后搭建常用的中间件Nginx、Mysql、Redis、ElasticSearch,Nginx + Mysql + Redis + ElasticSearch,四件套基本满足大多数的业务场景,后端做优化的,无非是围绕缓存和消息队列来展开;后来学习了Flutter,通过做一两个移动端的项目,趟过无数坑,现在能利用Flutter来做Android和iOS的开发和打包上线。现在想重点尝试Flutter For Web的效果如何,可以的话,以后个人的技术栈就是Java + Golang + Flutter,覆盖前后端和移动端。

3赞

如何成为全栈开发人员?作为开发人员最热门的主题之一,讨论从未停止。在LinkedIn和Facebook上,许多人把他们的职位称为全职开发人员。此外,“全栈”主题似乎已经成为一种新的工作趋势。关于Medium的一篇文章讨论了全栈设计师同时受到赞扬和指责。有人认为全部内容只是标题,他/她应该关注的是真正的个人能力和技术。

本质上,我认为关于全栈的讨论也是一种与IT行业的全能专家有关的论点,并涉及开发技能的深度和广度。

你不能吃蛋糕也不能吃。虽然全栈开发人员和全栈设计师似乎在挑战这种可能性。因为他们的水平技能树使他们既有吃又有蛋糕的能力。有一句话是千篇一律,但无精打采。因此,有必要考虑如何成为一名真正的全栈开发人员,而不是一个空洞的标题。

1.什么是全栈开发人员?

简而言之,全栈开发人员是一种掌握各种技能并使用这些技能独立完成产品的人。 Quora上获得最高投票的答案解释了什么是全栈开发人员:

全栈开发人员是一位工程师,可以处理数据库,服务器,系统工程和客户端的所有工作。根据项目,客户需要的可能是移动堆栈,Web堆栈或本机应用程序堆栈。

实际上,“全栈”是指完成一个项目所需的一系列技术的集合。 “堆栈”是指子模块的集合。这些软件子模块或组件组合在一起以实现既定功能,而无需其他模块。

2.为什么要对全栈开发人员进行有争议的讨论?

如上所述,关于全栈开发人员的讨论实际上是关于技能深度和广度的辩论。尤其是在OSCON会议上,一位Facebook工程师表示,他们只雇用了“全栈开发人员”。这个话题来自于关于成为全栈开发人员的优缺点的激烈讨论的结果。

优点:全栈开发人员需要横向技术要求,这样他/她就可以利用其广泛的技术非常快速地为产品进行原型设计。具有完全的可堆叠性,它们具有更广阔的视角和更活跃的思维方式。而且,他们将对技术和产品更加敏感。因此,这类人始终可以对产品或设计有自己的意见。

从另一方面来说,他/她可以为团队中的每个人提供帮助,并大大减少团队沟通,技术对接的时间和技术成本。他们中的许多人成为企业家或成为初创公司的技术合作伙伴。

缺点:正是由于水平技术的发展,一些全栈开发人员无法熟练掌握一项技能。他们中的大多数人声称自己是“全栈开发人员”,但对多种技能只有一点儿了解。至于如何使架构更适合模块化开发,这是一个问题。

3.即使这样,仍然有人在问,如何成为一名全栈开发人员?

合格的全栈开发人员应具有构建应用程序所涉及的所有方面的功能知识和能力。

1)编程语言

您需要精通多种编程语言,例如JAVA,PHP,C#,Python,Ruby,Perl等。由于大多数核心业务流程都需要用这些语言编写。也许并非全部。但是,您还必须精通语言语法,并且非常熟悉如何基于一种或多种语言来构建,设计,实现和测试项目。例如,如果选择JAVA,那么您需要掌握面向对象的设计和开发,设计模式,基于J2EE的组件的开发等等。

2)使用开发框架和第三方库

流行的开发语言通常都带有良好的开发框架,例如JAVA Spring,MyBatis,Hibernate,Python Django,PHP thinkphp,yin,nodeJs express等。

3)前端技术

在当今的项目和产品开发中,前端技术变得越来越重要。除了产品功能以外,用户体验也是测试产品成功的标准之一。所有这些都取决于前端技术的实现,因此您需要掌握一些基本的前端技术(例如HTML5,CSS3,JavaScript),并进一步研究前端框架或第三方库(例如JQuery,LESS, SASS,AngularJS或REACT。

4)数据库和缓存

任何产品或项目都需要一个数据库来存储数据。作为全栈开发人员,您还需要至少拥有一个或两个数据库,并且知道如何与数据库进行交互。当前,流行的数据库是MySQL,MongoDB,Redis,Oracle,SQLServer等。作为文档类型的数据库,MongoDB在Internet产品中得到了越来越广泛的使用。对于较大的项目,我还建议使用MySQL或商业Oracle作为后端数据库。而内存数据库(例如Redis)可用于缓存以提高系统性能。

5)基本设计能力

有关全栈开发人员的大多数文章或讨论很少与设计要求相关。但是我认为设计技能非常重要,基本的原型设计,UI设计,UX设计的原理和技能也需要了解。

6)自我需求也是成为全栈开发人员的重要因素:

  • 全球思维
  • 良好的沟通能力
  • 创造力
  • 好奇心
  • 时间管理技巧

包起来

根据Gladwell的10,000小时法律,将花费10年的时间来掌握前端,后端,面向客户端的知识内容,从而成为一名全栈开发人员。因此,全栈开发人员绝不可能一overnight而就。您需要做的是奠定技术基础,增强核心技能,并不断学习以应对更多挑战。

1赞

golang+flutter是不错的选择~

1赞