These days, modern full stack development is very popular in both small agencies and larger companies with a dedicated technical team. Full stack web engineers work on an entire web stack of technologies including frontend, backend, and server management.
Many people argue that full stack only leads to being a "jack of all trades, master of none". From a certain point of view this may be true, however skillset is only as important as what can be accomplished with it. Many full stack devs offer value because they can take an idea from conception to launch, and fully comprehend every step of the process.
If you’re thinking of going the the full stack route, then this article is for you. I will explain the general requirements of a full stack developer, what the role entails, and how the skillset can be useful for freelancers/contractors who want to work directly either for clients or in their own projects.
Full Stack Fundamentals
Modern full stack development has come a long way, as web technology has changed a lot. Full stack requirements should be used as guidelines to consider following. Generally speaking a "stack" represents the technologies running in unison to make a website work. This means frontend code, backend code, a database system, and a web server platform + OS for the server.
The basic tenet of full stack development is to understand all aspects of constructing a website. This does not mean knowledge of design or UI/UX work, although that can greatly improve your viability and work quality.
For a backend language you’ll want to pick something that can be coupled with a database system. PHP/MySQL is the most common and easiest to learn because it powers many CMS engines like WordPress. Also the LAMP stack is undeniably the most popular web stack today.
Server knowledge could be as simple or as detailed as you like. The absolute basics would be knowledge of a server program like Apache coupled with a database like MySQL or PostgreSQL.
You might go even further to include knowledge of installing mail servers, or performance tools, such as memcached or Varnish.
A full stack dev should dabble in all three areas with enough knowledge to launch a website independently, and without much help from anyone else.
Technical Depth of Knowledge
A big question about full stack development is how deep to go into each area. Is a full stack engineer really ever a master of anything? Some argue that it’s possible, but that may not be the purpose of going full stack.
Most companies want to hire full stack engineers who have a bit of knowledge everywhere. These engineers may specialize in one area, but they’re able to fill any role when needed.
Devs who are just starting down this path should toy around in all areas learning "just enough" to solve problems as they arise. This gives a real world interpretation to the technologies to see how different problems apply to real projects.
The largest benefit of full stack coding is the ability to build your own applications without working for anyone else.
So how deep should you go into any of these areas? This is entirely up to you, and your answer will probably change over time.
But when first getting started, just go deep enough to implement what you’ve learned into a real project. When you bump into something you don’t understand, use it as an opportunity to go deeper, and learn more about that particular subject.
Backend language choice is less about technical advantage, and more about comfort. Most programmers realize that Python is a more versatile language than PHP, however the majority of websites run on PHP servers. This makes PHP a valuable language to more companies.
Pick whatever language suits your needs, or offers you the greatest prospects. Also keep in mind that you’re not stuck with one backend language forever. If you start with Ruby but switch to Python you don’t lose anything in the process.
However I do recommend that once you find a backend language you like, delve deeper with that language, and pick up a related framework. PHP has Laravel, Ruby has Rails, and Python has Django — among many other options. These frameworks will expedite your development process, and help you properly structure your applications.
Choosing a database engine comes down to project requirements and server stack. PHP often works with MySQL, so that’s the most preferred choice. The two biggest web stacks today are LAMP (Linux-Apache-MySQL-PHP) and MEAN (MongoDB-ExpressJS-AngularJS-Node.js).
Most hosting companies offer LAMP from the start with no setup required. But custom solutions like Digital Ocean allow you to run almost anything with a little elbow grease. You can find more web stacks on this list, or by searching around online.
Your database of choice will often be tied to your backend language. Python comes with SQLite support by default, and RoR devs can typically work with anything. And honestly, any language can usually work with any database.
But you want to pick something that’s common enough to use in the majority of web projects. SQL is a general language, and it uses mostly the same syntax across all database engines. You will find differences in table setup & administration, but these are typically minor.
Beyond databases, here are some technical server-side topics you might want to learn about.
CDNs and content hosting
Server software installation & updates
Best server configs for traffic spikes & load times
Caching solutions for both database queries and file system storage
Automated backups of databases and flat files, or disk imaging backups
HTTPS setup with domain management (DNS servers, CNAME records, etc.)
More detailed subjects, such as email, microservices, and load balancing
One of the best ways to learn is tinkering with servers as you build projects. Grab a basic VPS account, and try setting up your own stacks. These VPSs are complete virtual server environments where you have full control to configure (or destroy) everything. Also, the list above isn’t a required roadmap for all full stack developers.
The only knowledge you really need is whatever is required to create a blank server environment, and install the software needed to run a website. From there, anything else is just improved knowledge. If you ever have questions or want to learn from professionals check out Reddit’s /r/SysAdmin community.
The Road Ahead
If you really want to learn full stack development, make a list of all the technologies you want to learn. From there, you can tackle them one-by-one making up your own practice projects to test what you learn.
Web development is an ever-changing industry, so you should always be willing to learn more. Test various stacks and languages until you find what you like. But always be willing to go deeper and get better!