Platforms > Implementations
I recently read an insightful post about how being a developer is less about coding and more about tooling, and while I do not agree with all of the post, the fact that we—as developers—are tool-obsessed rings very true. This obsession with tools becomes a white-hot rage when our favorite tool is threatened with extinction or causes a world of panic when a competing tool is proposed without enough information about it.
Let’s look at two key examples of that:
- WinForms was very popular, and when Microsoft brought us WPF, there was major pushback from those who did not want to change and learn a new tool. If you’re reading this, you might be thinking, “Well, time solved that”—but I disagree. This very week, I was asked about WinForms vs. WPF again. Time doesn’t heal all wounds; it just gives some of us time to move on.
- To illustrate this world of panic, consider a more recent issue: Windows 8! Remember all the discussions before //Build about the death of
? The confusion caused by incomplete discussions around tools we love led to panic.
So what is the solution to this? I think a mindset change would be enough. The mindset change needed is to remember that a platform is more important, powerful, and useful than a tool. I’d like to take credit for this idea, but the first time I heard someone mention it was a few years back—Scott Hanselman was discussing it on MVC almost three years ago to the day. He mentioned that ASP.NET > ASP.NET Web Forms and ASP.NET > ASP.NET MVC. In short, he was saying that the core understanding of ASP.NET—the core features and uses of the platform—are bigger than any single implementation (tool). Sure, you need to learn a new tool, but you aren’t starting at zero if you know the platform.
Why am I bringing this up? Because of the discussions I’ve been having about another tool recently: Silverlight. We’re approaching panic stage over this tool due to rumors of its demise. However, it is very important to take a step back and see what the platform is—and how knowing the platform means that a tool can evolve, and we’re still able to work, code, and make money.
The platform Silverlight uses is XAML-based UI technologies—a core set of ways to lay out UI components using an XML dialect called XAML. This platform also includes features like binding and the MVVM pattern, which are either difficult or impossible to achieve with other UI technologies (like WinForms, for example).
XAML-based UI technologies started with a single tool: WPF—an implementation of the platform designed to run on top of the .NET Framework. A second tool, Silverlight, later emerged as an implementation designed to run as a browser plugin. A third tool, Silverlight for Windows Phone 7, followed, though it had differences because it was an implementation for the phone. In the last few months, we’ve seen a fourth implementation of XAML-based UI technologies appear: WinRT—the Windows Runtime in Windows 8. When you develop with C#, VB.NET, or C++, your UI technology is just another implementation of the platform.
Every implementation has differed—some in major ways, others in minor—but the core of the XAML-based UI technology platform hasn’t changed. There isn’t a single rumor, plan, or hint that we’re even close to seeing the end of XAML-based UI technologies. We may see a tool reach its end of life (like some rumors about Silverlight) or others reach completion without needing updates (like WPF, if). But the platform remains—and it grows. Learning a platform is always more important, powerful, and useful.