Moving out in market hunting a developer job at times become very challenging considering the fact that this days 7 out of 10 JDs mention the requirement of a Full-Stack developer. So what is a full stack developer and why is it in so much into consideration now days? Before starting off with the topics, let me give you my quick introduction.
Hi Folks!! I am Monalisa Das working as a Full Stack Software Developer over 7 years now. The journey came with loads of struggling and learning & still it is (as the frameworks evolve, even we need to so that you can run in same pace & hold your position strong). In the article, I will try to jot down my journey to the point and which worked for me. As I mentioned, the journey came with loads of struggles, so of course there were challenges and failures. But then one should not stop. May be, you need a small turn to try out in other way to achieve your milestone. Anyways, now let’s get started
What is the role of a full-stack developer?
A developer, who is having working knowledge or skill set of both front-end as well as back-end development, is termed as a full-stack developer. Also, to certain extend they are also skilled with testing life cycle.
i.e., at any point of time, a full stack developer can work in any phase of product development. Due to such diversity, they are high in demand in market.
Why to become a full stack developer?
There are many reasons but I will try listing down the ones I understood with my personal experience.
- We are versatile
Being skilled on both front-end and back-end development, we are good at coming up with the best suited solution(s) wrt the customer requirement.
Being working as a full stack developer for years with different projects, helped me develop my logical skill which in return helps me to get an idea of how well the solution would work in real-time.
We are equipped to see the bigger picture, well in advance.
It’s very important to be upto the mark with the changing world. Hence, we keep ourselves upgraded with the changing markets so that we can fit in our knowledge to not only make the project easier to manage but also user friendly
When proposing a solution, we not only focus on technical aspects but also keep ourselves as the first user of the product.
This helps us to understand, me being a user what would I expect or what would be good & user friendly for me. Which in return help us to create the adequate design for the solution.
As we work on both front-end and back-end, we understand the product well and also can at times be a representor in front of the end-users or stake holders
We are like a one-stop solution provider or solver to the company.
If the product runs into an issue, the company is not required to run behind a front-end developer first to check if the issue is at client side and then run to back-end developer to check if there is issue in services or database. We, as one individual, are well equipped to identify the possible reasons if the product runs into any issue and solve it.
Apart from the above traits, who doesn’t want to save money. A company may be a place of work for us but a business for the owner and of course he/she will think of profit. And hence demand of a full stack developer is higher as compared to developers who are expertise in either front-end or back-end or devops or mobile.
Downside of being full stack developer
- As we are full stack developers, we tend to set high expectations.
- We are expected to be upto the date with end to end technology Upgradation. This involves huge learning.
- As we touch base each stage of developing a feature, at times lagging expertise in one particular stage is difficult.
Where to start
This is something subjected to every individual and the way they are comfortable. Below section worked for me but you can exchange the order.
- The universal basic
- The coding
The Universal Basic
When do you say that a tree is strong? By looking at its branches, leaves and flowers OR by looking at its stem and roots on which the tree is standing? Of course we look at its roots and stem. Why? Because the roots are grounded enough to provide all the good elements for a tree to grow and the stem to hold all weight. In short, if a tree has a strong base, it grows and holds so well, that nothing can break it.On similar basis, for anything to learn or get your hold on, your base or basics need to be strong. So no matter what, even if the world is growing with new technologies, functionalities and feasibility, you would not take much time to grasp and implement it.Under this section there are few points which I believe every developer should know.
Understanding programming basics
Do the ground work. Every programming language is designed considering some factors to make it powerful. Know those factors. For example: if you want to frame a sentence in any language, what do you need to know – The Grammar, which helps you to frame it in proper manner. Similarly, in programming understand the basic syntax, how to define the variables, how to use them, how to iterate in a list, how to create and use a function and many more.
Algorithm and Data structure
Many developers missed or don’t find it important to learn Algorithms. They think, we don’t really use them in real world. Whereas the fact is, they serves as important role when considering performance of your application. Assume an application, which has to evaluate voluminous data. And if your application is slow, then just imagine the time it will take to do your work. For example, if you want to perform a search on 10 Lac records. Boommmmm !! Your application is dead if the structure and logic written didn’t consider the performance. In similar kind of cases, data structure and algorithms come into picture. You can visit
Think over the big picture and manual Testing
Many developers, still, lag to think over big picture. They would still stick to what is written in the story or description of the requirement. Whereas, we as developer should always think over the picture. For example, owner of the application comes to you and say, “Okay mate, I want the application to have authentication facility” (the minimum requirement in any application this days). So for the owner what he would expect, that an authorized user should be able to successfully login in the application whereas unauthorized user shouldn’t. And for him what would be correct way to authorize, that the username/email should be valid. So you go ahead and apply the logic to incorporate the authentication functionality. Is that enough? No, it’s not. What if the email id never existed? What if some fake person if trying to access your application with a valid email? What if a fake user, is trying to change password of a valid user and trying to hijack his account? This way, your application will stand in a faulty and you would run into an issue. So it’s very important to think over the big picture whenever you are working on a feature. If you are confused what action needs to be taken (you have multiple solutions to address the issue), go back to the application owner and ask him along with providing the solution list. Let him select which one he would like to incorporate. & once you incorporate all the changes/logics, do a testing from your end. Be the user, who is using the feature. Try to break it.
Source code management tool
Think of a scenario where you are working with 5 more developers and each one of you are working on some feature. Some may be working on same feature. Everyone kept there changes in their desktop/laptop. And then there comes the time, when you need to give the final application to the owner. Of course you won’t give each solution each developer worked on. You need to consolidate everything, check the application is working as expected and then give it to the owner. But then you see, some developer applied a logic which is breaking feature of some other developer. Or the laptop/desktop of one of the developer crashed. In short, everything got messed. On other hand, think of a scenario where each developer is upto date with a common application having all the changes made by other developers. Won’t that be like a cake walk when you have to submit the application to the owner? Because you know, the application is working as expected without breaking anything.
This is where Source control management tool comes into picture. You can have a single place from where each developer is pulling the updated code and by end of the day, pushing there changes. Git is one of the majorly used. You can visit,
"https://www.softwaretestinghelp.com/version-control-software/" , to know more in details with different SCM in market. Having an idea of SCM, is always good and adds up to your resume.
HTML is use to create a structure of the webpage. Ie, it’s a collection of different elements to create a page. For eg: a login form has two text box and a button. So here, the text boxes and button are considered as elements for the login page. Below are few study materials which you can opt to know more over the same. You can refer,
Introduction to HTML – Dotnettricks.comand
In simple words, CSS is used to make your website or app beautiful. Imagine a login form where we have username text box at left side whereas the password text box at right end and the button is some other world. Of course, you won’t prefer such nasty looking site. Below are few study materials which you can opt to understand how you can glam up your website or app.
Fundamentals of CSS3 – Dotnettricks
Advanced CSS3 – Dotnettricks
CSS Tutorial – W3Schools
Become a Front End Developer - Dotnettricks
Your login form is ready, interactive and so is your database with user info. Now to interact between front-end and your database, we have something called middle layer which is one of the part in back-end development. In the middle layer, also at times, known as service layer, are the API calls. Application programming interface (API) is basically use to enable talking between the front-end and the database. To know more, you can visit
Web API – Dotnettricks
Web API Advanced Concepts - Dotnettricks
Web API Tutorials
Now your login form is interactive but then when user clicks on the submit button with username and password as input, your application should be capable enough to Authenticate and Authorize the credentials. And to do the same, you need to have the credentials been stored and mapped to the user who is registered with your application. To do so, you would need a place or a DATABASE. As the name says, a place which acts as base for your data.
There are varieties of database available in the software world. Below are few you can opt from,
Where to Code
Here you have two options, either you can have an IDE installed in your desktop/laptop or use online IDEs. My personal favorites are Visual Studio Code or
https://jsfiddle.net/. You can visit,
https://tms-outsource.com/blog/posts/web-development-ide/ to know more about IDEs and select your according to your need.
I know reading through the article; you must be thinking its loads. Yes, indeed. You are right. Also you will grow as and when you start implementing your theories in real world. Start thinking of features or functionalities you would like to have in your application and then try to implement it in different ways. The more you practice, the more you will get hold.