How can ordinary programmers advance to full stack engineers?

How to become a full stack developer? One of the hottest topics on the internet. There are more and more people on LinkedIn and Facebook who advertise themselves as full-stack engineers, and it seems to be becoming a new trend and new trend in the IT industry. The concept of Full Stack is not new, and discussions on "full stack" topics among developers have never stopped. I once saw an article about a full stack designer with mixed reviews. Some people think that the full stack is just a title, and it really depends on the ability and technology of the individual.

There is an old Chinese saying: You can't have both. And careers like full stack engineers and full stack designers seem to be challenging this possibility. Because their horizontally developed skill tree gives them the ability to have both. In foreign countries, there is such a saying for full-stack talents: Jack of all trades, but master of none. Translated into Chinese, it means omnipotent and omnipotent. How to avoid becoming a broad but not refined full stack engineer is a question that the majority of friends who want to become full stack designers need to consider deeply.

In essence, this topic is actually an in-depth discussion on whether "more skills" in the Internet industry is equal to "full stack", and which is more important between "depth" and "breadth".

1.  What is a full stack engineer?

what is a full stack developer.png

A full stack engineer, also known as a full-end engineer, is a person who masters multiple skills and can use multiple skills to independently complete products.                       

Someone asked this question on Quora, and one of the top-voted answers was:

A full stack engineer is an engineer who can handle all the work of database, server, system engineering and client. Depending on the project, customers may need a mobile stack, a web stack, or a native application stack.                                  

In fact, "full stack" refers to the collection of a series of technologies required to complete a project. A "stack" refers to a collection of submodules. These software sub-modules or components can be combined together to achieve a given function, and no other modules are needed.

2.  Why are full stack engineers controversial? 

fullstack-developer.jpg

As mentioned above, the controversy of the full stack engineer lies in the discussion of the depth and breadth of skills. Especially at the OSCON conference, a Facebook engineer said that they only hire "full stack programmers." When this topic came out, it caused a heated discussion about the advantages and disadvantages of being a full stack engineer. 

Advantages: The technical development of a full-stack engineer is horizontal, covering a wide range of technologies, and can quickly use the technical knowledge he has mastered to develop product prototypes. Because they have a broader vision, more active thinking, and are very sensitive to technology and products, he always has something to say about any technology or design. It can provide beneficial help to everyone in the team, and can greatly reduce the time and technical cost of team communication and technical docking. So many of them became entrepreneurs or worked as technical partners in startups.

Disadvantages: It is precisely due to the horizontal technological development that full-stack engineers are often knowledgeable but not skilled. Most engineers who call themselves "full stack" stay in the realm of "slight understanding". As for how to implement it, and how to make the architecture more suitable for modular development in the later stages, I really don't know.

3.  Even so, people are still asking, how to become a full stack engineer? 

A qualified full-stack developer should have functional knowledge and competence in all aspects involved in building an application.

1) Master multiple programming languages

You need to be proficient in multiple programming languages, JAVA, PHP, C#, Python, Ruby, Perl, etc., because most of your core business processing needs to be written in these languages. You need to master the syntax of these languages, and you need to be very familiar with how to architect, design, implement, and test projects based on these languages.

       Where to learn : Git / GitHub - You must master how to use Git to manage and share your code.

full stack web developer.png

2)  Use development frameworks and third-party libraries

流行的开发语言,一般都伴有出色的开发框架,比如JAVA的Spring、MyBatis、Hibernate,Python的Django,PHP的 thinkphp、yin,nodeJs的 express 等等。

     在哪学:Courses.AngularClass.com

                  15本免费的Python电子书

3) 前端技术

前端技术在今天的项目和产品研发过程中变得愈加重要。除了实现产品功能,用户体验也是检验产品是否成功的标准之一。而这都依赖于前端技术的实现,你至少需要掌握 HTML5、CSS3、JavaScript 等基本前端技术,同时进一步学习 JQuery、LESS、SASS、AngularJS或REACT等前端框架或第三方库。

       在哪学:You don’t know JS

4) 数据库与缓存

任何产品或项目都需要一个数据库来存储数据。作为全栈工程师,你也需要至少掌握一到两个数据库,并知道怎样与数据库进行交互。目前流行的数据库主要有MySQL、MongoDB、Redis、Oracle、SQLServer等。MongoDB作为文档型数据库,在互联网产品中正被越来越多地使用,对于规模稍大一些的项目,我仍推荐使用MySQL或商用的Oracle作为后端数据库。而Redis这样的内存数据库则可以用于缓存,以提升系统的性能。

         在哪学:MongoDB MERN教程系列

                       Redis 教程

5) 基本设计能力

大部分关于全栈工程师的文章或讨论中都很少涉及到设计能力的要求。但我却认为这项技能非常重要,基本的原型设计,UI设计,UX设计都是需要了解的。

        在哪学:Mockplus博客

full stack designer vs. full stack developer.png

6)  In addition to good development technical knowledge, self-requirements are also necessary factors for full stack engineers:

global thinking

good communication skills

creativity

curiosity

time management ability

Summarize

According to Gladwell's 10,000-hour rule, if you want to master the knowledge content of front-end, back-end, and client-side proficiently, it will take about 10 years to study every day. Therefore, a full-stack engineer is never achieved overnight. You need to lay a solid technical foundation, strengthen core skills, and continue to learn to meet more challenges.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326319038&siteId=291194637