Ten years ago, the software development landscape looked very different. The way it mostly went was front-end was front-end, back-end was back-end. There were clear lines and expectations for development.

Back then, being a full-stack developer made you a mythical unicorn.

Nowadays, everyone is at least a little full-stack.

We've all done it — tinkering with interfaces, interacting with APIs, writing our own rules and logic, and even a bit of booting things up into the cloud on the side. If you've been around long enough, there's a high chance that you've traversed through the different layers of “the stack.” If not out of necessity, then it's out of curiosity on the side.

On a technicality, this makes us full-stack — and that's what we tell the world, especially for job-hunting, where postings these days can have myriad of technical requirements. But how full-stack are you? Where on the spectrum of fullstackedness (if there is such a word to describe it) do you really sit?

Related: How to Choose Your Engineering Specialization

The multi-dimensional developer

It's easy to become a “technical” full-stack, where you check all the boxes of having “some” experience with various layers of development but lack understanding and depth of knowledge in them.

As developers, we often start off as natives to one layer. Whether it be front-end, back-end, data, or infrastructure, we all begin somewhere first. To become proficient in that layer, we need to have a level of competency towards the five facets of development work: language knowledge, platform knowledge, logical thinking, architectural knowledge, and creativity.

001_fullstack.JPG

How the five facets work

Code is a language, which means it's a method of communication. It's easy to learn the syntax. But to apply it meaningfully — that's where many new developers, and developers moving to other layers for the first time, struggle. The five facets capture the other parts required towards mastering layer competency.

Here's a breakdown of what each of the five facets represents.

Language knowledge

This is where most of us begin. We learn the language of a layer. We figure out how and when it's appropriate to place our {} , how to create classes and functions. We learn all about scopes, chains, arrays, and data structures. Language knowledge allows us to translate our thoughts into a format that computers can understand.

Platform knowledge

Every platform has its own set of special requirements. Mobile web development differs from native mobile application development. Amazon's AWS differs from Google Cloud and Microsoft Azure. Back-end development in Node.js with graphQL is an alternative to Java RESTful APIs. Depending on the layer, each platform can break into smaller sub platforms.

Architectural knowledge

How do you construct something that's robust and flexible but strong enough not to turn into a flop? Architectural knowledge often comes in the form of patterns. These patterns act as struts and beams to how things are done.

Logical thinking

How good are you at modularizing ideas into concise parts that generate a particular expected outcome? How small can you make a problem and fit all the pieces together in a way that is mentally digestible? Logical thinking in code is the ability to create structures and relationships that are easily understood by others.

Creativity

As developers, we will always be limited by what we know, the constraints of our environments, and requirements. How good are you at working within these limitations and constraints? How far can you stretch the boundaries? That's basically creativity in a nutshell.

Related: The AI Skills That Generalist Engineers Should Consider Learning

When we call ourselves full-stack, it can come across as being rounded in these five facets across the different layers. However, that is rarely the case.

A dev may have the technical knowledge to launch an application, but their lack of experience may hamper their ability to think creatively and architecture solutions based on platform-specific knowledge. This means that logical thinking is limited and synthesis of the five facets results in a sub-optimal solution.

A developer that's an expert in their layer often sits closer towards the edge of the five facets. The spectrum of a full-stack developer is much more complex because each layer has its own set of requirements.

Where on the spectrum of full-stack do you sit?

If we were to put labels on the types of full-stack out there, we would have three types: the technical, the layer-heavy, and the transferable.

Here's an overview of what each type looks like.

The technical full-stack

The technical full-stack is the developer that's done everything — on a technicality. They might have figured out how to launch a ToDo list into an app with the help of a tutorial. Their five facets on each layer is surface-level, putting them as the beginner of everything.

The layer-heavy full-stack

The layer-heavy full-stack is an expert in a particular layer. They are a native in either front-end, back-end, data or infrastructure. However, they may have moved between the layer, doing bits here and there until it results in a fully functional app. The other layers may be basic or minimal — but it's a workable solution.

The transferable full-stack

This developer might be someone who is a layer or two heavy. They've got an advantage over others because they can see the patterns of their layer in others — that's why they're a transferable full stack. They're able to move between the different layers in a team setting and can produce something that's above the complete beginner level.

Next steps

Using these archetypes as guides, you can figure out where you are on the full-stack spectrum.

Since the level of competency across the layers increases based on the types listed above, you might view technical, layer-heavy, and transferable as junior, intermediate, and senior levels of full-stack. But what we need to acknowledge is that we're all junior and intermediate developers at something. The strength of a full-stack developer depends on the cumulative experience levels across all layers, with each layer assessable through the five facets of developer competency.

To be sure, there’s nothing wrong with being a really competent layer-heavy full-stack dev, especially if that’s what your dream gig calls for. But if you have your heart set on being as full-stack as you can be, chart out your weak points and stretch your expertise in those layers in order to work toward achieving the distinction of transferable full-stack.

Discussion

Categories
Share Article

Continue Reading