Why Full Stack Development is Too Good For You in 2017
Namaste readers. It is always said that being a software developer is a lifelong learning affair. Since the trends and technologies get the expire ticket often in the software field, one should be ready to cope up with a sudden change. It is a continuous treadmill where relaxing is seldom a choice.
Many software development & engineering jobs are flooding the current job market. If we analyze the trend, only a few of the boxes will be ticked hardly while others have very less impact or significance. Even though the need for Data Scientists & Analysts, Big Data experts, AI is raising over past three years, it is not reaching the same demand level as a full stack developer or a full stack engineer. There are few reasons for it.
Note: I also wrote a programming book. If you are a software developer by chance, please do check it out.
Before, we all know these roles exists in software world from a very long period and some of them are new ones:
- System Analyst
- Software Developer
- Software Engineer
- Database Analyst/ Admin
- Data Analyst/ Scientist
- Big Data Developer
- Game developer
- Network Security Professional
- Operations Engineer
- Front-end Developer
- Web Developer
- Full Stack Developer
- Back-end Developer
- DevOps Engineer
Out of these many specializations, only a few are very hot right now in the beginning of 2017. What is the reason?. It is due to the saturation of certain technologies and discovery of new businesses in form of startups. The explosion of startups and micro-businesses caused a wide set of skills to be needed as a benchmark. In those, full stack web development is one.
If you consider the technology positions which are in demand previously in various US states:
How Full Stack Development stands out in the group?
The common meaning of full stack developer is this
“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(at least) combination of following things
Front-end Development + Back-end Development + DevOps + Design
Apart from building web applications comfortably, a full stack developer should know how to deploy, optimize, automate the application.
Full Stack Development is a Breadth First Search (BFS)
If you study graph theory, there you might have encountered graph traversal algorithms. Every computer science student knows them very well.
- BFS (Breadth First Search)
- DFS (Depth First Search)
I am here going to produce an analogy which compares full stack development to other specializations in terms of traversal of multiple technologies and fields.
BFS is a traversal algorithm which in the first turn visits all adjacent nodes to a root node and then starts digging deeper.
DFS is a traversal algorithm which first touches the bottom of maximum depth of first child node and then returns backs and starts the process from a second child.
How your learning should be? DFS or BFS?
The answer to this is a personal choice. A Ph.D. student likes a depth first learning because he/she 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. Consulting is a trivial choice for corporates but for startups they cannot create a hundred roles for hundred things.
A full stack development is a breadth first learning where you first try to know how to operate things and then try to deepen your knowledge in that by continuous work. From our school time, we implemented this BFS by studying various subjects at the same time. There is nothing new in this technique.
The picture shows the diversity of areas where a full stack developer works and gains experience. Since he needs to take care everything from the beginning to 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 useful you become to your organization.
In 2017, companies need people with wide range of skills. They are not looking for conservative candidates who has experience in a tool or technology no one knows. Embracing open source knowledge will make recruiters queue for your interview(then consume your services).
Are you passionate about learning?
If you are a kind of developer who learns quickly and always ardent to try new things somehow, this profession best suits you. Full stack development is all about implementing things, knowing them and improving them.
Continuous work gives you the variety of insights of development. As a full stack developer, to crack a problem you know where to start, what to use and how to react for a new requirement.
Pushing the limits of a web developer
Have you ever thought in the game of Cricket 350+ scores are possible in one day?. In Tennis game too, the serving speed and power hitting are improved. Aggressiveness is doubling every decade to make the sport more interesting. All professions are evolving too. Computer science and software development are no exceptions. In the primitive era, people used to hire a specialist to perform a task. But now, in the cloud computing age the aggression in learning things and making changes is usual.
Like in children’s cartoon Pokemon, how a Pikachu evolves into a Raichu, a normal web developer is 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 not ideal. As a wavelength range in a color spectrum, skills to acquire the status of full stack developer can vary according to the requirements. But in my opinion a developer can become a successful full stack developer if he is:
- Able to work with CSS & JS well (Media queries, Single page applications & DOM, ES6). Knows streamlining tools like Grunt, Gulp & 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 has a valid reasoning to do so.
- Choose the trivial good solution and improve it all the time
- Can automate release cycles with the knowledge of Chef or Ansible. Automate logging and failure retrieval.
- Love to context switch from one domain to another, one technology to another swiftly and be able to finish tasks in the time.
- Having 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 one should stretch his arms for full stack development. First, it makes you learn new things all the time. Technology is changing briskly and sticking with same work for ages may deprecate your career options. You are more valuable 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 more that your paycheck is fat. A salary study from Indeed.com tells that an average full stack developer in San Francisco, CA earns nearly $ 1,30,576 per annum where as a normal web developer makes about $ 94,614
Even in India, the people with skills of full stack development are in full demand in 2017. Indian startup market recognizing the significance of full stack development lately and giving importance. Software companies from major cities like Delhi, Mumbai, Chennai, Bengaluru are posting jobs for full stack developer roles in linkedIn.
Negative points to ponder honestly
Full stack development can also bring few drawbacks and may not suit all kinds of people. It has following disadvantages:
- People may call you Jack of All Trades but Master of None. Even though it is partially true, it is your responsibility to keep up with the knowledge you gained. Writing a known technique in a blog, taking notes can help you remember tricks of your current work for later course of time.
- Your current working region may not yet adopt this full stack style
- For freshers, they need to work and prove in startups to be a Full Stack Developer. Only a few are given freedom for what they do in the beginning stage. So your company decides what you will work on at the starting point of your career. So plot a clear plan before getting out of college
Coming to me :)
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 to perfection. I am traveling a long path to full stack development and finished three years of journey with ups and downs. A lot of things have changed and changing while I write this article or while you read this. As I told previously, full stack development is not accurately defined, it is the dedication and grasping things that takes you closer to it.
The mastery in the full stack development is a regulatory knob, not a switch
I initially started my career working on Python & Flask. Then explored Databases like Mongo DB and MySQL. Cached things with Redis. Pushed code with Git. Worked on plain vanilla JavaScript. Got an understanding on event processors and message queues like Celery and RabbitMQ. After that moved to Django. Acquainted with AWS, Nginx web servers. Developed code in CoffeeScript and Backbone JS. Played with Angular JS to create a chrome extension for my company. Currently writing a lot of JS code (client and server). Since I worked in few great startups, I got the freedom to work on all these things. I thank them from the depth of my heart.
Final words
My suggestion to the upcoming & fellow developers is this:
“Always be enthusiastic to learn new stuff. Don’t stop with what you know. Attend meet-ups and tech conferences to find out whether the tech world has changed a bit or not. Either it is a DevOps or UI/UX or Backend, it is yours. Read well. Experiment well. Don’t be afraid of CSS. Buy a t2 micro instance of AWS and experiment load balancing. Use docker to separate your work environment. Achieve full stack wizardry. Eat well. Sleep Well. May the force be with you” :)