In-Depth

For C# Developers, The Future Is Compositional Thinking

From Visual Studio Live! Austin: Innovations like Microsoft's HoloLens will require adapting procedural, linear programming and thinking in terms of compositional programming, observes UX expert Billy Hollis.

Complex modern problems often demand a different problem-solving approach. That is the thesis of renowned UX designer and developer Billy Hollis' keynote presentation, "Coding, Composition and Combinatorics." The always lively and entertaining Hollis gave Visual Studio Live! attendees his take on compositional thinking and taking a new approach to solving problems. He presented his observations at the last general session keynote of the Visual Studio Live! event in Austin, Texas, last week

Hollis dove deep into taking a different approach to assessing and solving problems, which fits well into his character. "I tend to look at things a bit differently than most people," he started off. Anyone who has heard Hollis speak before would certainly agree with that statement.

First, Hollis established a baseline with his audience. "Do most of you do your development in C#?" he asked. Almost the entire room responded positively. He then related a quote from Andres Hejlsberg, primary architect of Turbo Pascal and C#. "We have taken imperative model of programming as far as we can," Hejlsberg once said.

"That's a pretty bold statement from someone who knows more about modern languages than anyone on the planet," said Hollis. What seems like the right answer might not always be right, though, he cautioned. "We're in era of such rapid change. Saying we're going to keep doing things the way we have been but faster and better is most likely wrong."

"We're turning the world upside down with the kind of technology we're putting in place," he said, holding up a Microsoft HoloLens as an example. "Is the world of application development really ready for the challenges we face?" He quickly answered his own question. "I'm not sure doing things the way we have been but doing them better and faster is the answer to the kinds of changes we have," saids Hollis. "One of the ways we're going to change is from the imperative programming model into some different ways of thinking about how we assemble solutions."

Hollis urged the attendees to start thinking of problems from a compositional standpoint. He described that as the act of combining parts, pieces and elements together to build a larger whole. "What compositional thinking does is give you a new way of thinking about a problem," he said. "This space of combinations lets you search the space for the pieces of the combination that solve the problem you have. So you stop thinking about problems in a linear and procedural way."

He applied compositional thinking to a number of programming concepts to which the assembled developers could relate. "For HTML5 and JavaScript, we have to bring pieces together to make pages we need. We add more things to it to get more compositional capabilities, like Angular. Those make HMTL5 more compositional."

The cloud is another good example of compositional thinking and problem solving, he said. "For the cloud, you're dragging pieces around to get the overall solution you want," he said. "That's a compositional way of thinking about things."

He pointed to XAML as particularly well suited for this approach to thinking and problem solving. "There's compositional thinking in XAML [which] has a good visual way of showing composition," he said. "You get a good idea of what the individual pieces are doing."

This approach is not only quicker, believes Hollis, but also results in higher quality. "You have to change your mental model of how you do UI design," he said. "It actually lets you build more advanced UI faster than you could with older technology. You're not doing as much work. You're picking pieces and letting those pieces do the work."

He continued with several examples that point out how XAML is likely the most compositional platform for developers. "You don't have to make quantum leap to compositional thinking," he said, but it is at least a partial leap. One of the XAML-based examples was a graphic that showed airplanes at the gate, and related their take-off readiness. "It's just a bunch of pieces put together in XAML. I'm just Lego-ing things together. That's the benefit of thinking compositionally and putting the pieces together. You can get very good results very quickly."

Most people are code-centric in terms of how they solve problems, he said. "Our industry has pushed you in that direction. It's hard to break loose into different approaches."

So how does this type of thinking change developers' jobs? "Spend more time looking at pieces that are available. Try to work on compositional solutions to train your brain to think that way. The compositional approach makes you spend more time trying to understand the problem. When you've got the right mental model, solving problems will be much faster and easier."

The next Visual Studio Live! event takes place in Boston on June 13-16 at the Cambridge Hyatt Regency. Visit https://vslive.com/events/boston-2016/home.aspx for more details.

Editor's Note: To view a video replay of Billy Hollis' talk, go here.

About the Author

Lafe Low has been a technology editor and writer for more than 25 years. Most recently, he was the editor in chief of TechNet magazine. He has also held various editorial positions with Redmond magazine, CIO magazine and InfoWorld. He also launched his own magazine entitled Explore New England, and has published four editions of his guidebook The Best in Tent Camping: New England.

comments powered by Disqus

Featured

  • Full Stack Hands-On Development with .NET

    In the fast-paced realm of modern software development, proficiency across a full stack of technologies is not just beneficial, it's essential. Microsoft has an entire stack of open source development components in its .NET platform (formerly known as .NET Core) that can be used to build an end-to-end set of applications.

  • .NET-Centric Uno Platform Debuts 'Single Project' for 9 Targets

    "We've reduced the complexity of project files and eliminated the need for explicit NuGet package references, separate project libraries, or 'shared' projects."

  • Creating Reactive Applications in .NET

    In modern applications, data is being retrieved in asynchronous, real-time streams, as traditional pull requests where the clients asks for data from the server are becoming a thing of the past.

  • AI for GitHub Collaboration? Maybe Not So Much

    No doubt GitHub Copilot has been a boon for developers, but AI might not be the best tool for collaboration, according to developers weighing in on a recent social media post from the GitHub team.

  • Visual Studio 2022 Getting VS Code 'Command Palette' Equivalent

    As any Visual Studio Code user knows, the editor's command palette is a powerful tool for getting things done quickly, without having to navigate through menus and dialogs. Now, we learn how an equivalent is coming for Microsoft's flagship Visual Studio IDE, invoked by the same familiar Ctrl+Shift+P keyboard shortcut.

Subscribe on YouTube