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

  • Hands On: New VS Code Insiders Build Creates Web Page from Image in Seconds

    New Vision support with GitHub Copilot in the latest Visual Studio Code Insiders build takes a user-supplied mockup image and creates a web page from it in seconds, handling all the HTML and CSS.

  • Naive Bayes Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the naive Bayes regression technique, where the goal is to predict a single numeric value. Compared to other machine learning regression techniques, naive Bayes regression is usually less accurate, but is simple, easy to implement and customize, works on both large and small datasets, is highly interpretable, and doesn't require tuning any hyperparameters.

  • VS Code Copilot Previews New GPT-4o AI Code Completion Model

    The 4o upgrade includes additional training on more than 275,000 high-quality public repositories in over 30 popular programming languages, said Microsoft-owned GitHub, which created the original "AI pair programmer" years ago.

  • Microsoft's Rust Embrace Continues with Azure SDK Beta

    "Rust's strong type system and ownership model help prevent common programming errors such as null pointer dereferencing and buffer overflows, leading to more secure and stable code."

  • Xcode IDE from Microsoft Archrival Apple Gets Copilot AI

    Just after expanding the reach of its Copilot AI coding assistant to the open-source Eclipse IDE, Microsoft showcased how it's going even further, providing details about a preview version for the Xcode IDE from archrival Apple.

Subscribe on YouTube

Upcoming Training Events