I’ve been a software developer for a long time and there is a new term in our industry that I see in far too many job postings is they are looking for a “full-stack” developer. Ever since I heard this term, it has been bothering me and I would wish it would stop being used. This article will explain why.
The Meaning
Let's talk about the meaning of this word. Since Wikipedia does not have a definition, I found this one on
Codeup.com.
The full-stack developer would be proficient, if not fluent, in:
- Server, network, and hosting environment
- Relational and nonrelational databases
- How to interact with APIs and the external world
- User interface and user experience
- Quality assurance
- Security concerns throughout the program
- Understanding customer and business needs
While this is a decent description of a full-stack developer, I have a major issue with it.I don’t think most people understand full-stack means “proficient”. I think most employers think that the developer is an expertin all the stacks. If the title was changed to “ProficientFull-Stack Developer” then maybe I would be okay with it, but I don’t like that term either.
Here is a job posting on
LinkedIn that I found from the movie company MGM and let's see if you agree with me. These are the responsibility that they are looking for someone who has just 5 years of experience and a bachelor’s degree with a master’s degree
preferred.
Working in this industry for as long as I have, I have done all these things in the past, but even now, I’m not “proficient” with all of them, which I will discuss. I’d like to point out that they are looking for someone to be proficient to expert for these big ones: Analysis and design, create and develop apps that includes testing, scalable, web and mobile and databases and integration. Another one that I am struggling with right now as I write this article is to develop/incorporate stringent security controls.
Wow, this is a lot for 5 years of experience.The posting goes on to say you must have experience in these technologies.
That isn’t all? Here is more…
And of course, they are looking for experience in the media & entertainment industry. I would love to talk to the person that got this job since there are very few software engineers that have all these requirements after just 5 years! The biggest kicker is the salary.
Back in “My Day”
Some of you might say to me that this type of developer does exist, but let's what you say after the following sections. Back, even 20 years ago, I might agree with you that this developer existed since I was one! In the late ’90s and early 2000s being a full-stack developer was possible. For myself, I usually worked at small companies or start-ups.
With only just a few to a handful of developers, we could deliver solutions that included the entire stack. We had to do it all and I was part of some very successful product launches. Heck, I became a patented inventor at one of those companies!
Working in very small companies can’t propel your career faster!
While programming has come a very long way since I started, back in my day, it was easier. The only user experience stacks were mostly Windows (I started in 3.1), MAC (which wasn’t used much for business software and still isn’t), and the web which barely anyone even heard of. When I started writing web sites in 1994, there weren’t even tools to help, so I had to use Windows Notepad! Backend databases were either SQL Server or Oracle. We didn’t even have web services, so we had to use other mechanisms to transport data from server to client or server to server. Security was even easier. In the Windows world, we mostly used Active Directory or create custom security.
So, as you can see, it could be possible to be experienced in all these layers (stacks) and I would guess that most of the older developers out there were.
Today’s World is Much, Much Different
Now, let's contrast the time when I started programming to2020. Maybe because I am older now, but I feel developing applications is much more complicated and, in some cases, a lot harder. When I started, we had only three real user experience stacks, but let's explore since today there are so many choices when using Visual Studio.
Computers
For computers used for personal and business purposes, this is what we have just in the .NET ecosystem: Xamarin, Windows Forms, Windows Presentation Foundation, WPF Browser App, Windows Services, Universal Windows Platform, and the multi-platform native UI coming in Microsoft Maui.
Mobile
When I started, we didn’t even have mobile. Rarely anyone had a mobile phone except for the very rich and they could just call phone numbers. Now we have Android, iOS, Tizen, Windows, and many more. Here is just what I could find in the .NET ecosystem: Multi-Platform with Xamarin, tvOS App, Android App, Android Wear App, iOS App, watchOS App, TV Service Extensions, Raspberry Pi Project, Native-Activity Application (Android), Basic Application (Android, Ant, Gradle), Blank App (iPad) and more.
Windows can also be used on apps such as equipment in warehouses like scanners and more.
Web
The web is so popular now that if it when down for somereason, the entire world would screech to a halt! In the .NET ecosystem, the choices are ASP.Core Web Application (that includes Angular, React.js, and Redux), Blazor App, ASP.NET Web Application, Web Project (Django, Jade, Vue.js, Flask, Bottle, Node.js, and more. For the server-side of the web, we have Web Services, Windows Communication Foundation, Web API, gRPC Service, andSyndication Service Library.
Cloud
When I started developing on servers, we either hosted them in the office or used an Internet Service Provider (ISP). Now we have the “cloud” that drastically changed the way we architect and code solutions. There are so many to list, I will keep to what is available in Visual Studio. They include most everything from the other stacks and Azure Functions (microservices), Worker Service, Service Fabric Application, Azure Could Service, Azure Resource Group, Azure WebJob, Storm Application, Container Application for Kubernetes, Azure Stream Analytics Edge Application, Azure Stream Analytics Edge Application, Azure Stream Analytics Custom Deserializer, Azure Stream Analytics UDF Project, Azure Stream Analytics Application, GraphQL and many more. If you can include everything Azure can do, I would have to write a book just on that alone! Add on top of that Amazon Web Services and the Google Cloud, and the number of choices gets huge!
Odds and Ends
Here are some more available just in Visual Studio: Cocus, Epic Games Launcher, Machine Learning projects, many Office projects that include SharePoint, and more. The list above does not include all the other things we are supposed to be proficient at are unit testing, security (a big one), design, deployment, maintaining servers, databases, and services and the list continues.
If you are using any of these platforms, then I have no idea why you aren’t using Visual Studio? It can do so much, it’s incredible if you ask me!
Still A Full-Stack Developer?
After what has been outlined, do you still feel you are still a full-stack developer? If you went into an interview for the MGM job I mentioned, could you answer off the top of your head, questions related to anything listed in the job posting to their satisfaction with 5+ years of experience? I highly doubt it and if you still feel you can, let's do a live mock interview, with me, and see if you can!
There are many of my friends that I consider much more intelligent than myself and could not get past even the first interview at Google, Amazon Web Services, and even Microsoft. One of those people is me! I have interviewed at Microsoft three times, the last being in 2019 for the .NET Runtime team and even dotNetDave could not get past the first interview!
Remember, anything, in your resume is fair game when it comes to an interviewer asking you questions, so if it’s there, be prepared to be asked, even the most mundane skill. On the other side of the coin, much of what is in job postings is not what they arelooking for. Most all sound like they are looking for what I call the “God Programmer”, who does not exist.
My Worldly Advice
Before I give you my worldly advice, I’ll tell you about an interview I did once.
Interview at E-Commerce Website
Here is a story I’ve never really told too much. Once I interviewed for an e-commerce website here in San Diego, California that sold automobile parts. The first interview with the CTO wentvery well. We got along so well that the interview latest twice as long as it was supposed to. When I left, I felt I nailed the interview and thought they would offer me the position. I was to be the lead developer for the team, a position that I like and do well at. The next day, I got a call from his assistant who told me that they wanted to do a second interview. This is typical, especially if you are going to be managing people.
When his assistant called, he told me that the second interview would be a test. I would be asked to build an e-commerce website, from scratch, in 4 hours! What? I never heard something like this before, especially for a lead software engineer. I can see them doing this for beginners to assess their skills, but not someone at my level. I seriously doubt that anyone could do this in 4 hours. I felt that this an inappropriate request for a senior software engineer but didn’t know if I was being unreasonable.
It just so happened that the user group I use to run had a meeting that night. I told this story to some of the other developer friends I know,and they all agreed with my feeling and said they would not do that for an interview. The next day I told the assistant that I would be passing on the rest of the interview process. I was disappointed for two reasons. The first is that it’s difficult to find a manager that is easy to get along with. The second was that I wanted to get back to leading developers!
A Better Way
In my mind, saying that you are a “professional developer” means you are full-stack. If you want to be a lead developer or architect, you must know how all the stacks work together. That is the most important thing, not that you can sit down and create an e-commerce website from scratch in four hours. Seeing the “big picture” and architecting solutions will take you far in this career.
With that said and my feeling that it is very difficult to be an actual full-stack developer in today’s world, we should also come up with a list of other ways to describe what developers are best at. Here are some examples.
- Frontend Developer
Frontend software development involves coding the user-facing aspects of a website or software program. As a frontend software developer, your job is to use your skills to address the look, feel, and overall user experience of an application, more so than the speed, efficiency, or resilience of the backend of the application.
- Middleware Developer
A middleware engineer is a computer analyst who connects one computer system to another and ensures that data flows smoothly through both systems. As a middleware engineer, you solve any technical issues that arise between the systems and develop applications using middleware software to enhance business efficiency and insights.
Want to learn more about full stack developer and who a full stack developer is and what are the expectations from a full stack developer? Watch this video to learn more where David, Mahesh, and Andy talks about full stack developer and their role.
Summary
One more thing… whenever I hear “full-stack developer” it signals to me that you know some about the stacks but are not an expert at any of them, how could you be? This would be difficult for even the smartest developers in our world. Typically, teams hire people with expert knowledge of one or just a few of the stacks not all of them, unless it’s a startup. I would never use the words “full-stack” for me or anyone else.
I admit I might be thinking too literal writing this article so I will say I’m okay with “Full-Stack Architect” but then again, architects should already be that. We don’t need to say it. One thing I always told my students at the University of California San Diego is that after you learn the basics of programming, focus on the stack you are most interested in. After that, start moving to the other stacks. Trying to learn everything when you are a beginner can be an uphill climb and so frustrating you might consider another career path… I’ve seen this happen.
Can we just stop using the term “full-stack developer”?
What do you think? If you have anything positive or negative about full-stack developers, please comment below.