Skip to main content

What does "Full Stack" mean?

I've been a software engineer for a little while and I see the term "Full Stack developer" more and more, but what does it mean?

Okay, let's walk through what a complete system will comprise of and see if we can work it out.

UI

First (from the users perspective) is the UI. It's how they interact and really all they care about (as long as the application does what is expected of it. Here is a list of some UI technologies that I know of
  • AWT
  • Swing
  • Qt
  • Android XML
  • MFC and VB
  • OpenGl
  • Vulkan

Communication Protocol

Next up is the communications protocol (as most applications these days are a thin UI talking to a backend server (we've gone back to the mainframe era!)
  • RPC
  • FTP
  • SNMP
  • SMTP
  • DDS
  • ActiveMq/RabbitMq

Network Layer

The communications protocol has to be transported between the client and the server somehow, so here we have the network layer

  • IPX/SPX
  • Token Ring
  • Bluetooth
  • USB

Server

So now we have data being transferred between the UI and the server, but it can't just appear at the server, there's software to write.

API

there have to be endpoints that can accept the requests from the UI, so here we have the server side of the network protocols
  • RPC
  • FTP
  • SNMP
  • SMTP

Processing / Storage

And here is where the actual work gets done, here is where we put the "Business processing" and store data for later use. Business processing can be done in any language, COBOL used to be the top, but I'm pretty sure it's not used that much in modern applications (so much for my diploma project). But it could also encompass larger technologies and not just the language used.
  • PL/8
  • Fortran
  • Smalltalk
  • Ada
  • CUDA
  • Beowulf
  • MPI
  • OpenCL
And data has to be stored for later use:
  • Structured data
  • Unstructured data
  • Bitstreams
  • HEX dump

OS

All of the above technologies sit on top of an OS, which is (normally) a very complicated beast (actually QT can run on the bare metal, but then it's acting as the OS).
Kernels can be broken down into quite a few different categories such as monolithic and microkernel and distributed to name a few. but the kernel is only part of the OS, there are a whole host of other parts (memory management, filesystems etc...) without which the OS would not function.
This is a whole series of articles in itself (which I may go into one day), but there are many OS's/Kernel's out there which could be used
  • Amoeba (distributed)
  • Plan 9 (distributed)
  • AIX
  • Mach
  • HURD
  • L4

Conclusion

One thing I have deliberately done in the above sections is (try) to avoid mentioning any of the technologies typically associated with a "Full Stack" developer. I dougt that any developer would be an expert in writing the assembly code to get a CPU to boot, initialising the MMU (and other CPU's in an SMP system), then writing all of the drivers so that the OS is ready for an application to be written on top of it.

and why develop all of these things when there are so many options out there? So what does this oft used term mean then?

from what I have seen it is actually referencing a very specific and narrow set of technologies. Namely Java, Javascript and HTML (and maybe docker or kubernetes and node).

but here again, we are being far too vague (well HTML is okay)

when someone says they "Know" Java, I can bet you that they don't. What would happen do you think if I was interviewing a "Java" developer and asked them how they would store a list of objects in a JavaME application? Yes, I know some would be able to answer it, but how many "Full Stack" developers would?

or how much storage they would typically have for a JavaCard application? or how about quizzing them about their AWT knowledge?

I'm pretty sure that they would flounder, yet all of these are part of Java. There are also the libraries and frameworks that go along with Java like Spring and JBoss, so anyone who says they "know java" can be considered to be stretching the truth.

It's the same with Javascript, any advert that ask for "Javascript" really mean Javascript plus quite a lot of the thousands of Javascript libraries out there. but which ones?

So what does Full Stack really mean? as far as I can tell it's just another meaningless buzzword used by recruiters to make them sound like they know what they are talking about.

Comments

  1. Well put together post Andy. Interesting even for a non programmer like me.

    ReplyDelete

Post a Comment

Popular posts from this blog

Triathlon Training in the new year

So, my 2019 training has got off to a good start. I'm running regularly and my knees seem to be holding up. I've got a training plan to get me to a middle distance triathlon in September and I am managing the run distances I have set myself. I need to find some longer cycling routes to work and ones with a few hills too, but that shouldn't be a problem. my weekly cycling distance is okay, I just need to move to get my ebike to be doing less of the work. last week I did use my normal commuter bicycle and managed the whole four days as well as my runs, so that was a really good sign. Swimming won't be an issue, I have always found that to be the easy part of a triathlon (not that I'm fast, but I can keep going, and I did manage to swim the distance within the cut off time when I tried the ironman 70.3 last time) The main worry about going longer is my knees. I've got a 10K booked in late January which will test my knees out and I'm hoping that they hold ...

First race of 2019

As I am aiming for a middle distance triathlon in September, I want to make sure that I can complete it before shelling out the (rather high) entry fee. my main concern is that my knees cope with the run section which will be 21 Km (a half marathon). In the past, I have had a bit of trouble with my knees playing up. I thought it was because I had run too much (increased my training too quickly, too many races close together, that sort of thing). So for the last 8 months, I have been trying to acclimatise my knees by running around 5km three times a week To take stock of how my knees are with running, I decided to enter a 10K race. The race I entered was the Bristol Race For Chocolate 10K. It sounded like a fun race and was on 27th January, which would give me plenty of time to train for my main race in September. I wanted a 10K as it is just under half the distance of my target middle distance and if my knees cope with that then I have plenty of time to increase the distance...

Wales 500 Post 2

Day -1 (of the rally) So, tomorrow, Patrick and I will be riding up to set up our campsite ready for two days of (not quite off) roading. I've got my camping gear packed, but I've been getting confused about how to pack things that I will want whilst riding vs stuff to leave at camp. Then I realised that I've never done that before. whenever we've gone on a trip we've always stayed a night and then moved on to the next place. Only once have we set up and stayed in the same place for more than one night, and that was at Assen to watch the MotoGP. Guess I'll get it sorted today. I think I've got everything I need, except a way to pump up my tyres if I have a puncture. I have a puncture repair kit, but no pump. hmmm, will have to think on that. I think I will be taking a rucksack so that I can carry stuff out on the rides with me, but I may try to attach it to the back of the bike instead of wearing it as it might get too hot. Today is wet and rainy...