A Full Stack Developer is someone who can develop applications in each layer, if not mastery in many and a genuine interest in learning all software technology.

Generally a full stack is defined with 3 layers

  1. Presentation Layer
  2. Business Layer
  3. Data access layer

There are other layers involved in the stack which are needed software to work. Knowledge in all of them are a added plus.

1. PRESENTATION LAYER

Presentation layer is what users see including software UI, websites, application dashboard, interactive reports etc. A fullstack developer understand how a readable layout is created, with help from artists and graphic designers. Knowledge for implementing a good visual design is key. The skills can include mastery of HTML5 / CSS, JavaScript. A better user experience is very important. A front-end developer must be able to design a system where an end user can achieve a task in 3 clicks at the most five. A nice and appealing error/warning messages, polite alerts etc are part of proper user experience. Presentation layer can be nuilt using other tools like Angular, React JS etc

2. BUSINESS LOGIC

Business logic is the heart of an application. This layer is responsible for saving data received from user input or any other sources, optimize if necessary and pass to data access layer to save or persist. When needed, this layer fetches data from data access layer via APIs and translates data into meaningful information and passes to presentation layer for a better user experience. Most of the server side development languages like Java, Python, Javascript etc can be used to build this layer.

3. DATA ACCESS LAYER

Data access layer is responsible for persisting data in the application, mostly in databases. A proper design for data access layer is necessary. Any flay in design in this layer can cause unexpected results and unnecessary code in business logic and presentation layer. All databases, including nosql and SQL supported databases or file system can be used for this. Some are MongoDB, ZODB, Oracle, PostgreSQL, SQLite

Other layers could be

1. Networking - Knowledge of networking, its configurations and how internet works helps while designing the application architecture

2. Server Administration - Knowledge of servers works, especially Linux servers (these days) and how different server applications and daemons works and how they interact each other can help in better design and performace optimization. The knowledge of working of Web Servers, ASGI servers, Database Servers, Mail Servers and DNS servers ate helpful.

3. Database Administration and management - A proper database design and implementation and decarbonizing can help you design performance optimized applications

4. Protocols - HTTP, SMTP, ASGI helps when you are working with web based applications.

5. Business/Requirement analysis.

6. Digital marketing.

7. Search engine and Social media Optimization

8. Version control tools like Git or SVN

Of all, passion to learn is the key for becoming a good fullstack developer.