New Beginnings: Joining Google

TL;DR After seventeen years at Microsoft, I’ve joined Google to work on a promising new framework for mobile apps.

Microsoft is an amazing company. It has incredibly diverse interests: from mega-scale cloud services to games consoles; from enterprise ERP systems to artificial intelligence; from office collaboration software to augmented reality. It’s filled with talented people who have great ambition and drive and perhaps has more distinct billion dollar businesses than any other company.

Microsoft and the Client Platform

For all its success, the one area that Microsoft has struggled most in over the last decade is that which was once its greatest strength: the client. When I joined Microsoft in 2000, Windows and Internet Explorer had a monopoly, Visual Basic was in its heyday, and the shelves of Best Buy and Circuit City were filled with rows of boxed consumer software. For any client app developer at the time, Microsoft was at the epicenter.

Microsoft continued to build on its client success for many years and for a long while seemed invincible in the developer community. The .NET Framework created an entire new ecosystem, particularly around Windows Forms and ASP.NET. Visual Studio became perhaps the most popular IDE of all time with a combination of power and flexibility. And technologies like “Avalon” (WPF) pointed the way to a new wave of applications that took advantage of DirectX and discrete GPUs to reach new heights of graphical app experiences.

But then came the missteps. Distracted by the engineering challenges of delivering “Longhorn” (Windows Vista), Microsoft failed to adjust rapidly to the new competitive threats posed by the rise of the standards-based web and the resurgence of Apple and the iPhone. Its rapid growth left it with the defender’s dilemma of being attacked by all sides, while also being unwilling to sacrifice existing businesses for new opportunities.

And so, Silverlight came and went — terminally injured by the imperative to preserve the Windows franchise. A renewed Internet Explorer made huge strides forward with hardware-accelerated graphics and a fast new JavaScript engine, but its deep integration with Windows 7 became its Achilles’ heel. The bones of Windows Phone have been picked clean by many others.

Meanwhile, infighting between different divisions left client developers in the Microsoft ecosystem caught in the crossfire, with little clarity for those who wanted to bet on something that would endure. Customers started to look elsewhere, attracted both by the new monetization opportunities of iPhone and the exploding ecosystem around the web. And so when “Metro” (UWP) was introduced as a reset for the Windows API, leaving behind the massive existing Windows XP and Windows 7 user base in pursuit of an unproven new touch-centric UI, developers largely shrugged and continued down the paths they had already chosen.

A New Client Framework

Which brings us to today.

The client ecosystem is much more fragmented than a decade ago, with continued erosion of the Windows monopoly with Mac and Chromebook, and an ever broadening array of form factors that include tablet, TV and gaming console. On the mobile side, Android has the lion’s share of devices worldwide, even though iPhone has outsized influence in some mature markets and amongst developers.

Yet developers still face the challenge of building high-fidelity, tailored graphical app experiences with great productivity. And while the web has made strides here, there’s a gap for a lightweight, modern mobile app framework that lets you build applications without being wedded to a single target platform.

Enter Flutter.

Flutter is a new mobile app SDK, currently in alpha, that empowers developers and designers to build modern mobile apps for iOS and Android. Flutter is optimized for building highly-branded, graphically-rich mobile experiences; it leverages Skia, the graphics engine that powers Chrome, and adds a React-inspired widget framework, UI components, animation models, layouts and themes that enable a seamless look and feel on both Android and iOS. You can write Flutter apps from Windows, Mac or Linux — and there is tooling support for IntelliJ, Android Studio, or Visual Studio Code.

Flutter apps are written with Dart, but can integrate with platform-specific code and APIs. They compile to high-performance native code for both Android and iOS. While Flutter is still in alpha, Google has already built production apps that use it, and the team already have one big external win under the belt: the Hamilton app, which apparently garnered over 500,000 downloads in the first three days and was featured in the Apple and Google Play stores.

Moving to Google

At the start of the second season of The West Wing, there’s a flashback to a scene before the election where Josh and Sam are considering which candidate to throw their weight behind. As described here, Josh is going to New Hampshire to see if Bartlet is ‘the real deal’. Josh asks Sam: if it turns out that Bartlet is the real deal, should he tell him? To which he replies that Josh won’t have to, because he has such a bad poker face.

I’ve been with Microsoft for seventeen years. When I look back on my career to date, I want to pinch myself to make sure I wasn’t dreaming. I’ve done demos with and for industry heroes like Bill Gates, Jim Allchin and Scott Guthrie. I’ve worked on Windows, Silverlight and Visual Studio. I’ve worked on keynotes for PDC, MIX and Build. I’ve had the chance to work with some of the smartest people in the world both inside and outside the company to build apps for Windows and the web. In short, Microsoft has been a wonderful ride.

Why would anyone voluntarily leave all that behind?

I’ve worked on or done competitive evaluations of a good number of client and mobile frameworks over the last twenty years. I’ve seen (and sometimes lived through) the mistakes that have made in this space. And I’ve looked fairly closely at Flutter and Dart.

And I’m writing to tell you that I think Flutter is ‘the real deal’.

While it’s still very early days, the team are onto something big. They have hit a sweet spot of productivity and power, and have the momentum and backing to be successful. The ability to write an app that runs on both iOS and Android, with one code base, without compromise, using a highly productive language and set of libraries — it’s a compelling value proposition.

In short, Flutter shows tremendous potential, and I’m thrilled to be joining the team as we drive forward towards launch.

If you’re interested in finding out more, check out the Flutter website. Or try out a lab which walks through the process of building an app. Lastly, join us at DartConf 2018 in LA early next year, where we’ll share our progress and vision for Flutter and Dart.

To Microsoft, thank you again for all you’ve taught me. To Google, hello!

Product Manager for Flutter (a framework for building mobile apps) and Dart (a modern, client-optimized programming language) at Google.