Scan any job board for web developer jobs, and you’ll find plenty of postings seeking people with Full Stack capabilities. Companies are clearly seeking versatile developers who can be effective on whichever projects they’re placed.
By most definitions of the term, a Full Stack Developer is a jack of all trades. He or she is capable of working more or less anywhere in an application. But nothing about being a so-called Full Stack Developer connotes having unique insights into a problem or the task at hand, nor exceptional ability or skill. Don’t misconstrue me, I’m not saying there aren’t any highly skilled Full Stack Developers. Of course there are. However, If you are genuinely Full Stack, then modern web applications are too complex and multivariate for any mortal individual to be extraordinary in every aspect of what that entails.
I came to realize that calling myself a freelance Full Stack developer was doing me a disservice. Even though I am versatile, able to be productive and self-sufficient in most aspects of building web sites and applications, the title “Full Stack” doesn’t communicate any unique values and insights I can bring to a project. It flattens out my abilities and robs me of my hook. That puts me in a position of weakness in the minds of potential clients. Seth Godin articulated this dichotomy very clearly on The Tim Ferriss Show:
The statement, “we do this,” and being clear about what this is, and why is totally different than the freelancer who says, “What do you need?” Because “What do you need?” works great if you’re the local handyman. But it stops working great if suddenly there are a thousand local handymen and everyone’s a click away.
Framing myself as Full Stack made me a local handyman in the minds of potential clients. Because there are plenty of Full Stack developers out there willing and able to “do what you need,” I became one of the herd. I was interchangeable with multitudes of other developers, seen as a commodity. As such, I wasn’t offering any solutions by asking potential clients “What do you need?”. Without solutions, without the promise of unique insight, there’s little value to offer. That’s the death of a successful freelancer.
My most effective abilities—and passion—as a developer revolve around crafting humane user experiences. I want people to be able to use the things I build in ways that are helpful to them without them noticing. I want people to be able to do what they need to do with a minimum of fuss and then get on with their day.
I love thinking about the subtle details involved in crafting good UX and how to best execute them.
I love thinking about the edge cases, about how resilient and robust a user interface can be.
I love thinking about inclusivity. How do people who aren’t as tech-savvy as we are view what we think of as “clear” and “obvious”? What about those people who don’t have the luxury of fantastic hardware and fast broadband? What of power users who prefer to navigate with a keyboard rather than a mouse? And of course, what about those who have low vision, color blindness, or any of a constellation of other disabilities? How can they best be served by what I build?
In short, I do my very best to ensure that my client’s products are useable and clear to as extensive a cross-section of their audience as possible. That’s a far cry from being Full Stack, but that is the solution that I offer. That is my value. That is my hook.