I'm a fan of John Sonmez. For the most part, he offers quality advice. There are two things that he constantly harps on and those two things resonate with me. Number one: you need to have a blog and write regularly. Now, I said it resonates, not that I have integrity. While I agree wholeheartedly with John when it comes to the value of this, I fall short when it comes to consistent blogging. But, I intend to change that as I follow along with John's blogging course.
The other major piece of advice John Sonmez pushes: become a specialist. If you have deep knowledge in a particular area of software development, you'll be much more valuable than you will be as a generalist. Think about that. If you were looking for a job and your main qualification is that you're a web developer, that's not a terribly helpful.
What kind of web development? It's such a broad category. You know HTML really well? Some CSS perhaps? You can sling server-side code using ASP.Net? Great, but that's too broad to make you stand out in terms of skill set. Having a general set of skills isn't a bad thing, it's just not something that's unique and a unique skill set is something special.
This idea of specializing has long been on my mind and I have a hard time deciding what to specialize in. But, I think I've arrived at a conclusion. I'm strongly considering specializing in Xamarin. There are many good reasons to do so, but there are also risks. I truly enjoy mobile development, but it's a big pain too. In terms of marketability, having deep knowledge of cross platform app development is very valuable.
Of course, I considered just specializing in iOS development. It's a great place to be. But, there's a lot of iOS developers out there. As much as I like Swift, I know that I'd have to learn Objective C if I truly wanted to have deep knowledge on that platform and I'm just not willing to work with that steaming pile of syntax. And then there's Android development...no. Just no.
The risk is that, if I do specialize in Xamarin, I'm putting a lot of time and effort in a single platform. It could fail, I still have to learn the iOS and Android API's (no getting around that), Microsoft could decide it's not viable and pull the plug. There's a lot of risk, but, I think that's the case with anything. I'm willing to bet my time on Xamarin and I'm pretty sure that it will become my speciality.
What do you think about specialization? Do you have a speciality?