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:
- ".Net is not open source!"
- .Net is limited to Windows!
- "Developers can't influence the future of .Net"
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:
- "Mono is a small initiative just to entertain some guys"
- "Voting features is not the same as contributing to sources as it happens in OSS projects"
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.
- Microsoft open sources .Net
- Microsoft .Net will have official distributions for Linux and Mac OS.
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.
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.