Adam Christing brings people together with humor and heart! He’s a captivating keynote speaker and an award-winning event emcee. Adam has delighted over two million people across 49 of the 50 U.S. states and internationally. He is a performing member of Hollywood’s world-famous Magic Castle. He has been featured on Entertainment Tonight and more than 100 top podcasts, TV shows, and radio programs. Adam was recently featured on Harvard Business Review IdeaCast. He is the author of The Laughter Factor: The 5 Humor Tactics to Link, Lift, and Lead (Penguin Random House, BK Books).
I hope you enjoyed this show, please head over to Apple Podcasts and subscribe and leave me a rating and review, even one sentence will help spread the word. Thanks again!
Juliana Stepanova: Why "I'll Just Do It Myself" Is the Most Expensive PO Shortcut
Read the full Show Notes and search through the world's largest audio library on Agile and Scrum directly on the Scrum Master Toolbox Podcast website: http://bit.ly/SMTP_ShowNotes.
The Great Product Owner: Opening Up to the Team for Solutions
"The PO who's not sitting and saying 'I know how it's right, I will solve it by myself,' but coming and saying 'Hey, let's think all together'—that's what gives very, very speed-up development into becoming a great PO." - Juliana Stepanova
Juliana describes the Product Owners she considers truly great as those who bring their challenges to the team rather than solving everything alone. Her example features a PO who was invited to recurring release meetings that consumed one and a half to two hours every two weeks—30 people in a room, largely a waste of time. Instead of suffering in silence or trying to fix it alone, this PO approached the team: "Hey guys, I have these meetings, and they're useless for me. How can we deal with that?" The team collaborated with the Scrum Master to explore multiple options.
Together, they developed a streamlined, semi-automatic system that reduced the process to 10 minutes without requiring anyone to sit in a room. This solution was so effective that it was eventually adopted across the entire company, eliminating countless hours of wasted meetings. The key insight: great POs see themselves as part of the team, not above it. They're open to solutions from anyone and understand that collaboration—not individual genius—drives real improvements.
Self-reflection Question: When facing challenges that seem outside the team's domain, do you bring them to the team for collaborative problem-solving, or do you try to solve them alone?
The Bad Product Owner: The Loner Who Does Everyone's Job
"To make it quicker, I will skip asking the designer, I will directly put it by myself. I learned how to design five years ago. But afterwards, it's neglecting the whole team—you don't take into account the UX, and actually you need to rework." - Juliana Stepanova
The anti-pattern Juliana sees most frequently is the "loner" PO—someone who takes on other roles to move faster. The classic example: a PO who bypasses the UX/UI designer because "I learned design five years ago, I'll just do it myself." This behavior seems efficient in the moment but creates multiple problems. It disrespects the expertise of team members, undermines the collaborative nature of agile development, and almost inevitably leads to rework when the shortcuts create quality gaps.
Juliana points out this isn't unique to POs—developers sometimes bypass testers for the same "efficiency" reasons. The solution isn't punishment but cultural reinforcement: helping people see the value of professional work, encouraging communication and openness, and building respect for each role's contribution. The key principle: if someone hasn't asked for help, don't assume they need yours. Focus on your own job, and offer assistance only when invited or when you explicitly ask "Do you need help?"
Self-reflection Question: When have you taken on someone else's role because it seemed faster, and what was the real cost of that shortcut?
[The Scrum Master Toolbox Podcast Recommends]
🔥In the ruthless world of fintech, success isn't just about innovation—it's about coaching!🔥
Angela thought she was just there to coach a team. But now, she's caught in the middle of a corporate espionage drama that could make or break the future of digital banking. Can she help the team regain their mojo and outwit their rivals, or will the competition crush their ambitions? As alliances shift and the pressure builds, one thing becomes clear: this isn't just about the product—it's about the people.
🚨 Will Angela's coaching be enough? Find out in Shift: From Product to People—the gripping story of high-stakes innovation and corporate intrigue.
Juliana is an Agile coach and Scrum master, with a focus in her work on transformation through people and processes rather than the other way round. She helps teams and leaders to create clarity, build trust and create value with purpose. Her work combines structure with empathy and is always focused on real collaboration and meaningful results.
What are ways to improve how you’re using GitHub? How can you collaborate more effectively and improve your technical writing? This week on the show, Adam Johnson is back to talk about his new book, “Boost Your GitHub DX: Tame the Octocat and Elevate Your Productivity”.
Adam has written a series of books about improving developer experience (DX). In this episode, we dig into his newest book, which focuses on GitHub and how to get the most out of its features—from settings and keyboard shortcuts to hidden tools, CLI commands, and the command palette.
Adam also shares insights on the best ways to communicate on the platform. We discuss the nuances of GitHub-Flavored Markdown (GFM), best practices for effective communication in open source, the importance of maintaining civility in issue reports, and why he included a glossary of acronyms to help developers decode common shorthand like LGTM and FTFY.
What is Git, what is GitHub, and what’s the difference? Learn the basics of Git and GitHub from the perspective of a Pythonista in this step-by-step video course.
Topics:
00:00:00 – Introduction
00:02:20 – Why the focus on developer experience?
00:03:41 – Process of writing the book
00:06:26 – Filling in the gaps of knowledge
00:11:52 – GitHub-Flavored Markdown
00:16:00 – Sponsor: Honeybadger
00:16:47 – Acronym glossary
00:25:18 – GitHub command palette
00:28:35 – What questions did you want to answer?
00:29:42 – Whether to cover Copilot or not
00:36:14 – Video Course Spotlight
00:37:50 – Advice on working with coding agents
00:40:46 – Defining the scope
00:48:07 – GitHub pages and codespaces
00:50:46 – Finding the hidden features
00:51:53 – Data-oriented Django series
00:53:59 – How to find the book
00:54:51 – What are you excited about in the world of Python?
00:57:27 – What do you want to learn next?
00:58:00 – How can people follow your work online?
In this webinar, Prabhavathi Kannan demonstrated how to enhance the Syncfusion®JavaScript DataGrid with Azure OpenAI to create an AI-powered, predictive data-entry experience. The session showed how entire datasets can be sent to an AI model to predict values, calculate totals, assign grades, and update the grid dynamically without writing traditional calculation formulas.
If you missed the webinar or would like to review part of it, the recording has been uploaded to our YouTube channel and embedded below.
[25:21] Applying this approach to real-world apps.
What was built in this session
The demo application used the JavaScript DataGrid populated with student GPA data from three academic years. With a single button click, the dataset was sent to Azure OpenAI, which predicted the final-year GPA, calculated the total GPA, and assigned letter grades automatically.
Syncfusion AI-ready toolkit overview
Syncfusion’s AI-ready toolkit enables seamless integration with AI models such as Azure OpenAI, OpenAI, Gemini, and Anthropic. The toolkit has components for major frameworks, including JavaScript, React, Angular, Vue, Blazor, and ASP.NET.
Prerequisites and project setup
To follow along, developers need Visual Studio Code, Node.js, TypeScript, access to Azure OpenAI with a deployed model, and the Syncfusion JavaScript DataGrid packages.
How the AI integration works
The solution uses a structured prompt that combines grid data and grading rules into a single instruction. Azure OpenAI returns a JSON-only response, which is parsed and bound directly back to the DataGrid for predictable results.
Dynamic updates, styling, and animations
Predicted values are applied row by row with smooth animations. Custom cell styling uses color coding to highlight performance, providing immediate visual clarity.
Q&A
Q: Can we use it on projects for other companies?
A: Yes, you can use it on other companies’ projects. The key requirement is to generate an appropriate prompt for the AI based on the specific needs and component settings. Once the AI provides its response, you will need to programmatically update the component to reflect the changes and display them in the UI.
Q: How does this thing internally work?
A: First, determine whether the desired functionality is achievable within the component. If it is, generate a tailored prompt to obtain a suitable response from the AI that aligns with the component’s capabilities. Based on the AI’s output, execute the corresponding actions or updates within the component.
Q: Can you create a prompt that will allow AI to dynamically answer the question and adjust the grid to respond to what was entered into the prompt?
A: Yes, this is achievable. For an example of an interactive grid powered by AI, please refer to this Syncfusion JS 2 React demo.
Q: If a user enters a question, will the grid adjust, or does the grid need to be preprogrammed ahead of time?
A: Yes, dynamic adjustment is possible without preprogramming every possible query. The grid can respond intelligently to natural language inputs in real time. Please refer to this interactive AI grid demo for a practical illustration.
Takeaways
This approach eliminates manual calculations, simplifies business logic, and enables developers to build intelligent, AI-driven data grids applicable to many real-world scenarios beyond grading.
TL;DR: Default summary rows in the WPF DataGrid often look generic and make key metrics easy to overlook. This guide shows how to transform table, group, and caption summary rows into visually distinct, readable, and consistent UI elements. You’ll learn when to use implicit versus explicit styles, how to highlight important aggregates, and how to create a maintainable styling strategy that scales across your application.
Effective data visualization is no longer optional, it’s foundational to modern application design. As datasets grow in size and complexity, users rely on visual cues to quickly interpret totals, averages, and grouped metrics. When these cues are missing, even accurate data can feel overwhelming or hard to trust.
The Syncfusion® WPF DataGrid offers a powerful data-handling foundation, but its default summary row styles are intentionally neutral. Without customization, critical insights, such as grand totals or group averages, can blend into the grid, reducing clarity and usability.
By thoughtfully styling summary rows, you can elevate the entire DataGrid experience. Well-designed summary rows guide the user’s eye, reinforce hierarchy, and make important numbers instantly recognizable. In this guide, you’ll learn how to use built-in styling properties, such as background color, typography, and spacing, to create a summary UI that looks intentional, professional, and easy to read.
We will walk through customization patterns for the following DataGrid elements:
Table summary rows and cells.
Group summary rows and cells.
Caption summary rows and cells.
Best practice: Use implicit styles for consistent, app-wide design, and explicit styles when a specific DataGrid requires a unique appearance.
Customize table summary rows
Table summary rows appear at the top or bottom of the grid and display high-level metrics such as grand totals. Because these values often influence decisions, they should be visually distinguished from regular data rows.
Method 1: Style summary rows
Implicit style for app-wide consistency
By setting the Style.TargetType property to the TableSummaryRowControl class, you can define a default appearance for all table summary rows in your application. This allows you to align the grid’s look and feel with your overall design language.
For the best result, store this style in a shared ResourceDictionary. Doing so ensures consistent styling across the app and reduces repetition when multipe grids use summary rows.
This approach improves the user experience by making summary rows visually distinct, predictable, and polished.
When you want only a single DataGrid to use a custom table summary row style, define an explicit style and assign it using the TableSummaryRowStyle property.
This approach is ideal when a particular grid requires unique branding, visual emphasis, or layout differentiation without affecting other grids in the application.
Summary cells typically display key metrics such as totals, averages, or counts. Applying custom styles to these cells improves readability and helps users quickly identify important values.
Implicit styling
You can define implicit styles in XAML to ensure summary cells visually align with your application’s design language.
Common styling enhancements include:
Set a background color to visually separate summary cells from regular data rows.
Apply bold text to emphasize important figures.
Use a custom font to reflect branding or improve aesthetics.
Increase the font size to make key data easier to read.
Group summary rows display aggregated data, such as totals, counts, or averages, for each group of records within the DataGrid. Making these rows visually distinct helps users quickly recognize and interpret important group-level data.
Method 1: Style the group summary row
You can customize the appearance of group summary rows by applying a style to the GroupSummaryRowControl class, which is responsible for rendering group summary sections within the DataGrid.
By adjusting properties such as Background, you introduce a clear visual distinction between group summary rows and regular data rows. As a result, group‑level summaries become easier to identify and interpret at a glance.
The following example demonstrates how to apply this styling in XAML:
If you want to customize the group summary row for a specific DataGrid only, define the style with an x:Key and apply it using the GroupSummaryRowStyle property of the DataGrid. This ensures that the customization affects only the intended grid and does not impact others in your application.
While styling the group summary row improves visibility at a high level, styling the group summary cells allows you to further emphasize individual aggregate values, such as totals, counts, or averages.
Group summary cells are rendered by the GridGroupSummaryCell class. By customizing this class, you can enhance readability and ensure visual consistency with your application’s design language.
You can adjust the following properties:
Background: Differentiates summary cells from standard data cells
FontFamily: Maintains branding or typographic consistency
FontSize: Improves text readability
Foreground: Enhances contrast and visual clarity
FontWeight / FontStyle: Adds emphasis to key metrics
In modern UI development, consistent and intentional styling plays a crucial role in delivering a polished user experience. Within a DataGrid, the caption summary row displays summary or group‑level information above grouped data, serving as an important visual anchor.
Method 1: Applying styles to the summary row
You can customize the appearance of caption summary rows by targeting the CaptionSummaryRowControl class.
TargetType: Specifies that the style should be applied to caption summary row views in the grid.
Background property: Sets a custom background color for the row, which helps distinguish it from other data rows and improves overall readability.
To limit the caption summary row customization to a specific DataGrid, define the style with a key and assign it using the CaptionSummaryRowStyle property.
The GridGroupSummaryCell class controls how individual summary cells are rendered within grouped rows. You can easily customize their appearance, including background, font family, font size, and foreground color, by defining a style.
To apply the style definition of the GridCaptionSummaryCell class to a particular DataGrid, you can achieve this by setting the CaptionSummaryCellStyle property of the DataGrid, as shown below.
You can explore the complete code example for styling summary rows on the GitHub repository.
Frequently Asked Questions
How can I customize the appearance of summary rows in a WPF DataGrid?
You can customize the appearance of summary rows by applying a Style with the appropriate target type. Using Style tags allows you to control colors, fonts, borders, and other visual properties of the summary rows.
What properties are available for customizing summary rows and cells in a WPF DataGrid?
In a WPF DataGrid, you can customize summary rows and cells using several styling properties, including Background, which sets the background color of the row or cell; Foreground, which defines the color of the summary text; FontFamily, used to specify the font type, such as Congenial Black; FontSize, which controls the size of the summary text; FontWeight, enabling styles such as Bold, Light, Medium, or ExtraBold; and BorderBrush, which determines the border color of the summary rows and cells.
How can I customize individual caption summary cells in a WPF DataGrid?
To customize individual caption summary cells, define a Style that targets the GridCaptionSummaryCell element. This allows you to control the appearance of each cell in the caption summary row, including background color, font settings, and text color.
Conclusion
Thank you for reading! Customizing the UI style of summary rows in the WPF DataGrid is a straightforward yet powerful way to improve the professionalism and usability of your applications. By using the implicit and explicit styling techniques outlined in this guide, you can ensure your aggregate data is visually appealing and easy to read.
If you’re a Syncfusion user, you can download the setup from the license and downloads page. Otherwise, you can download a free 30-day trial.
I see a lot of "agile" teams and their "planning" meetings, but if you forgive me for saying so, I've not seen a planning meeting for a long time.
Typically:
No plan is presented
No questions about the plan are surfaced
No revisions to a plan are made
What actually happens then? Usually, someone loads up a list of tasks, and the entire meeting is spent assigning people to the tasks.
Does that in ANY way resemble planning? What was planned, other than individual workloads? How was the plan assessed, improved, revised, or confirmed? What was, even, the plan?
So, what I have in mind is simple.
Don't Assign
In your next planning meeting do not assign any work to any individuals.
They can pull work as part of the sprint. They are cross-functional and self-managing, right? They are professionals you trust and respect, and have autonomy, so they can pull work.
If you are the PO/PM, then you have an ordered backlog for them.
Show Your Plan
Put your plan up on the screen. No, really. Whatever it is you are trying to really do instead of a tasklist.
Ask Questions
What are you trying to accomplish?
Are there risks to the timeline and the goal?
Is this goal still valuable to the company?
Are we likely to reach it with the scope we have now?
Are there better ways to accomplish our goals now that we have done some of the work?
Are the planned milestones still valid and well-placed?
Do we have feedback from sponsors or users?
Does it tie to any organisational goals or disruptions we should talk about?
How should we change the plan?
Fix It
Change the plan.
Now, that task list -- is it still valid?
Does it go too far or stop too short?
Can we sacrifice something to make progress on something else?
That's all?
Is that all we really need to do in planning? Sure. Pretty much. You might have a bit more or a bit less depending on your context and situation, but why not?
I wonder what it would do for you and your team to use your planning meeting for actual planning, instead of just having a boring task assignment meeting. Maybe it will unlock the engagement and creativity of your staff, and they'll start caring about the bigger picture if they're not blinkered to seeing only a task list.