Before understanding Full stack development it would be useful to understand what is Full Stack.It is also helpful to understand if Full Stack development is specific to web development.
Full Stack meaning
If consider any application then it will consist of different components.Any application consists of components such as UI layer,Business logic layer and database layer.Each of these components are usually implemented in different technologies.So some of the main layers in any application are:
- UI layer
- Business logic layer
- Database layer
- Server such Web Server or Database Server
Normally there is a clear distinction between the developers who work on the Front-End(which the end user uses) and the Back-End(which consists of the application logic and data interaction).
Full Stack Developer
If you go by the meaning of it then it means somebody who is having good knowledge of all the layers.Its oversimplification though but it reflects who is a Full stack developer.In this context Layer means the different components of a web application.
So as we know any web application consists of several different components such as:
- UI which consists of HTML ,JavaScript and CSS
- Business logic can implemented using programming language such as PHP , Java , C#
- Web Server such as Apache
- Framework such as MVC or AngularJS
- Database such as MySQL,Oracle or SQL Server.
- Version control system such as GIT.
- Unit testing and Mocking Frameworks
- OS on which the application is supposed to run.
In short there are lot of this you need to be aware of when you build a complete web application.A full stack developer is one who is comfortable in all the layers.In fact LAMP stack which consists of Linux-Apache-MySQL-Perl/Php has been in use for years.Full stack development is a similar concept.
Most of the developers either work as a front end developer working mostly in HTML,CSS,JavaScript and little bit of programming language and databases.
But it such a developer cannot be considered a full stack developer until and unless he is well versed in all these components and have a good working knowledge of these.He is competent in different components of the application.
When starting full stack development following is an important point to consider:
You need not know all the programming languages available out there.But instead you should consider the language which is relevant for your stack.So if you are working in C# then you should have good knowledge of IIS.If you are using PHP then you should have knowledge of Apache.
Though full-stack developers may not develop an entire application single handedly but if required they can work on any component of the application.