Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

Being a Full Stack Developer

The barrier of entering the web development industry as a web developer is


still low, but its getting increasingly complex.
The dynamic nature of the whole industry makes requirements shift often to
the most popular and next best thing tools and programming languages.
Gone are the days when only one programming language or a very specific
process was required from a developer. Nowadays programmers must know
a range of technologies across multiple platforms in order to do good work.

What does a full-stack developer


mean?
The term full-stack means developers who are comfortable working with both
back-end and front-end technologies.
To be more specific, it means that the developer can work with databases,
PHP, HTML, CSS, JavaScript and everything in between, also, venturing as far
as converting Photoshop designs to front-end code.

A full-stack developer doesnt need to master all of the areas and


technologies he needs to work it, because that just makes it nearly
impossible, he just needs to be comfortable working with those technologies,
and thats a lot too.

What full-stack meant in 2000 and


what it means now?

2000 was a long time ago, in that year PHP 4.0 was released. Yes, 4.0. Back
then, a good web developer knew a little HTML, CSS and some procedural
PHP, because proper OOP didnt even exist until version 5.0.
The LAMP (Linux Apache MySQL Perl/PHP) stack was all the rage in
those years, with little or no alternative. In the early 2000s if somebody used
version control they were considered either technological heretics or wizards.
Today its unheard of and laughed at, not using one.

So, lets try to break down and categorize the main technology stacks that
are required from a full-stack developer today:

System administration:
1.
Linux and basic shell scripting
2.
Cloud computing: Amazon, Rackspace, etc.
3.
Background processing: Gearman, Redis
4.
Search: Elasticsearch, Sphinx, Solr
5.
Caching: Varnish, Memcached, APC / OpCache
6.
Monitoring: Nagios
Linux powering most of the Internet, its a de-facto operating system in web
development (not to dismiss .NET). In addition, a full-stack developer should
know how cloud hosting works, Amazon / Rackspace or other providers and
its APIs.
Search is an integral part of most websites a developer should know how to
set up and use search servers such as Sphinx or Elasticsearch.
Caching is also important, Varnish, reverse proxy, Memcached and opcode
caching. He needs to know what each of these is and how to use it.

Web development tools:


1.
Version control: Git, Mercurial, SVN
2.
Virtualization: VirtualBox, Vagrant, Docker
Today, its unnaceptable not to use version control, even if youre a solo
developer.
With virtualisation tools, having separated development environments on a
per project basis is really nice to have, and easy to set up with VirtualBox
and Vagrant at least.
If you want to work with Vagrant you also need to know the basic syntax of
Ruby and shell scripts as well.

Back-end tech:
1.
2.
3.

Web servers: Apache, Nginx


Programming language: PHP, NodeJS, Ruby
Database: MySQL, MongoDB, Cassandra, Redis, SQL / JSON in general

Apache and Nginx are the norm for web development. A full-stack developer
should know how to set up these applications and serve the contents of his
website.
PHP is what needs to be mastered on a high level, NodeJS, Ruby is nice to
know as well.
In addition to web server and programming languages, database
management is also a requirement for a full-stack developer which in itself is
another beast.
Relational (such as MySQL, PostgreSQL) vs non-relational databases (like
MongoDB, Redis or Cassandra) are differences the full-stack developer needs
to know, along with knowing the syntax of XML / JSON.

Front-end tech:
1.
HTML / HTML5: Semantic web
2.
CSS / CSS3: LESS, SASS, Media Queries
3.
JavaScript: jQuery, AngularJS, Knockout, etc.
4.
Compatibility quirks across browsers
5.
Responsive design
6.
AJAX, JSON, XML, WebSocket
Here comes the fun part. If you want to present your website, youd better
know these and all their quirks.
JavaScript was a joke in the early days, grown into one of the most popular
and powerful languages today. New methodologies and frameworks are
popping up each day, MVC, MVVM, MVP, Angular, Knockout, Ember, etc.
Alongside HTML, CSS, Javascript, a full-stack developer should also know
about responsive design and how to work with media queries and CSS
preprocessors like LESS and SASS.
One should also know how to communicate with the back-end via AJAX or
WebSockets.

Design:
1.
2.

Converting website design into front-end code


UI

3.
UX
In addition to front-end technologies, a full-stack developer also understands
what is possible and what not to create with the constraints of HTML / CSS /
Javascript and convert the design (Photoshop/Illustrator files) accordingly.
With many of the mentioned technologies a developer can get away with not
knowing to code or use, such as Ruby or specific JavaScript libraries, but all
these are interconnected in one way or another.
For example if you want to set up Vagrant you need to know Rubys syntax,
as simplified as it is or if you want to manipulate DOM elements, jQuery is a
good to know technology.

One other category that deserves mentioning is mobile technologies. Its a


very dynamic industry and closely related to web development:
1.
iOS
2.
Android
3.
Hybrid: PhoneGap, Appcelerator
One of the biggest disparities today is between web and mobile
development, but the gap is rapidly closing.
A full-stack developer should know about these technologies as well.

Is it better to be a full-stack
developer?

Being a full-stack developer means to have an open mind towards new


technologies, having your hands dirty in each one and to have an
understanding of how a web application gets done from a concept to design
to the finished product.
The idea of a full-stack developer isnt about being fluent in every possible
technology there is, because specialization exists for a reason. Its more
about having an understanding in each of the areas above, to communicate
intelligently between team members and to be a good asset if the situation
needs it.
The full-stack developer will have an increasingly important role in the web
development of the future, especially when development methods such as
DevOps are becoming an essential part of software development companies,
where the line between code developers and administrators who are
responsible for code deployment and setup is getting thinner each day.

You might also like