After almost a year of investigation, market analysis, and contemplation, I have decided to shift from Perl/PHP/MySQL to a Microsoft ASP.NET/ADO.NET architecture, focusing on C# development. This change will affect my current college enrollment, career goals, and all of my websites I currently own and/or manage. Why, after investing so much time in learning the LAMP (Linux/Apache/MySQL/Perl/PHP) platform, would I shift focus so drastically and move toward a closed-source Microsoft solution? The reasons are valid and numerous.
First and most importantly (and admittedly, the most self-serving reason) is marketability. I am in my junior year of college, working toward my BSCS (Bachelor of Science in Computer Science) degree. When I complete this degree, it is my aim to pursue a lucrative career in database programming and application development. When I analyze the market, I see more opportunities supporting Microsoft products than the open-source products I have worked with. Opportunities for experienced Microsoft application developers and data architects are far more numerous than those for Oracle, MySQL, and IBM, and they tend to be more highly paid.
Second, I have begun to question my support for the open-source community. Don’t get me wrong: I’m not at all suggesting that open-source software is bad, nor do I believe that it is a virus that will end the world as we know it, as many executives (from Microsoft, among others) would have us believe. I am a strong believer in using the right tool for the job, and in some cases, the right tool is found in an open-source solution. The theme behind open-source is that knowledge belongs to the world, and that having many contributors on a public project is better than having a few contributors working in secret. I still believe that certain things – most notably, the development of standards – should remain open to numerous contributors. But the longer I work in IT, the more I believe that a small number of well trained, experienced developers is more efficient and more secure than a large number of programmers with unknown and untested abilities. An open-source project, because its code is freely available, can be modified, repaired, or customized very quickly by a good programmer. Conversely, any flaws or vulnerabilities in an open-source app (and let’s face it, EVERY application has a few bugs) are easily visible to, and could be exploited by, a cracker, script kiddie, or even worse, a terrorist organization.
Third, the standards and support are more widely available on Microsoft-based products. Ever tried to find support for an open-source application? If you do ever find support documentation, it’s often written so badly that it causes more problems than you started with. Open-sourcers are often single individuals or small teams that focus more on writing code than on documenting it, and when the documentation is created, there is very little review or fact checking to ensure that it is correct, up-to-date, or understandable. Again, I don’t want to cover the entire open-source community under this blanket, but in my experience, open-source documentation is inconsistent at best. When documentation is an afterthought rather than a part of the programming process, it will always be less than adequate.
Finally, my faith in using Microsoft products is bolstered by the fact that Microsoft is everywhere. I have worked in IT for more than 5 years, and I have never interacted with any organization that uses anything but Microsoft desktop operating systems as a whole. Windows is ubiquitous, and it won’t be going away any time soon. Open-source technologies – for that matter, most other vendors as a group – may vary from year to year, but Microsoft has been the standard for the better part of two decades.
Open-source software, in many cases, is the best tool for the job. Apache makes an excellent web server, and there are several vendors that make excellent Linux distributions. I still consider Perl to be one of the handiest programming languages available, and I still use it for day-to-day tasks such as text processing and some database interaction. However, on the whole I consider Microsoft’s offerings to be superior to their competitors, open-source or proprietary.