Tuesday, October 28, 2014

Generalist or specialist?

Recently I had an interesting discussion with one of the Software Architects at my company about my future plans. My ambition is to remain versatile and broad, in the sense that I want to be able to work with many different languages ( C#, JavaScript, F#, PHP, Go, Python maybe ) and work with different paradigms ( OOP and functional ) and with different technologies ( SQL - NoSQL - Graph DBs ), platforms etc. etc. It's such a beautiful landscape of stuff out there right now, and I want to learn about it all!

Of course, there's the generalist vs the specialist discussion that I had many of times. I'm afraid I'm more of a generalist than I am a specialist. I know a little about a lot whereas there are people that know a lot about little. Which, according to the architect, might result in me being not as desirable for companies to hire.

This morning I decided I'm going to embrace and enjoy it, as opposed to force myself to focus on merely one technology. I'm a believer in 'the right tool for the right job' and I think that we need to start looking at that more broad than thusfar. For instance: use a graph database if you want to model things and their relations, don't use SQL. Don't build a fully fledged WCF service with n-tier application with EF on top of SQL server if you just want to store some reference values. Use a NoSQL document store in stead. If you're building highly concurrent stuff with parallel computations, consider using a functional programming language like F#. Microsoft has a rich set of technologies available for handling all of these challenges, but there's just beautiful stuff out there that's just a bit better at certain things. I want to add those to my technology toolbelt too. Thankfully, Microsoft seems embrace other technologies like Node in Azure and that's awesome! That means I'm on par with their current philosophy.

So, I'll stay true to what I enjoy doing and that's looking around me for cool new stuff. I don't think that implies having shiny-new-object syndrome since I want to know them but not necessarily apply them in my next project. Just knowing about them and knowing what problem they're trying to solve will give me a better understanding of the world of IT. And there's plenty out there too, so I can't complain !

No comments:

Post a Comment