Microsoft of the Future is Now

Last weekend my friends from Three Red Cubes Inc. and I were at NBTC. A detailing of the event itself deserves a post, but this post is based on a conversation I had with the CEO of a pretty cool and successful Toronto-based start-up developing software as services using Java-based web-frameworks.

As most of my conversations do, the question came to, “Why do you, as a start-up, use .Net?”

In most people’s perspective, Microsoft’s technologies are confined to being used in the cubicles of high-rise corporate buildings. Images of Windows 98 and XP flash through their minds when you say Microsoft. If you identify yourself as a .Net developer, they look confused, wondering why you don’t look like a nerd or surprised that you are having a conversation, in-person. They probably think you should look a lot like this guy.

Not an image start-ups should associate with. Not one bit.

The new face of Microsoft is not represented by their past image, but it’s not determining the future. The future of Microsoft is being determined right now.

Embracing Open-Source

A few hours before I started writing this, it was announced that ASP.Net MVC 4 and several related technologies are being made available as open-source projects, accepting contributions from the community. That’s massive because ASP.Net MVC is Microsoft’s flagship web-framework of the future. If this is the attitude towards ASP.Net MVC, I can’t wait to see what’s in store.

This is not the first time of course, there has been many more initiatives from Microsoft which are all enumerated at Microsoft Openness. As this push continues, I believe we will see CodePlex and Nuget take centre stage. These are two amazing platforms where open-source is very alive.

Now, there are a lot of conspiracy theories around the reasons behind Microsoft’s push towards open-source. For me, as long as I have personally seen initiatives such as Web Not War in action and as long as the community is being nurtured, I’m good.

Unifying Experiences

Having heard it from Eric Gales at NBTC, I can say that Microsoft’s realization that all technology should be unified is comforting.

Technology-wise, everything is being brought under one umbrella, which is great! Specially as a young developer, I can learn everything I wish to on the .Net web-stack and then transfer these skills to say, game development. And this is not just theory, I am a web-developer by birth but with the guys at Three Red Cubes I’ve worked on more than one game. It’s made possibly by how well the entire collection of frameworks and tools are integrated. They say Visual Studio spoils you, it’s true.

For consumers, learning to use Word or Excel means having learnt to use Office365 or SkyDrive because they all provide an unified experience. This is the case for Windows Phone, XBox and the up-coming Windows 8. They all speak the same user-experience language so we’re always at home.

Engaging Students

From my experience as a student, there is no other company that I know of that puts in so much effort to reach students. Microsoft has teams of amazing people dedicated to running programs for us students. The Dreamspark program is just one of many programs that make software worth thousands of dollars available to us students.

This is to Microsoft’s advantage of course. Students are going to continue on to become developers, consumers and influence the course of ¬†technology and businesses.

Inspiring the Future

Part of building a future is tackling the problems of the present. Imagine Cup is yet another way for Microsoft to encourage students to use their technologies. This time, to change the world and to solve problems experienced by thousands if not millions over the world. Big words? Not at all, this has been the culture of Imagine Cup, see for yourself.

To arrive at anything remotely close to its vision, a world interconnected via technology and the cloud, Microsoft has to work tremendously hard. Maybe five years is a tall order but with all that it is doing, Windows 8, Windows Azure, and .Net technologies, powering forward to a super sleek future is only but a matter of time.

As a start-up, the image we associate with is open-minded, community-involving, forward-thinking and technologically savvy. And this is the kind of future that seems to be in the making for Microsoft. Being as smart as we are, Three Red Cubes jumped on board pretty early. This can only end well.


Many Choices

There are so options available to me. I could choose to learn and use any of the many languages out there. I could work on whichever framework made me feel fuzzy inside (trust me, there are some).

But this is to be an informed decision, a planned and joyous journey. Not one born of impulses. To reach a decision I have thought of the pros and cons and argued with myself,

  • Objective-C for Apple’s Cocoa API
    Pros: My machine’s native language, a beautiful one too. It’s a language that’s growing in popularity, especially with iPhones being the talk of the town. Influenced by Smalltalk and C, mothers of many languages.
    Cons: There would be a steep learning curve since I have only dabbled into it for a bit before. Available resources for learning, debugging and troubleshooting are only adequate, to put it lightly.
  • PHP on the Yii Framework
    Pros: PHP is a giant when it comes to web-based applications. The resources are abundant to learn and apply PHP. As for the Yii Framework, it’s growing, vast, versatile and dynamic, as far as I understand, it’ be a great platform to work on.
    Cons: I am relatively new with PHP, except for a few forms and files, I have done little. The learning curve would be steep, especially if I work with the Yii Framework. Even though I have worked on MVC based frameworks, I can imagine Yii being somewhat different (or maybe I am just scared of it, for some unexplained reason. I guess I have to think this through).
  • Ruby with the Ruby on Rails Framework
    Pros: Ruby is fast becoming the language of the web and agile softwares. It would be great to learn especially since this is quite different from languages I have used before.
    Cons: The learning curve would be so steep, it would probably be a straight line. I am not sure of what literature I can refer to and where I could get help. And moreover I would be at loss of a project to implement.
  • C# on the .Net Framework
    Pros: There would not be a very steep learning curve since I have worked (and working) on few projects using C# and the .Net Framework. There would be a great amount of help available from my current team members and also the online community. The library I frequent also has a sufficient amount of resources on this subject. I enjoy working with the framework because of its numerous features and ease of use.
    Cons: I fail to see the elegance of the language. Maybe I have not been exposed to it enough but I find it unattractive at times. I would have to work in a virtual environment which would reduce the efficiency of the workflow. Furthermore I would be at loss of a project to work on.

I have yet to decide but I will try my best to choose one that would be greatly enjoyable but I will be choosing soon. Even though I claimed to be thinking this all through, I would most likely be impulsive and choose one that entices me most.