admin

What Full Stack Development Really Is

Companies love to use “full stack development” every chance they get. But what does it really mean to be a full stack developer? There is no concrete definition, but generally speaking, we can expect the following:

1) You understand the problem

Software development is about solving problems. Whether the problem is identifying objects in an image, promoting a local business, or simplifying sharing information via a forum, software development is geared around problems. Let’s take promoting a local business as an example: most local brick and mortar stores will post a job ad or a project to build a site to promote their business. A developer will work on the website, collaborate with the business, setup the site and move on. Both parties are happy, however, something critical was left out. An experienced full stack developer takes it a step further and does the following:

  1. Set up proper monitoring and alerts for both the infrastructure and software
  2. Outline and explain the policy for upgrading and routine maintenance to the client
  3. Set up proper analytics tracking
  4. Set up proper conversion tracking and create presentable data 

What starts as a simple “build a promotional website” becomes an umbrella for various problems that need outlining and planning. In reality, a simple promotional WordPress site requires little attention once setup; however, this becomes a serious issue the more complex the project becomes. Again, an experienced full stack developer understands the immediate and not obvious problems when scoping out a project.

2) You can research a solution

Everyone loves familiarity and working with tools they have used before. The problem with technology is it is rapidly changing. Every day a new software is created and it is impossible to keep up to date. It is very easy to fall into a hole and use one specific technology for everything. Take building an e-commerce as an example: you can choose between Magento, Shopify, WooCommerce, Biocommerce, Netsuite, and many more.  They are all valid e-commerce solutions, but each one is completely different from the next. Lets say a developer has a ton of experience in WooCommerce; naturally, he/she will use WooCommerce as their go-to solution. What if the client is only selling only a dozen products, has little-to-no knowledge of e-commerce, and wants the simplest solution? WooCommerce works, however Shopify would a better fit, and would be an easier handoff once the project is done. The client doesn’t have to worry about server maintenance, any type of optimizations, or any payment processor integration. It always boils down to research and planning. A full stack developer researches all possible solutions, outlines the pros and cons of every solution, and makes an educated decision.

3) You seek help and understand limitations within your team

Let’s face it, no one is an expert in everything. Knowing when you need to consult with a specialist is what makes a true full stack developer. Once the problem has been fully scoped out, a proper tech stack has been designed, and the overarching technologies are outlined, it is now time to build the infrastructure. One of two things will happen:

  1. The full stack developer takes it upon themselves to spin up a new server, install a webserver, the programming language, a database, and gets everything to work. Great, it works! The stack loads and looks great, however, is it optimized? No. Does it scale? No. Is there any version control or code accountability? No. How about advanced logging and monitoring? No…
  2. The full stack developer consults with an architecture engineer. They communicate the requirements, development stack, and technologies. The architecture engineer will use automated tools (such as Terraform) to build the underlying infrastructure. If the architecture engineer is truly an expert, you will now have an optimized setup, proper logging and monitoring, a version-controlled system to manage any changes, and a fully optimized setup.

Obviously both solutions work, however it comes down to the actual requirements. If you are implementing the full stack for a WordPress site, that will be promoting your local ice cream shop, then implementing the architecture yourself is a no-brainer. If you are implementing a high-demand E-commerce website which needs to easily scale during peak seasons, then consulting with an architecture engineer is a must. Regardless, a true full stack developer will be able to make these decisions and do what is best for each project. There is no cookie-cutter answer!

There are Different Types of Developers

We’ve all been there, staring at a job listing with a never-ending list of specs:

  • HTML, CSS
  • JavaScript, CoffeeScript
  • NodeJS, GraphQL
  • React
  • AWS
  • Docker
  • Jenkins, Drone
  • Bash Scripting
  • Puppet
  • Terraform
  • PHP, Ruby
  • Kubernets
  • MySQL, MongoDB

These are specs for an entire IT department, not for a developer! Reality check, management is aware that no one could possibly know all these technologies. They know this is a great strategy to weed-off candidates who aren’t willing to learn and expand their knowledge. Overly simplifying, the majority of developers can be classified into three categories:

The Enthusiasts – These are the developers that live, breath and sleep code. They are constantly looking up the newest technologies and latest trends. They either settle to one platform or branch to various technologies. Regardless, they have a blend of high-level concepts as well as knowledge in the implementation of the software’s. They are able to take a project, scope out the necessary infrastructure and softwares, plan and design a solution. Often, they know their limits and consult with specialists; however, they are leading the project and are the glue between systems.

The Coasters – Coasters thrive on what they are comfortable with. Often, they tend to stick with simple, smaller sites, and are very specialized in what they do. With the increasing demand of WordPress sites, Coasters tend to gravitate towards theme development and extension development. Windows, FileZilla, WAMP and Putty are their go-to tools. Coasters are phenomenal at execution if it’s with something they are comfortable with. Give a Coaster a task to create a custom themed WordPress site from scratch and they will have it done in a day. Give them a task to setup Apache + MySQL and you’ll find them trying to exit Vim.

The Know-It-Alls: To put it bluntly, these are people that ruin the workplace. Software development is about solving problems and implementing solutions. Somehow the Know-It-Alls, tend to make it about popularity and competition. With the increasing number of libraries, softwares, and languages, there is no right or wrong way to approach a problem; only best practices and recommended solutions. The Know-It-Alls believe their solution is always the best regardless of the problem or its’ requirements. They take a simple problem and propose an exaggerated, complex, and convoluted solution; or worse, they propose a solution that straight up won’t work. The worst part is, Know-It-Alls are always loved by management and know how to manipulate non-technical higher-ups. Know-It-Alls tend to rise in their company and dominate the workforce.

Going back to the original job posting, management is looking for candidates who are genuinely interested in software development and are eager to learn new technologies. Unfortunately, the Know-It-Alls outshine everyone else in the job market because they are people-pleasing, therefore, their voices are heard. For all you introverted developers out there like me, let your knowledge speak for itself. If you are interviewing with a technical person, you have nothing to worry about.