Full Stack - Introduction

A full stack developer is a one who can take a prototype to full MVP (minimum viable product) and is often considered a jack of all trades. To define the modern full stack developer, we need to understand what the full stack developer used to be.

Back in the 2000s -a full stack developer was someone who could:

Those were simple times, life was good. One-man agencies were a dime a dozen, and people still had time to spend with their family after work.

What about now?

To succeed in a today's saturated market, developers who are often perfectionists hesitate to delegate and often live by the "if you want something done right, do it yourself" mantra. This forces us into a corner where we have to learn everything, so that being a full stack developer often ends up encompassing most of the following.

Server Admin / Devops

A developer must know how to do basic server management. This includes but is not limited to:

Apart from these basics, a developer should know how to create good, healthy, isolated development environments, in either Docker or virtual machines like with Vagrant.

The developer should also be intimately familiar with version control systems in order to be able to reliably produce backups and shareable, collaborative collections of code, tracked for changes across time. No modern developer workflow is complete without version control these days.

Cloud

Apart from actual managed or virtualized servers, a developer might need to know about the cloud hosting on platforms like Heroku, Google Cloud, Azure, AWS, and others.

There is a fair bit to be said about platforms and tools that are more hype than immediately useful, but being familiar with the services everyone is talking about can come in handy in the long run a client could demand a switch of providers any day now, and it pays to be ready.

Back End

On the back end, apart from knowing the language of choice, in our case PHP and its multitude of frameworks and CMSes a developer needs to be familiar with:

Database

The database is a separate section because apart from a good grasp of relational databases for data the schema of which wont often change (like MySQL or PostgreSQL), a developer needs to know about noSQL databases like MongoDB, Redis, or Cassandra not to mention graph databases like Neo4j.

Front End Design

In design, a developer needs to know how to sketch out a prototype of an application before converting it into a usable format like HTML and CSS. This can then be made interactive with some JS, back-ends can be simulated with fake JS endpoints, and only once this shell app is done and its user experience design and interface design are ready can true development begin.

Front End Design Tools

Photoshop and/or Illustrator or an open source alternative like Gimp / Inkscape find out all about this on the Design channel A good, fast editor like Ultra Edit, Atom or Sublime Text

Logging

To effectively keep an eye on an apps health, a developer will need to be able to track error and access logs and extract valuable information from them.

They will need to know where to look for the logs, and be able to recognize and flag trends, as well as notice upticks in CPU or I/O usage in order to prevent downtime on time.

Mobile

Finally, there is mobile to consider. With webview on both iOS and Android becoming more and more performant, and the advent of PWAs (progressive web apps), native apps are losing their charm because of the complex process of developing them. A full stack developer thus has to be familiar with either PWAs, or go with something like React Native or a full on webview like NativeScript, Tabris, Cordova, Phonegap, or other implementation to get a good client app going for their API

Is Being a Full Stack Developer Worth It?

First, it should be noted that very few full stack developers are all of the above. Most developers focus on just some of these technologies simply because its not possible to pay good attention to all aspects of full stack development.

Secondly, knowing at least a little bit of everything might not make you a master of a specific craft, that much is true, but it will make you capable of understanding what goes into a project and which ones of these technologies a project actually needs. The skills taught in this course are priceless- and prepare you for many opportunities in web / app development.

Conclusion

I might not be the JavaScript rockstar, Elasticsearch ninja, MySQL guru, Devops maniac, or Mobile wrangler you'd fawn over, but in my case, being full stack lets me test out different technologies, and build alternative, uncommon solutions.

Full Stack means many things to many people. This article is an opinion- but quite closer to most definitions on the subject. ~Eddie