Saturday, September 7, 2013

Microsoft and Code: What is the giant capable of?

Microsoft. A massive, monolithic company. From Wikipedia:



Microsoft Corporation is an American multinational software corporation headquartered in Redmond, Washington that develops, manufactures, licenses, and supports a wide range of products and services related to computing. The company was founded by Bill Gates and Paul Allen on April 4, 1975. Microsoft is the world's largest software maker measured by revenues. It is also one of the world's most valuable companies.




What Microsoft is most commonly known for is its Windows operating system, an incredible feat that the average computer user takes for granted. In their (Microsoft's) history they have amassed market share, and, as stated earlier, are the largest software maker in the world. With that in mind, it would be interesting to know what kind of development environment the company is capable of producing, and what kind of programming language they are capable of developing.



When I began my programming tenure I was mainly working in Java. Before I entered the program at Fanshawe I started learning code with Java, and in my first programming course I was using Java. And so in the beginning Java was my native language. When I entered second semester I was introduced to Visual Studio (Microsoft's software development environment) while using C++, in my third semester I was introduced to the (Microsoft) .NET framework, C#, and VB, and in my fourth semester I used C# and C++ within Visual Studio so often, that my "native" abilities shifted closer to Microsoft's realm.



Over the course of that time I've become more of an aware programmer, with experience in a handful of languages and environments, and so can now see the good and the bad in each language and environment. The ability to quantify a language and an environment is difficult (I couldn't give Java an arbitrary rating out of 100, for instance), but what I do know is that while using Microsoft products and languages, the development process feels intuitive, easy, and effortless. While in Visual Studio the developer can choose from a huge array of project types, with pre-written helper classes, they have use of an editor with extensive functionality and well thought out features that are in tune with programmer behaviour, and the classes and methods that come pre-written in their languages are easy to use, and well documented.



One of my favourite features in Visual Studio is the debugger. Although the debugger is not exclusive to Microsoft, the Visual Studio 2012 version is beautifully implemented and easy to use. For those that don't know programming at all, I'll explain what a debugger is. Imagine you have written a massive application with extensive logic. You finish your program and push your chest out, proud of your accomplishment. You press the "run" button to test it out and everything goes wrong, the program crashes and burns. So you turn to the debugger to help you out. The debugger allows you to set a point in your programs operation, stop at that point, and step through, line by line, seeing the value of all variables and data structures during that process. When things go wrong in a complex application, the ability to do this is a life-saver, and Microsoft has created an incredible debugger.



Perhaps one of the best aspects of working with Microsoft, though, are the pre-written methods and documentation. As a developer, eventually one gets to a point where they can imagine methods (units of work that "do stuff") that probably exist. So when writing a program in C#, for instance, we can think to ourselves: "hm, I wonder if Microsoft has written something to do this thing", and often the answer is that yes they have. And then further, the methods Microsoft has written, specifically, are extensive and well documented, at least on par with any other language.



And so, in a world where second best is still pretty good, a company has to do something really special to stand apart from their competition. While Microsoft hasn't yet written a development environment that codes for you, the feel of their software, and the process of using their software is just right, it's effortless, painless, and a pleasure to use. When you're a monolith, you're clearly capable of producing great things
Full Post

No comments:

Post a Comment