Namaste readers. It is often said that being a software developer is a lifelong learning affair. Since trends and technologies often expire rather quickly in the software field, one should be ready to cope up with sudden change. It is a continuous treadmill where relaxing is seldom a choice.
The job market is also currently flooded with software development and engineering jobs. Even though the need for Data Scientists and Analysts, Big Data experts, and AI specialists has risen over past three years, it has not reached the same demand level as a full-stack developer or a full-stack engineer.
Out of the many specializations in our field, only a few are very hot right now. What is the reason? It is due to the saturation of certain technologies and the discovery of new businesses in the form of startups. The explosion of startups and micro-businesses caused a wide set of skills to be needed as a benchmark. Of those, full-stack web development is one.
Consider the technology positions which are in demand across the US:
How Does Full-Stack Development Stand Out?
The common meaning of full-stack developer is:
“The term full-stack means developers who are comfortable working with both back-end and front-end technologies.”
Technically speaking it is not a standard set by the industry. It is an evolutionary facet of skills. A full-stack developer always tries to learn open source technologies to apply them in his/her job. In my opinion, full-stack development is a minimalistic combination of the following: Front-end Development + Back-end Development + DevOps + Design.
Apart from building web applications comfortably, a full-stack developer should know how to deploy, optimize, and automate the application.
Full-Stack Development Is a Breadth First Search (bfs)
If you've studied graph theory, you might have encountered graph traversal algorithms. Every computer science student knows them very well.
- BFS (Breadth First Search): A traversal algorithm which in the first turn visits all adjacent nodes to a root node and then starts digging deeper.
- DFS (Depth First Search): A traversal algorithm which first touches the bottom of the maximum depth of the first child node and then returns and starts the process from a second child.
So, how should you learn? DFS or BFS?
The answer to this is a personal choice. A Ph.D. student likes a depth first learning approach because he/she can narrow down their work to a single unit at a time. But as a working software professional in 2017, you don’t have the luxury of time to build, test, and fix things.
A full-stack development is a breadth first learning approach where you try to learn how to operate in multiple fields (Front-end, DevOps, etc.), and then try to deepen your knowledge of those fields by continuous work. When you were in school, you implemented a BFS approach by studying various subjects at the same time. So this technique should be familiar to you.
The picture shows the diversity of areas where a full-stack developer works and gains experience. Since he/she needs to take care of everything from the beginning to the end of a web application, the developer should get his/her hands dirty with top level nodes first and then dig deeper. The more you learn, the stronger and more useful you become to your organization.
In 2017, companies need people with a wide range of skills. They are not looking for conservative candidates who have experience in a tool or technology no one knows. Embracing open source knowledge will make recruiters line up to interview you.
Are You Passionate About Learning?
If you are the kind of developer who learns quickly and is always ardent to try new things, this profession will suit you well. Full-stack development is all about learning, implementing, and improving upon your code.
Continuous work gives you a variety of insights that you can apply to development. As a full-stack developer, in order to solve a problem, you need to know where to start, what methods to use, and how to react to a new requirement.
Pushing the Limits of a Web Developer
All professions are constantly evolving. Computer science and software development are no exceptions. Not so long ago, people used to hire a specialist to perform a task. But now, in the cloud computing age, a wider breadth of knowledge is preferred. Like how a Pikachu evolved into a Raichu in the children’s cartoon Pokemon, a normal web developer is now evolving into a full-stack developer. There are few doubts about this particular area. I am going to clear them in the next section.
Who Is a Full-Stack Developer?
Full-stack development is a relative term. Like the wavelength range in a color spectrum, skills to acquire the status of a full-stack developer can vary according to the requirements. But in my opinion a developer can become a successful full-stack developer if he/she is:
- Able to work with CSS & JS well (media queries, single page applications, DOM, and ES6). Knows streamlining tools like Grunt, Gulp, and Browserify.
- Knows web frameworks (at least one) in and out. Ex: Django or Node JS.
- Worked with SQL and NoSQL for a considerable amount of time (MySQL, Mongo DB). Can model relations well. Can implement advanced queries and SQL Joins.
- Knows how to deploy his/her code on AWS EC2 with Apache2 or Nginx as a web server. Should have a working knowledge of Docker and Virtualization.
- Can design a web application end to end with many loosely coupled components. Should be brave enough to suggest the architectural changes if he/she has a valid reasoning to do so.
- Choose the best solution and improve it all the time.
- Can automate release cycles with Chef or Ansible. Automate logging and failure retrieval.
- Loves to context switch from one domain to another, or one technology to another, swiftly and is able to finish tasks on time.
- Has basic to medium level knowledge on hybrid mobile app development with JS, Chrome extensions, and progressive web apps.
Why Should You Go for Full-Stack Development?
When there is a multitude of career options available, why should you make the jump to full-stack development? First, it makes you learn new things all the time. Technology is changing quickly, and sticking with same work for ages may deprecate your career options. The more you know, the more valuable you are to a team and can assess decisions related to any aspect.
Second, the role pays you more. If you are a full-stack developer, chances are greater that your paycheck will be fat. A salary study from Indeed.com tells that an average full-stack developer in San Francisco, CA earns nearly $ 130,576 per annum where a normal web developer makes about $94,614.
Even in a booming and crowded job market like India, people with full-stack development skills are in full demand in 2017. The Indian startup market has begun to recognize the significance of full-stack development lately, and full-stack is subsequently gaining in importance. Software companies from major cities like Delhi, Mumbai, Chennai, and Bengaluru are posting jobs for full-stack developers.
Negative Points to Ponder
Being a full-stack development can also bring a few drawbacks and may not be right for everyone. It has the following disadvantages:
- People may call you a Jack of All Trades but a Master of None. Even though it is partially true, it is your responsibility to keep up with the knowledge you have gained. Keeping a blog, and always taking notes can help you remember the tricks from your current work that you can apply to projects later on.
- For newcomers, they need to work, and prove themselves, in startups to be a full-stack developer. Only a few are given a large degree of autonomy in the beginning stages. For most, your company typically decides what you will work on at the starting point of your career. So plot a clear plan before getting out of college.
Why and How I Became a Full-Stack Developer
I proudly call myself a full-stack developer (with terms and conditions). You may say no one is perfect. That is true. I am nowhere near perfect. I am taking the long path to mastering full-stack development and finished my first three years of the journey with ups and downs. A lot of things have changed since, or are changing while, I write this article or while you read it. As I told you previously, full-stack development is not accurately defined. It is, most aptly, a continuous learning process. The mastery in the full-stack development is a regulatory knob, not a switch.
My suggestion to upcoming and fellow developers is this:
Always be enthusiastic to learn. Don’t stop with what you know. Attend meet-ups and tech conferences to find out the latest developments in the tech world. Whether it is a DevOps or UI/UX or Backend, make it yours. Read well. Experiment well. Don’t be afraid of CSS. Buy a t2 micro instance of AWS and experiment with load balancing. Use a docker to separate your work environment. Achieve full-stack wizardry. Eat well. Sleep Well. May the force be with you.