Demystifying Full Stack

Demystifying Full Stack

Full stack development may sound intimidating, perhaps even beyond scope to someone who is new to programming, but I’m here to convince you that it’s not as complicated and impossible as it sounds.

Despite full stack programming being something that nearly every developer can learn, it’s still in high demand and surprisingly difficult to find. I found this out the hard way, when looking for a CTO for our startup. When job postings weren’t fruitful, we resorted to tweeting programmers who were already at established companies. We needed a full stack programmer so desperately that we had to recruit in every nontraditional form we could think of.

What is full stack programming?  

A full stack developer is able to perform tasks anywhere along the technical stack. This includes:

  • Basic systems infrastructure, such as hardware and OS
  • Databases
  • Back-end code in one or more languages, such as Node, Java, Python, or Ruby
  • Front-end code in HTML, Javascript, and CSS
  • Mobile app development

Keep in mind, a full stack developer has knowledge that is wide, but doesn’t necessarily have to be an expert in each vertical.

A full stack programmer can build a web or mobile app from scratch and get it up and running; they are typically the ones expected to write the first line of code, and to establish the basic architecture and folder structure. They know how to spin up a server, build a good-looking front end, and deploy the app for the world to use.

  • For an e-commerce platform, this app should be good enough to convert user visits into sales.
  • For a customer service dashboard, this app should be intuitive and fast enough to be significantly better than the outdated systems that most big companies still use.
  • For a social app, it should be scalable enough to serve 100K users with minimal downtime.

What is not full stack programming?  

It may sound like a lot, but there’s plenty that a full stack developer does not need to be. Of course, a full stack developer can specialize, and eventually most do, but there are only so many areas of programming that one can be an expert in.

  • A full stack developer does not to be a killer designer. They should know CSS and have basic taste in building an intuitive user experience but ideally, a front-end specialist is the one to focus on design so the full stack developer can be involved in other areas of the app.
  • A full stack developer does not need have deep devops experience. Setting up a smooth deployment process, a good git workflow with the team, and the most basic testing environment will cover most of the bases for MVP products, and the initial phases for a startup.
  • A full stack developer does not need to be an expert in scalability. Yes, they should know about the pros and cons of a micro service architecture, but AWS lambda/serverless, and other newer services make it increasingly easy to set up a scalable and cost-efficient structure for your app. Additionally, 95% of startups and side projects don’t end up amounting to their expectations of users, and the scalability was overkill to start with.

How to get started as full stack developer.

You can’t go wrong starting with HTML, CSS, Javascript, and Node (more or less in that order).

After that, look into frameworks and libraries which ‘abstract’ away the hard work that comes with building a full stack app.

  • For front-end, I recommend Angular, Vue, or React.  
  • For back-end, I recommend Express

Some developers are passionate about defending one framework versus another but, typically, this comes down to their own familiarity. Simply pick one and get good at it.

Regardless of whether you know which area of programming you eventually want to specialize in, having a holistic view of the entire app is necessary, so learning the full stack makes it a win-win learning situation.

With a few exceptions, startups and established companies alike want all of their developers to have an understanding of the app as whole, even if it’s not what they will be coding on. It allows members across teams to better communicate and relate to the other teammates.

I can guarantee that it pays off for anyone, whether you’re an established developer or newbie, to get out of their comfort zone and take the journey to learn full stack.