From time to time I discuss with some colleagues, whom I met in university and we graduated together, about the career path in software development that each of us have chosen. I think most of us have chosen the path in an organic way, mostly influenced by the technologies that our first employers had adopted by that time. At least, in my case, it was what happened, and what influenced me the most to have chosen to be a Microsoft .Net developer. However, the majority of my friends have chosen non Microsoft development stacks. Every time we discuss this topic I always have to listen some critics:
Even when I try to explain the Mono project, or how Microsoft encourages developers to participate and vote in UserVoice, the response from them is always the same:
I think most of this behavior of being anti Microsoft have historical reasons. We graduated all in the end of the 90s, and the majority of our projects were developed using the C language targeting Unix systems, with Emacs or vi as the preferred editor. By that time, it was not very fashion to be a Microsoft developer, programming in Basic or C++, COM, MFCs, etc. Therefore, for these guys whom didn't follow the .Net life, it's natural that they still have some issues with Microsoft.
Well, these last two days were made many announcements in the Connect event. To all my those colleagues:
So guys, what is your next complain now? I'm looking forward to meet up with all of you to check what are your reactions.
Personal advice to someone starting a software development career
My personal advice to someone that is starting his career in software development is to choose mainly one development stack: Microsoft, Java, Ruby/Rails, PHP, Node, etc. When choosing the stack, don't forget to look at what market is demanding in terms of skills to be sure that what you offer is something that the market needs.
Don't loose sight of what's happening on those different stacks: you'll conclude that typically the trendy practices will be available sooner or later in all development stacks and that the fundamental concepts won't differ too much.
Finally, and especially if you're doing web development where JavaScript is omnipresent, if node is not your main development stack, I suggest to look at it and try to have some knowledge and practice with node (and the frameworks available like expressjs).
It's very hard to follow close what happens in a given development stack, so imagine what needs to be done to excel in various development stacks. But nobody said that it was easy. Everyday there is something new out and it's very hard to know in detail everything. However, be aware that we need to stay close of what is new, otherwise you'll be obsolete soon.