Having started my training as a programmer in the 90s with 16 bit Visual Basic 4 and having seen them at their worst on several occasions, it’s often easy for me to take the side of people who don’t like the company (except Apple fanboys, because their platform has exhibited a lot of bad, anti-competitive and destructive behavior of late as well and more recently). I’ve seen them destroy competitors, build up a huge userbase on a platform that made building applications easy and then torch it on the altar of progress, and even keep security-hole-riddled crap around for years that caused compromised systems and grief for users for decades. Consequently, I’ve tried on numerous occasions to switch to linux, and ended up coming back to windows (usually after some config file got hosed and cost me a day of work). I’ve lived through ODBC database access, DAO, RDO, ADO, ADO.NET, Linq-to-Sql, and Entity Framework (whose early versions drove me to use NHibernate). I’ve seen ActiveX in the browser, VB webclasses, silverlight, and even FoxPro. I’ve even used Visual Source Safe…. I’ve essentially had a love-hate relationship with Microsoft for a very long time.
However, of late, Microsoft keeps surprising me. At first I thought it was a fluke, especially when they started paying attention to the large number of users who were looking seriously at Ruby on Rails and ended up building ASP.NET MVC which actually made a lot of web development cleaner (if not always easier). But I keep seeing new stuff out of them that I really like. Here are some of the game changers I’m seeing and what they might mean for software developers.
- VisualStudio.com is awesome. When I first saw this come out, I figured “meh, it’s probably TFS online”. That might be great for corporate types, but it didn’t interest me. After some recent work figuring out what my internal architecture would look like for source control though, I was absolutely blown away. Not only do they give developers free storage (if you are small enough) for an unlimited number of repositories, but they also support git. Further they integrate the whole mess right into Visual Studio itself, giving me a nice GUI to work with git, including all the fun of branching and merging without tinkering with git configs to get a decent merge tool to work. This is huge, as it means that Microsoft is no longer trying to drive us into a proprietary system that doesn’t work with many people’s workflows. That lack of coercive force is a bigger thing than you think and will likely manifest itself in bigger, better ways before long.
- They have changed the release cycle for many things that used to be bundled with Visual Studio. ASP.NET MVC (and Web API, Entity Framework, and lord-knows-what-else) are now released out of band with the development environment, meaning faster iterations on these products. This will allow them to change to suit user requirements more quickly and will also mean that you won’t be waiting for the new version of Visual Studio to come out before getting an update on something you need soon. Not subjecting small startups to the development cycle of a massive, multi-billion dollar company is a huge win.
- After Windows 10, updates and upgrades will supposedly be free (I’m not sure what to think of this). This will drive total cost of ownership of Windows systems downward, and will somewhat reduce the pain of supporting legacy versions of the product, as people will hopefully not keep old versions just to save a little money. This appears to be done with a direct intent of improving the ecosystem. Microsoft has realized that the days of making huge amounts of money (for them) off of operating system sales to regular consumers are probably over for good and that it is more beneficial to work on their business sales channels and their developer ecosystem while expanding into other spaces, such as mobile, cloud, and enterprise computing.
- Which brings up the next point. The new Spartan browser is going to get rid of a lot of problems, as it is going to the ever-green model that Chrome and Firefox use. Eventually we software developers won’t have to be trying to support IE 9 in 2015, which will free up a lot of development time for actually improving product, rather than trying to make old crap that isn’t standards-compliant actually work. Incidentally, if you do need old crap that isn’t standards-compliant, they do have a way of supporting that. I have no idea how much labor this will free up in the web development space, but I do know that when old versions of IE are in the mix, sometimes upwards of 30% of my development time can be spent trying to make the site work in it, AFTER quirks in all other browsers are sorted out. I’m sure better web developers with more tricks up their sleeves do better, but I can’t imagine that there are any who don’t actively dislike legacy IE.
- The .NET framework has extensive (and growing) support for asynchronous operations. They don’t exactly line up with the way systems like NodeJS do things (and they certainly aren’t going to beat Erlang in this regard), but they are still quite impressive and nicely wrapped in the language. This will reduce a lot of very ugly threading code for a lot of folks and free up more developer time.
- The next version of ASP.NET will run on Linux. This one made me look twice when the announcement came out. This is probably the biggest announcement for this development space in a long time. Total cost of ownership of an ASP.NET website has always given an advantage to PHP and other languages that work well on linux. This will narrow the gap considerably and allow us to compete with PHP, while using one of the best IDEs out there. In addition, since Microsoft has their own cloud computing system (Azure), we may well see Azure prices drop in order to compete with linux hosts that will support ASP.NET. This required a fair bit of rewrite to get the system onto OWIN, but it even has repercussions if one keeps the system on windows, as OWIN is a lot more modular than the existing architecture.
- The tablet and phone offerings for windows are quite solid now. The PocketPC days are long gone and the new phones are impressive. I’ve not gotten one yet, but some techies that I know who aren’t very tolerant of flaky equipment seem to love theirs. Microsoft is also actively taking steps to get a foothold in the mobile space, which bodes well for developers on their platform, as companies without mobile strategies may well either be outliers or dead within the next decade.
- Azure is getting to be quite a polished product itself, making it very easy to deploy azure sites and workers, which will allow a lot of smaller companies with less expertise to scale more easily, as it won’t be as nasty and expensive to set up as something similar on other platforms.
All of these changes seem to point to a change in direction for the company. For the longest time, Microsoft was best served by trying to control their user base and lock them into various Microsoft products. To a large degree, it worked for a long time. Now, however, the signs are pointing to a different Microsoft, one that plays well with others and is trying to build an ecosystem into which users can take the Microsoft products that suit them and take other offerings elsewhere. They seem to me to be more positioning themselves to go head to head with Google instead of Apple. It’s an interesting time to be a developer on the platform, as a lot of new opportunities are opening up, with more coming. With change comes opportunity, sometimes significant opportunity.