It can be complicated for some people to tell the difference between both roles as these days there is quite a bit of crossover. However there are quite a few areas that are defining when it comes to seeing the differences between both job titles.
Full-Stack Developer Job Role
Full-Stack Developers are capable of working on both the front end and the back end of websites and web applications. This means that they should have a knowledge of HTML, CSS and Javascript as well as a front end framework like React, Vue and Angular. These type of developers are capable of working on the designs and are good in client facing roles. In terms of back end skills they should also have an understanding of how databases and servers work and they should be able to create API's that can connect to the client front side applications. They typically also know at least a few back end programming languages like Node, Python, Kotlin, Java, C# or something similar which is used for writing code that works on the server.
These days it is quite common for Full-Stack Developers to be polyglots which essentially means that they know multiple scripting languages and can adapt for various responsibilities. This can include working on a web, mobile or even a native technical stack. Knowing how to deploy your code and having some experience of Dev Ops is also a requirement. As creating an app that works the same way in different environments is good for production which is why Docker and Kubernetes are great tools to know.
Software Engineer Job Role
Software Engineers are more focused on creating native apps for desktop, mobile and even other platforms like consoles, set top boxes and TV's. The role is more system based compared to that of a Full Stack Developer who would usually be working with the web. These engineers are specialists in their field of work and typically use programming languages such as C#, Kotlin, Java, Swift and other general-purpose programming languages like C++. In terms of work they are used to building applications that can run on an operating system like Windows, macOS and Linux.
In these types of roles Software Engineers tend to work on various aspects of the application that they are tasked with working on. Whereas in contrast a Full Stack Developer might be working on all areas of the app and it might not be a requirement to be as team focused although this depends on the role. Because of the technicalities of working with different operating systems Software Engineers have a good grasp of system architecture and the notions of Computer Science when applied to this area.
Conclusion
Both of these career fields are highly sought after so whichever path you choose you are going to find job opportunities. The role of a Full Stack Developer is one who develops applications that can be accessed anywhere on the internet. This means every website that you visit and all of the data that is stored on it. In contrast a Software Engineer creates applications that get installed in an operating system. Like Microsoft Office, Adobe CC, Visual Studio Code or any app that you have on your computer. The same can be said for any app that you have installed from an app store because it was likely that it was created using Kotlin/Java if its Android or Swift if its for iOS.
Despite these differences the lines are starting to become blurred between the two. For example it is possible to create mobile apps using React Native which expands a Full Stack Developers skillset. And you can even create desktop apps using HTML, CSS and Javascript if you use Electron. Many popular apps have been created using Electron such as Slack, Visual Studio Code and Discord.
Top comments (11)
First of all, thank you for bring in this topic, I believe that what you said is mostly true.
Second, I believe that our reality should not work in this way, about the blurred differences.
The big problem with our profession is that is very young the first personal computer was introduced to the market 50 years ago. Compare this with medicine for example which has been around for thousands of years. The two terms, enlisted by you, have been grown organically. I think both of them are use inappropriately. Like software engineer, there is no reason for calling engineer to someone that can follow a tutorial and create an app or a module for a system. The reason for calling Software Engineer someone should be because they are practicing software engineer not because of the kind of work they do. I know people that can make apps in C++ and they don't care about SOLID, Refactoring, TDD and of course they are all the time wasting time using wrong approaches to solve problem.
I think that any programmer doing any kind of code for any purpose can be Software Engineer as long as he is doing it professionally, which means prepare themselves continuously. I am reading a book called Software Engineering at Google in the first chapter they define software engineer as a thing which is in 3 dimensions, regular programming is in 2 dimensions, you combine knowledge and skill and you get program. However, when you do software engineer you want to consider a third dimension which is time. Once you create system to scale to resist years to pass, you are doing software engineer.
I consider everyone who works with software a software engineer, devs, testers, ux, architects, ops, scrum master, product owners, Deb managers etc. That is my personal opinion and it is high time the industry removed the stupid segregations.
On a very personal note, maybe that would also stop irrelevance infiltrating the industry and finally bring some alignment to all involved parties to what it takes to design, build and operate software. I'm sure that would scare away some people, old school style.
Great stuff on full stack and software development engineers, today I know the what exact difference is. Thank You Andrew.
Itβs always interesting to read write-ups of job titles, because as time moves forward the roles change but also people have differing views.
The way I saw it was that Software Engineers were more generalists, getting involved in pretty much any aspect of computing, whereas Full-Stack Developers were more specialised, being concerned primarily with web development.
Slightly tenuous links made here.
I have in the past, been the only Developer to work on a system, that included a front end component and back end component (and DB), but it was only accessible within the company (not accessible via the Internet).
I have also in the past, worked on a Development team where my Java code (that you list as being the realm of Developers, not Engineers) was compiled and then installed somewhere that the OS could access.
I'm also pretty sure that the people that wrote parts of MS Office, Adobe etc, were Developers, not Engineers. The popularity of the product is a function of the marketing department, not the job titles of the Dev team.
To me, the thing that separates Developers from Engineers, is their viewpoint (forgoing the debate around "Engineers must have qualifications"). Developers have a "ticket munching" mentality, even if Senior. Engineers have a bigger view, and know when it's sensible to go have a chat with a BA to clarify they actually meant the thing written in the ticket, etc.
Software Enginner is an academic degree that you get once you graduate from technical universities.
Full-stack developer is a self-imposed title based on the experience one has in the line of work.
So, if you graduated from a faculty like computer science and have the experience with all the stuff you mentioned above i guess you can consider yourself a full-stack software engineer?
Good question. Ironically the title Full-Stack Software Engineer actually exists. I was looking on a job board and for one role it was purely the MERN stack they were using. So everyone has a different interpretation of what it means.
I also found another posting which mentioned mostly a web technical stack but then they said a love of software and coding.
Itβs a combination of both this topic is open for interpretation and discussion because everyone has their own opinion. Based on job postings a lot of this information is correct I think. What is your take on it?
Great stuff on full stack and software development engineers, today I know the what exact difference is. Thank You Andrew.
Thanks Andrew. This was helpful
Glad you found it useful.