I hear ya cluckin' big chicken! the nervous rustling of code, tech, and life

What Microsoft got right in 2016- a developer’s perspective

In the not so distant past, admitting a penchant for Microsoft development could get you beat up at Starbucks. This year, has been different. As a Microsoft guy it’s exciting to see 2016 shape up as a watershed year; I dare say the big ship is making a turn. There are truly positive signs for those who endeavor to build better software with Microsoft tools. Here is my list of things that will go a long way in making MS dev-shaming a thing of the past. For me, the topics below share a common vibe, a refreshingly un-Microsoft approach to collaboration and innovation.

Cementing a commitment to open source

In 2016 Microsoft has taken tangible steps to shed its historical disdain for open source. There is nothing that screams open source quite like Linux, and Microsoft’s official embrace of Linux in 2016 has been remarkable. In March, Microsoft announced its membership in the Eclipse Foundation. Strategically this makes sense because Eclipse is a popular Java IDE and there is huge growth potential for Java development on Azure. The Eclipse Foundation is firmly rooted in the open source community, so it follows that throughout the year announcements rolled out regarding open source support for Linux-based Azure tools. Then, on November 16th Microsoft became an uber- member of the Linux Foundation…say what? Dogs and cats living together…mass hysteria!

In 2001 Steve Ballmer called Linux a “cancer” and now Satya Nadella is singing the praises. Why does it matter, and why should a MS-centric developer give a hoot? One take suggests that as Microsoft matures under Nadella, it is rebooting innovation. I don’t dispute that but all kumbaya aside, as the competition for cloud services heats up, Microsoft has no other choice but pal up to Linux (and by association, the open source community).

In another sense, it is truly all about choice. So by adding Linux expertise to its already strong hand in the enterprise space, Microsoft is positioning itself to offer amazing, multi-platform choices for organizations eyeing the cloud. I’m not sure we’ll see a rush of new app’s targeting the popular Linux desktop distros, but .NET Core creates some exciting potential.

.NET Core (and ASP.NET Core)

On June 27th, Microsoft released 1.0 of .NET Core, (along with ASP.NET Core 1.0 and EF Core 1.0) for Windows, Mac OS X and Linux. This is yet another indication that Microsoft is depreciating its old strategy of tying everything back to Windows. The .NET Core framework is not a version release of the .NET Framework, it’s a soup to nuts rewrite that leaves the old baggage behind. Closely related to .NET Core is ASP.NET Core which is also open source. ASP.NET Core’s modular design makes it fast and efficient. Also, it unites the MVC and Web API models and dumps WebForms... Hallelujah! See below, P.S. WebForms Rant for more on that topic.

There are lots of great posts about the transformative potential of .NET Core (and ASP.NET Core), far too many for me to detail here. Most importantly, codebase sharing across multiple operating systems is finally within reach for developers and organizations vested in C# and .NET. Also, given that it's both open source and very modular, fine-tuned software can be created in C# and JavaScript for the prominent platforms and operating systems; from the IoT to the cloud, from phones to desktops, and even televisions and toasters!

2016 honorable mentions that support the aforementioned

February-April: Microsoft acquires Xamarin. Announces tight Xamarin/Visual Studio integration, even for the free Visual Studio Community edition

April 14th: release of Visual Studio Code version 1.0.

June 13th: LinkedIn acquisition

Sept. 15th: Hiring Rob Eisenberg

Entire year: Support of free, cross-platform, open source dev tools (editors, IDE’s and plugin/extensions. See this great rundown of .NET announcements from the 2016 Microsoft Build Developer Conference.

On changing hearts and minds

Bill Gates, with an impressive list of philanthropic achievements, has probably done more than anyone or anything to shed the “Evil Empire” moniker. Since taking the reins in early 2014, Nadella’s leadership and vision is shaping a forward thinking Microsoft. A favorite Nadella quote backs my hunch that 2017 will be another exciting year: 

“Be passionate and bold. Always keep learning. You stop doing useful things if you don't learn.”
Satya Nadella

Mark Dalsaso

P.S. WebForms Rant

Disconnecting ASP.NET WebForms from .NET Core demonstrates that Microsoft is moving forward, and leaving bad proprietary habits behind. Microsoft cannot afford to squander its brain trust on 15+ year-old technologies (e.g. WebForms, IE and ActiveX) from a bygone era.To be fair, WebForms has produced many great sites and applications. However, clinging to it demonstrates techno impotence and delaying investments in learning new and better approaches is ignorant.

It is amazing (and scary) how some corporate managers and application developers defend WebForms tooth and nail. Their argument is always the same; that applications can be brought into production easier and faster. In a very narrow-minded sense, this may be true, but WebForms does not support quality design, intrinsically and holistically, like the newer patterns and frameworks. For example, concepts relating to separation of concerns (SoC), and unit testing are not easily supported in WebForms. So although you may experience faster delivery times with WebForms, it’s a short-term benefit. Later on you pay for it in spades, in terms of error-prone and time consuming adaptive maintenance.

Another problem with WebForms is that it’s far more difficult to plug in to the plethora of free and powerful JavaScript frameworks. Essentially you’re cutting your user out of all the powerful client-side goodness brought on by a revolution in web standards.

Thankfully Microsoft has provided sane and incremental pathways to transition away from WebForms. MVC hybrid app’s can be crafted because WinForms and MVC share a common IIS pipeline.