Yet these days as I'm looking for work, all full-stack offers are about client-side web development with a little bit of backend Node.js.
Is my definition completely wrong? How are people with wide-ranging experience supposed to call themselves?
Functionally today this usually means anything from CI systems and OS/networking config all the way up to CSS tweaks. Sometimes though, it extends to lower level things, hardware things, mobile development, more "business" things like SEO or understanding marketing -- it's similar to "a utility player".
I do think many people think of it in the context of just web dev, though.
That person is full-stack :-)
System architecture, devops, database design, backend processes, server side code, website, design, ux, hi, html, css, js… the list goes on.
But I also observe that a lot of companies have trouble coming to terms with the fact that they do not in fact need a FULL stack developer; they might need a front-end dev who can implement the occasional API endpoint themselves. But that person will never touch DB schemas or such.
I think Full-Stack has become a term that's too often used by non-technical people. just my two cents
To me, and I would describe myself as one among other things, a “full stack developer” in the “web developer” sense is someone with F shaped skills in web development. Able to to get by anywhere on the stack, but with deep understanding and expertise in both a particular backend and a front end tool.
An F shaped full stack developer is someone you can rely on to work on you whole stack, but with particular emphasis on a key front end and backend area.
Many people deride “full stack developers” as “jack of all trades, master of none”. I couldn’t disagree more, full stack developers are the artists of the web, the true creatives, pushing development forward and inventing new things.
I majored in CS 24 years ago (am I old now?) and have had my fingers and toes just about everywhere in the last few decades.
I think your definition is pretty good but I think the primary question/problem is that too many people who don't really understand what it means just throw it around — especially in management/hiring/hr/etc.
At the end of the day, if you wanted to be nit-picky the response would be "what stack?" because no one is the master of all stacks and all things. I have worked with some amazingly talented people in my career and everyone has gaps, unless you're constantly learning and never building.
Maybe the real question/concern is that they're going to expect you to do N jobs and only pay for 1.
What you should really look for when you hire people isn't what they claim to know and ace on a "is X a native type in Y?" they question but instead how they think and how they can learn. Developers who are curious and want to learn are far better imo than ones that claim they know everything.
But how it's used? A browser-based client and a bit of server code probably.
These are the people who can see the big picture and have "enough skills to be dangerous" in each field. These skills are user experience, user interface, getting things done, communication, programming in various languages, architecture and devops, debugging and bug fixing.
Of course on the lower level there is API design, writing type safe code.
And on the even lower level there is optimising SQL queries, writing Chromium patches, designing network protocols, defining new EcmaScript primitives. These are extremely specific skills and people who can do them might have more narrow and deeper experise.
It ended up being a bit o a ramble, hope it hints at a useful perspective.
So, unless your are one of the first hired developers in a newly established startup that develops web products, fullstack means you are able to write api endpoints, db migrations and react/vue/whatever components.
I've worked on everything from CSS to microcontrollers. For CSS/SCSS on the frontend (though I generally rely more on things like Bootstrap). I'm very comfortable working in JavaScript land. I worked with jQuery and Dojo in the 2010s and nowadays work with React. I've built "web view" style apps (an app you most definitely have on your phone) and worked with Android-Java and iOS-Objective-C native level code to interact with the phone-OS apis and make backend calls with auth, multi-level-caching, and retries.
On the "backend" I've worked primarily with Java (but Go and Python rock too) but other languages as needed. Mostly Spring Boot & MVC or Dagger+Lambda based backends using API Gateway, Ec2/Fargate/Lambda and cpu, and RDS and/or DynamoDB (depending on the use-case).
From college, I also have an EE degree alongside my CS degree and worked in IT part-time while going to school.
Professionally, I've also lead teams to deliver multi-year projects successfully. I conduct interviews, do mentoring, evangelize best-practices and CD/CI, and go on-call once every two months.
If there's a problem and it has something to do with a computer and the internet, it's safe to say I could help solve it and deliver what a company needs.
Like I said, I mitigate the "edges" by leveraging: I use bootstrap to avoid writing too much CSS and I use ORMs to interact with DBs. In the "middle" I let React and Spring do what they do best. I'll admit my SQL could use some work, but I've also been on teams with a dedicated Business Intelligence sector. I haven't worked a whole lot with "native" mobile views, again, leveraging "web-view" style (think React Native) UIs.
Sure, there are folks who spun up a react and express CRUD stack and call themselves "full-stack" but there are also people who have worked with many aspects of the bit and baud.
I'm terrible at designing, management, or "product" management. But I'm pretty decent at all of the others, stronger on some areas and a bit weaker on others, but I can do all of what's required to ship a working web application/site to our customers and I have a pretty awesome salary because of this.
People with the most experience with developing across the entire software stack tend to just call themselves "developers" (or alternatively "burnt out").
I got the job, and I do think this is the real answer. Just be honest about which side you're better at and where your real experience lies.
1. Write sql, work with databases & nosql stuff.
2. Work with server side code in C# & nodejs. Read from some data source & built API’s.
3. Create a usable product in React / React Native / NextJS / Vanilla JS making use of those API’s.
4. I can make wireframes, design stuff in illustrator/photoshop.
In general I think people who can built complete products end to end are full stack developers.
You have the misfortune of being a generalist in a world that does not value generalists. Best bet is to look for a job in one area you like, then continue to help out wherever needed. This is probably easier at a startup where roles have not yet hardened.
Good luck!
You’re just a software engineer. Period.
And you try to avoid those inexperienced hiring managers/teams who still play these silly naming games.
Welcome to the new normal.