Specialization is Important
if you want to go to doctor, will you go to general physician or find a doctor who is specialist in that field? if you have a problem in your carpet, will you call any mechanic to fix this or only that guy who is specialist in home floor carpet.
Specialists have great knowledge about their area that where to start to diagnose issue and what is best way to finish that.
Same thing applies to our career, we should also be specialized in one of area. Most of us are afraid that if we are specialized then we will be stuck to that area, our job pool size will also be less and very less companies will approach us. Point is true, being generalist, you are eligible for bigger pool but mostly companies do not want jack in all trades, they hire multiple specialist for each area to ensure that things are getting done correctly. Think about a project where Project technology is Java Spring MVC but no-one in team has Java Spring MVC specialty. What will success ratio for this project? Will team, who has only Java knowledge, able to implement project correctly? That’s why companies find someone who is specialist in Java spring MVC so that he can guide team correctly to make project successful.
In this example if you know Java, you may be eligible 500 jobs, now if you decide to specialize in Java Spring, you may have only 200 jobs available. Now if you go further to narrow down your job market and having specialty in Java Spring MVC in web development area only, your job pool will shrink to 20. Still you have 20 jobs, still plenty of jobs to choose and your chances of getting hired in one of these 20 jobs are high because you have specialty to target these jobs.
Pickup One Specialty
There are different kind of specialty like framework specialty, technology specialty or methodology specialty. So first thing you need to choose that what kind of software developer you want to be. Whether you want to work on frontend applications like creating and programming user interface using Hybris, Asp.net, Salesforce. Or do you want to work on middleware applications like writing ESB layer. Or do you want to work on backend applications like working on database. There are so many areas to be specialized like operating system, machine learning, AI. You need to choose only one.
Once you choose your area of interest, check the job search websites and see what specialization, companies are looking in that area and choose one. Keep repeating this step unless you feel that given specialty is big enough and not overcrowded.
Try to be as specific as possible, you will be in much higher demand in your specific market. and do not worry, you can always change your specialty based on market requirement. John Papa was specialized in Microsoft Silverlight, once it went away, he changed his specialty in single page programming.
Full Stack Developer
In today’s technology world, you need to have wide variety of skills. You should know various technologies but still you should have at-least one specialty. Knowing multiple technologies will make you more flexible and versatile developer. But it will be very hard for you to market yourself as Jack in all trades. Even companies also do not hire these types of person.
So learn as much as possible but keep at-least one specialty to make yourself unique.