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

Project Z750 part 18

I have done a bit of reading on how to clean brake caliper pistons, and found an article that said you could use fine wet and dry to clean corrosion off them [ http://www.motorcyclenews.com/new-rider/choosing-kit/2006/november/jan26-05-how-to-service-brake-calipers/ ]. as it suggested using 1500 grit wet and dry, I decided to be cautious and start with 3000 grit. I cut the wet and dry into strips about an inch in width. I put some wd40 onto a strip and started polishing the rear piston. After quite a while I started to notice the difference. it was getting cleaner. well, it was working, but it was going to take a long time. well, I was patient and I really didn't want to rush it and ruin the pistons. Over the next couple of weeks, I polished all of the pistons using the 3000 grit wet and dry. As it seemed it was going to take the rest of my life using 3000 grit wet and dry, I decided to take a risk and bought some 2000 grit. yep I was really pushing my luck here. I cut the 20...

Project Z750 part 3

I realised that this was going to be a little bit more involved than simply attaching a new battery and firing it up. I guessed that the alarm could be stopping the ignition circuit and that is when I found that the alarm remotes had non-replaceable batteries. I also read that if the alarm sits for extended periods with no power then it can be toast. So my next step was to remove the alarm. another Hmmmmm moment. I have never removed or fitted an alarm. I've never even looked into how they work and what they do, so this was quite a daunting task. I took the insulation off the cables that attach to the alarm. now we've all seen nice electrical systems with all of the different colour wires to make it easy to see what goes where, well this thatcham alarm had a very large bundle of cables and all of them were black. No help there. So I had a look at how they were wired into the bike's loom. there was a bundle of wires going to the rear, which I guessed were for the i...

Project Z750 part 16

The piston puller has arrived. it looks like a pair of pliers, but works opposite so that when you press the handles the "nose" of the pliers expands. the idea is that you put the nose into the piston, grip very hard and turn and pull the piston so that it comes out. the theory is great, but actually using one isn't. in use you are trying to grip as hard as you can, and at the same time trying to pull the piston out of the caliper (as well as maybe turning it if it's stuck like mine). it took a herculean effort to get one of the pistons out, I was gripping as if my life depended on it, trying to twist the piston and pull it out of the caliper. when it turned (a little) it gave me renewed hope of getting both pistons out, and eventually the piston was out, so just one more left. so now on to the fifth and final brake caliper piston. I put the piston puller tool into the caliper, gripped with all my might (no laughing please) and twisted. Well something mo...