The What’s and the How’s of a full-stack developer’s skill set

Sahil Sharma
4 min readMay 22, 2016

--

In the previous blogpost, I explained how and why I believe in being the “Jack of all trades and Master of some”. Though I do believe in this principle generally in life as well, but right now I will concentrate on the skills for a developer. Believing and doing are two different things. To try different skills , first you need to know what to try.

Just a disclaimer , this post is intended more towards people just starting their developer ambitions, or the non coder people who work closely with the developers. Hence I have tried to simplify things and using simple terms, rather than going into the nitty gritty of the frameworks.

Especially in the early days as a developer , it is often hard to understand the big picture. People do know and sometimes are actually good at their part in the system, but often don’t understand how the small pieces fit together to build a beautiful product ( or even series of products). So in this series of posts , I will be giving an overview of the technologies that I feel are required to be a full stack developer (I obviously won’t be covering every technology, but only the ones that I thought were a good fit in the last few years). This can help a person trying to expand his/her horizon of skills.

Let’s start with a 10,000 feet view of a typical client-server application architecture.

As shown in the above diagram, there are two basic parts to a cloud based software — Front-end and Back-end(this can include web or mobile applications, or even desktop clients which need to talk to some sort of server). The flow shown above is not a hard and fast rule and varies from case to case, for example UI layer can actually directly talk to the back-end server, but it is not advisable in most of the complex apps being written these days. I will be adding links to other posts in this list , where I will be mentioning the technologies used in each of these layers:

BACK-END

  1. Database : This is the layer which is actually responsible to store the data in various forms. Recommending an article on Medium or liking a post on Facebook, every small action that a user takes, leads to some sort of data storage and that is how a user can see it when he/she comes back again.
  2. Server : Talking in very layman terms, instead of distributing a piece of code to every user for executing on their client(mobile, browser or a desktop), we keep the common code(responsible for talking to the database, common business logic and numerous other tasks) in one computer(or multiple machines) called the Server. The clients distributed to the users can then talk to this central machine to execute that common code.(This central machine can be, what we keep reading/hearing about, the “CLOUD”).

FRONT-END

This part will differ depending upon the application you are developing. A web app will typically have the following two layers.

  1. Front-end framework : The front-end framework is needed for managing the data or the state of the application and many other purposes. Again, this can be optional. For example you might not need this layer, if you are just trying to create a company homepage, or your personal online portfolio, or a simple to-do list. In these cases, there is very little user input and hence the UI layer can directly talk to the back-end(which can manage the state). However, most applications being written these days are complex enough that we do need a front-end framework.
  2. UI ( User Interface) : As the name suggests, this is what a UI designer is responsible for and will determine how your application looks. This layer will have all the colors, images, layouts etc. of each page/screen of the application.

In case you are building a mobile app, this front-end layer can be a single layer but the actual code will be different for different platforms or same for all platforms. Read this post for more details on what languages / frameworks you need to use for what kind of apps.

In case you want to create a desktop application, your front-end layer can vary. You can create a desktop app using C#, Visual basic, Java RCP(for eclipse-like apps ) and lately HTML JavaScript based desktop apps using Electron and similar platforms have also become popular. I will not be focusing these as of now.

--

--