Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
152361 stories
·
33 followers

Episode 569: Agent Assimilation

1 Share

This week, we discuss agents taking over at Google Cloud Next, Apple's new CEO, and Cursor getting acquired (sort of). Plus, Coté's e-waste has no exit strategy.

Watch the YouTube Live Recording of Episode 569

Runner-up Titles

  • I love throwing stuff in the trash.
  • Dillo dirt’s a thing.
  • BurgerOps.
  • Thomas opens for Richard.
  • Department of “No” people
  • Starfish Stomach Model
  • Enterprise — come into me
  • The Organization will Assimilate it
  • Gold plaques all around
  • He can let his freak flag fly
  • Take the first billion dollar offer

Rundown

Relevant to your Interests

Sponsors

Listener Feedback

Nonsense

Conferences

SDT News & Community

Recommendations

Sponsored By:





Download audio: https://aphid.fireside.fm/d/1437767933/9b74150b-3553-49dc-8332-f89bbbba9f92/649d5403-b1a2-4444-b7df-077c90e4e5de.mp3
Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

022 - Omar Shahine, Microsoft CVP of OpenClaw + Microsoft 365

1 Share

ai.u crew talk to Omar Shahine, Microsoft Corporate Vice President of OpenClaw and Microsoft 365, about his tech origins and career. Omar recalls getting an Apple IIe in third grade, automating tasks with tools like FileMaker Pro, and arriving at Microsoft via a 1995 blog and a 1999 tester internship after being rejected from medical school. He highlights formative work in the Mac business unit during Apple’s revival and scaling OneDrive to hundreds of millions of users. Omar describes leadership lessons centered on customer focus and empowering teams, then explains how using Claude Code and building an OpenClaw assistant named “Lobster” (e.g., proactive meeting texts, family coordination, automation tools) led to a viral blog post, a presentation in a Satya-hosted forum, and a role transition to build this capability for Microsoft 365, emphasizing trust, feedback, and personalized, agent-driven productivity.00:00 Welcome and Guest Intro01:12 Early Tech Spark Apple II03:08 From Pre Med to Microsoft05:15 Thrown in the Deep End06:47 Pinch Me Career Moments09:08 Leadership Lessons at Scale12:27 Why OpenClaw Matters14:11 Building Lobster Assistant19:54 Going Viral Inside Microsoft22:40 Joining the OpenClaw Team24:45 The Story Behind the Hype25:43 Why Software Feels Hard27:21 Agents Over Buttons29:16 Personalized Agent Loops31:17 Trust and Accountability34:56 Customer Pull and DIY Agents37:30 Agents Talking Together40:08 Tooling Everyday Life41:55 Agent Friendly Internet46:24 Advice for Newcomers48:11 CoWorker Demo and Wrap



This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit aiunprompted.substack.com



Download audio: https://api.substack.com/feed/podcast/195298033/8553a4fe73333485cdc86a34e1d40dea.mp3
Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

Software engineering may no longer be a lifetime career

1 Share

I don’t think there’s compelling evidence that using AI makes you less intelligent overall1. However, it seems pretty obvious that using AI to perform a task means you don’t learn as much about performing that task. Some software engineers think this is a decisive argument against the use of AI. Their argument goes something like this:

  1. Using AI means you don’t learn as much from your work
  2. AI-users thus become less effective engineers over time, as their technical skills atrophy
  3. Therefore we shouldn’t use AI in our work

I don’t necessarily agree with (2). On the one hand, moving from assembly language to C made programmers less effective in some ways and more effective in others. On the other hand, the transition from writing code by hand to using AI is arguably a bigger shift, so who knows? But it doesn’t matter. Even if we grant that (2) is correct, this is still a bad argument.

Until around 2024, the best way to learn how to do software engineering was just doing software engineering. That was really lucky for us! It meant that we could parlay a coding hobby into a lucrative career, and that the people who really liked the work would just get better and better over time. However, that was never an immutable fact of what software engineering is. It was just a fortunate coincidence.

It would really suck for software engineers if using AI made us worse at our jobs in the long term (or even at general reasoning, though I still don’t believe that’s true). But we might still be obliged to use it, if it provided enough short-term benefits, for the same reason that construction workers are obliged to lift heavy objects: because that’s what we’re being paid to do.

If you work in construction, you need to lift and carry a series of heavy objects in order to be effective. But lifting heavy objects puts long-term wear on your back and joints, making you less effective over time. Construction workers don’t say that being a good construction worker means not lifting heavy objects. They say “too bad, that’s the job”2.

If AI does turn out to make you dumber, why can’t we just keep writing code by hand? You can! You just might not be able to earn a salary doing so, for the same reason that there aren’t many jobs out there for carpenters who refuse to use power tools. If the models are good enough, you will simply get outcompeted by engineers willing to trade their long-term cognitive ability for a short-term lucrative career3.

I hope that this isn’t true. It would be really unfortunate for software engineers. But it would be even more unfortunate if it were true and we refused to acknowledge it.

The career of a pro athlete has a maximum lifespan of around fifteen years. You have the opportunity to make a lot of money until around your mid-thirties, at which point your body just can’t keep up with it. A common tragic figure today is the professional athlete who believes the show will go on forever and doesn’t prepare for the day they can’t do it anymore. We may be in the first generation of software engineers in the same position. If so, it’s probably a good idea to plan accordingly.


  1. If you’re thinking “wait, there’s research on this”, you can likely read my take on the paper you’re thinking of here, here or here.

  2. Of course, construction workers do have layers of techniques for avoiding lifting heavy objects when possible (cranes, dollies, forklifts, and so on). There’s a natural analogy here to a set of techniques for staying mentally engaged that software engineers are yet to discover.

  3. In theory labor unions could slow this process down (and have forced employers to slow down this race-to-the-bottom in other industries). But I’m pessimistic about tech labor unions for all the usual reasons: the job is too highly-paid, you can work (and thus scab) from anywhere on the planet, and so on.

Read the whole story
alvinashcraft
39 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

3 ways to store variables in React, and why you shouldn’t sleep on useRef

1 Share

(or: useRef isn't only for DOM manipulation)

Read the whole story
alvinashcraft
47 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

SQL and AI – I Am Staying Relevant. Are You?

1 Share

I am staying relevant. Are you?

I know that is a heavy way to start. But I needed to say it first, because I have been carrying that question for over a year, and I think some of you are carrying it too. You just have not said it out loud yet. Maybe to a spouse late at night. Maybe to yourself in the car after a long call. Maybe you have not even said it to yourself, because saying it makes it real.

SQL and AI - I Am Staying Relevant. Are You? like-800x450

So let me be the one who says it first. And let me say the part underneath it too, the part I almost did not write.

I was scared. Not a little scared. Not the fashionable kind of scared you admit on a panel. The real kind. The kind that wakes you up at 4 AM and makes you stare at the ceiling and wonder if the twenty years of intuition you built, the muscle memory of reading an execution plan at a glance, the quiet confidence of knowing which wait type meant trouble, was about to be approximated by a machine that learned it in twenty seconds.

That is the fear nobody in our field wants to name. Not “will my job change.” The sharper one. What if the thing I spent my life developing can be copied by something that never lost a weekend doing it?

I want to tell you what I did with that fear. Because I did not conquer it. I still feel it. But I stopped running from it, and something changed.

One Monday morning I will never forget

Let me tell you about a specific Monday, because I think the abstraction is a way we avoid the truth.

It was month end at a mid sized finance client. 9:07 AM. The blocking started the way it always did there, like weather you could set a watch by. A senior developer, I will call him D, was on the call. His query had been named, publicly, in the previous postmortem. You could hear it in his voice, that thin careful tone people use when they are being careful not to sound defensive.

The DBA, I will call her M, had not slept properly in four nights. Her daughter had a school event she had missed on Friday. She was trying, and she was out of patience, and both things were true at the same time.

The manager was on mute, which somehow made it worse. A muted manager is louder than a shouting one.

I watched D shrink in his little video square while M explained, for the third month in a row, that the plan was flipping because of parameter sniffing interacting with a statistics refresh that ran at 8:55. I watched M’s jaw tighten every time she had to say it again. I watched a good team quietly hating each other over a problem that was nobody’s fault.

That is the room I want you to picture. Not a server. A room. Three tired humans, one muted manager, and a query that had become a character in a story nobody wanted to be in anymore.

That was the morning I stopped believing the problem was technical.

Every production incident is a room before it is a ticket.

The questions clients used to ask

For years, my inbox looked the same, and I loved it.

Why is this query slow. Why did this job fail last night. Why are waits so high. Can you review these indexes. Why is there blocking at 9 AM. Can you tune this before go live.

Reading those emails now, I feel tenderness toward them. They were simple. They were honest. There was a quiet dignity in that work. Nobody wrote articles about it. Nobody put it on a keynote slide. But it kept businesses running. It kept paychecks landing. It kept families from being woken up at 3 AM by angry phone calls.

The questions clients ask now

Somewhere in the last couple of years, the questions changed shape.

Can we make our team smarter without adding more people. Can we stop repeating the same confusion every month. Can we avoid depending on one expert every single time something breaks. Our VP read something about AI powered databases, can you help us figure out what is real. Are we falling behind by not using AI?

That last one. That is the question they are embarrassed to ask. That is the question their VP asked them and they did not know how to answer. And when I heard it out loud for the first time, I realized something that made me sit down.

It was the same question I was asking myself.

They were not asking me for AI. They were asking me for permission to be confused without being humiliated. They were asking me to be the adult in the room while the world yelled buzzwords at them.

And I could do that. Because I was confused too. And I had stopped being ashamed of it.

SQL and AI - I Am Staying Relevant. Are You? AIRoom-800x600

The language I refuse to use

Let me be blunt, friend to friend. Most of the loud words mean nothing when a backup fails.

“Unlock productivity” does not explain a PAGEIOLATCH spike at month end. It definitely does not explain it to a CFO who just wants to know why payroll is late. “Leverage AI” does not calm a developer who feels blamed for a slow query that is actually caused by a bad statistics refresh.

Buzzwords survive conference rooms. They do not survive 9 AM on a Monday.

I am not against AI. I want that on the record. I am against pretending. I am against the loud, glossy, confident language that makes good people feel small for not understanding it. I have watched that language make excellent DBAs feel stupid. Excellent DBAs are not stupid. They are the quiet backbone of entire industries, and nobody gets to make them feel like the future left without them.

What I wanted was something smaller. Something quieter. Something more honest. I wanted AI to help my clients stop repeating the same confusion over and over. That was the whole mission. No slogans. Just that.

So I built six small, practical things with my clients

None of these are flashy. None will win a keynote. None will trend. But each one changed the temperature in the room when things went wrong, and that is the only measure I trust anymore.

1. A custom SQL Server error parser

You know the moment. A SQL Server error shows up. Somebody pastes it into a group chat. Somebody asks, “Didn’t we see this last year?” Somebody says, “Ask Raj, he will remember.” Twenty minutes pass before anyone has turned the raw error into meaning. Twenty minutes of quiet panic. Twenty minutes of a manager refreshing their inbox. Twenty minutes of a junior developer praying nobody asks them a question.

Panic is the real enemy, not the error. Panic is what happens when nobody in the room has a first sentence.

So we built an AI assisted SQL Server error parser. It takes the raw error and produces a calm first response. What the error likely means. The probable root cause. The SQL Server area involved. The severity. The next safe checks. The possible business impact. And a short note on what not to do in panic.

It does not replace the DBA. Please hear me on this. It does not replace anyone. It removes the blank page fear. The DBA still owns the call. The human still decides. But now they are not starting from zero while everyone watches. They are starting from a calm paragraph. And you would be amazed what a calm paragraph can do for a scared team.

First response time on common issues dropped from around twenty minutes to about three. But the real number I care about is this. Nobody had to page M on a Sunday for the rest of that quarter.

2. An AI assisted query tuning workflow

Query tuning becomes emotional faster than most outsiders realize.

I think again of that Monday morning. D, shrinking. M, tightening. A muted manager. The workflow we built takes the query text, the plan details, wait symptoms, index information, row estimate issues, memory grants, spills, Query Store history, and runtime metrics, and produces a set of tuning hypotheses with validation steps.

The validation part mattered to me more than the suggestion part. It forces the team to ask: did logical reads actually drop. Did CPU come down. Did duration improve. Did waits shift. Did the spill disappear. Did the plan hold, or did it flip back on the next parameter set.

The real change was not technical. It was human. The conversation moved from “who wrote this bad query” to “what does the evidence say.” Nobody was the villain anymore. The evidence was the villain, or the hero, depending on the day.

Blame is what a team reaches for when it does not have evidence. Evidence is what a team reaches for when it has finally grown up.

Two months after we rolled this out at that client, D and M were getting coffee before the stand up. I am not making that up. I watched it happen on a Tuesday and I had to look away for a second so I did not say something sentimental into a work call.

That is the work. That is really the work.

3. An index recommendation reviewer

SQL Server happily tells you about missing indexes. Teams happily create them. And over time, quietly, the database becomes a graveyard. Duplicates. Overlaps. Unused indexes. Wide indexes. Slower writes. Longer maintenance windows. Creeping storage costs nobody wants to explain on the next budget call.

The reviewer takes the missing index recommendation alongside the existing indexes on that table, looks at column overlap, key order, includes, usage since last reboot, and write overhead, and produces one of four verdicts: create as suggested, modify an existing index instead, create a narrower version, or do nothing and here is why. Each verdict comes with the script, the rollback, and a plain language explanation a developer can paste into a pull request review.

That fourth verdict is the one I am proudest of. Because it asks the question I wish every DBA kept on a sticky note above their monitor.

Is this index good for the whole system, or is it only good for this one query right now?

Sometimes the mature decision is to do nothing. And doing nothing, in this industry, takes more courage than people realize. It does not show up in a ticket. It does not earn applause. But it protects the system, and protecting the system is the whole job.

Restraint is the most underrated skill in our profession. Nobody gets promoted for the indexes they did not create. But they should.

SQL and AI - I Am Staying Relevant. Are You? aiindex-800x450

4. A blocking and deadlock explanation generator

A deadlock graph is an ugly thing. Technical. XML. Hard to explain at 10 AM on a Monday when three people are waiting for certainty you do not yet have. I have stood in those rooms. I have felt that heat behind my ears. I have watched my own voice go a little thin as I tried to explain something complex to people who needed it simple yesterday.

The generator produces something human. Who held the lock. Who was waiting. Which session did what. Which object was involved. How long it lasted. Whether this is a one time event or a pattern. What is safe right now. What should be reviewed later, calmly, when the room is not on fire and nobody is guessing.

The impact is emotional more than technical. The DBA can communicate. The developer hears an explanation without feeling attacked. The manager hears a story instead of XML.

When a manager hears a story, they stop panicking. When they stop panicking, the whole team exhales. That exhale is worth more than most dashboards ever built.

5. A SQL Server health report summarizer

Most teams already have data. The problem is not data. The problem is noise. Health reports are long. They are emailed. They are ignored. They sit in inboxes quietly, like unread letters, and they are only rediscovered after something breaks, usually in the most embarrassing way possible, usually in a postmortem where someone asks, “Wait, did anyone check this report?” and the silence that follows is the real punishment.

The summarizer reads daily health data and produces a one page morning brief with four sections. What changed since yesterday. What needs attention today. What is only informational. What should not wait. Each item links to the underlying evidence, so nothing is hidden. Failed jobs, backup status, disk growth trajectories, Query Store regressions, long running queries, wait trend shifts, CPU and memory pressure, error log anomalies — all condensed into a page a human can actually read with their first cup of coffee.

A twenty page report is not insight. It is homework. And nobody in a busy team has time for homework.

The summarizer protects human attention, which is the scarcest, most overlooked resource in every team I have ever worked with.

6. An AI powered wait statistics interpreter

Wait statistics are one of the most honest things SQL Server gives us. They are also one of the most ignored. Teams say “SQL Server is slow.” But SQL Server is not slow. SQL Server is waiting for something. It is telling you, in its own quiet language, exactly what it is waiting for. The tragedy is that most people never learn to listen.

The interpreter reads the top waits over a chosen window, categorizes each one (CPU, storage, memory, locking, log, network, parallelism), explains what it likely means in the context of this specific workload, flags what is probably harmless, flags what needs attention, and ends with a short list of follow up queries to run to confirm or rule out each hypothesis. PAGEIOLATCH. CXPACKET. CXCONSUMER. ASYNC_NETWORK_IO. WRITELOG. RESOURCE_SEMAPHORE. LCK waits. SOS_SCHEDULER_YIELD. Each of these tells a story if you listen. Each of these is SQL Server whispering a truth that most teams are too busy to hear.

SQL Server is not slow. It is waiting. The question is whether we are mature enough to listen.

I want to sit with that line for a second, because I think it is the quietest thing I believe. Most of our database pain is not mystery. It is unread mail. SQL Server has been writing us letters for years. We just never opened them.

SQL and AI - I Am Staying Relevant. Are You? assumptions-800x600

What the savings actually are

I could give you numbers. In one client, three repeating monthly incidents stopped repeating, which, by their own accounting, was worth forty thousand dollars a year in recovered engineering time. I will stand behind that number because I watched them calculate it.

But I no longer lead with money. I used to. I do not anymore. Because in that same client, M took her first real vacation in four years. Two weeks. She turned her laptop off. Her daughter was in every photo. Nothing exploded.

That is the number I care about. I do not know how to put it on an invoice. But anyone who has ever been the person the team cannot function without knows exactly what it is worth.

The fear, named once, properly

I told you at the start I was scared. Let me tell you what happened to the fear.

It did not go away. I want to be honest about that too. Some mornings I still read an announcement and my stomach drops for half a second before my brain catches up. I think that half second is permanent now. I have made peace with it.

But the fear got smaller because I found the part of the work that cannot be copied. And I want to give it to you, in case you need it.

AI can read a plan. It cannot read a room.

Sit with that. Because everything I am about to say lives underneath it.

AI can suggest an index. It cannot decide whether this team, this quarter, with this on call rotation, can absorb the write penalty. AI can explain a deadlock. It cannot tell when a developer is about to quit over how the deadlock is discussed. AI can generate a hypothesis. It cannot carry the scar of the last time that hypothesis was wrong in production at 2 AM with a CFO on the line.

AI does not have scars. You do.

That is not a weakness. That is the whole point. Knowing the answer is cheap. Knowing when the answer is confidently wrong is the job. And AI is very good at being confidently wrong. You cannot automate judgment. You can only earn it, slowly, one incident at a time, in rooms nobody wrote about.

What I am actually proud of

I am not proud because I used AI. That is a small thing. Anyone can use AI. Using AI is not an achievement. It is just pressing buttons.

I am proud because an error became a first response.

  • A slow query became an evidence path.
  • An index suggestion became a review.
  • A deadlock became a readable story.
  • A health report became a decision.
  • Wait statistics became something the team could finally listen to.

D and M got coffee before the stand up. M went on vacation.

The output was never the point. The trust was.

That is the work. That is what it was always supposed to be. Quieter rooms. Calmer mornings. Teams that trust each other a little more at the end of the week than they did at the start.

SQL and AI - I Am Staying Relevant. Are You? relevantCar-800x600

So I will say it again. But I mean something different now.

Relevance is not keeping up with the noise. It is becoming the kind of professional a tired team can exhale around. The kind of person who makes rooms quieter, not louder. The kind of person who leaves teams trusting each other a little more than they did before.

Calm is not a personality trait. It is a practice.

That is what relevance actually is. Not the buzzwords. Not the tools. The calm you bring into the room with you.

So I will ask one more time, the way a friend would ask. Not as a challenge. Not as a threat. Just as one person reaching across the table to another, with both of our coffees cold by now.

I am staying relevant. Are you?

Reference: Pinal Dave (https://blog.sqlauthority.com/), X

First appeared on SQL and AI – I Am Staying Relevant. Are You?

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

Tips for developers on improving collaboration with domain experts

1 Share

According to Domain-Driven Design (DDD) and real life experience, good collaboration with the domain experts is of crucial importance when developing software. It’s amazingly powerful and definitely a catalyst for succeeding in creating value. Do you have a too good collaboration with your domain experts? If not, here are some tips.

A domain expert isn’t just anybody who can do the job that you need to know more about. A domain expert have thought so much about it, have so much experience and have created an understanding on a meta level. A domain expert can even think about how a machine should work to do the job (as Dan Bergh Johnsson puts it).

So, they are rare and when we find one, our success depends on our collaboration.

Yet, it’s been a common comment from developers over the years that they are not able to get any time and attention from their domain experts. When hearing that, I suspect two different reasons. It might be that the domain expert doesn’t think that the initiative you are working on is important. If that’s the case, run away. There is little chance of success then and why would you or the company spend development effort on something that isn’t important?

The more probable reason though is that you are... boring. I know, that was a very blunt comment, but I got your attention, didn’t I? And I’m looking at myself as much as anybody else. I’ve done it, I’ve been so boooring. Going into the room of the domain expert and saying things like repository, higher order function and closure of operations… They tune out after the first word when we only speak geek. And that’s just one error we do.

Anyway, the moment we realise that a problem is our fault, that’s the moment we start solving it. As the saying goes, it’s extremely much easier to change yourself compared to changing someone else! I always get happy when I realise it’s my fault. Then I’m in control and I’m in charge. Things can start rolling!

So let’s just assume it’s your fault that the domain expert is a bit hesitant to your collaboration, what can you do about it? Here are 15 tips. (As a matter of fact, most of the tips are generic, you can use them in every day life, but I’ve especially used them in software development situations.

Here goes…

1 - Develop a shared language

If I had a Euro for every time I’ve heard someone describe a problematic situation with “we don’t speak the same language”, I’d be rich by now. :) It’s annoyingly common and often true. If only there were a solution to this problem!

If you’ve come across DDD, you’re probably familiar with the concept of “ubiquitous language”. Trying to apply it together with your domain expert is an as obvious tips as it is helpful. I wrote a bit about the power of sharing a language in an old post. It’s still a good reminder to myself that the power is almost scary and therefore should only be used for good.

2 - Really understand why

Understanding the domain expert is absolutely crucial since without first understanding, it’s not going to work out to collaboratively develop the needed new thinking. To understand, it’s not enough to listen and capture; you need to really get why. That said, there is a risk of overusing that word in the conversations, and when that happens it can start to feel almost like an attack.

If you notice that you’re whys aren’t received well by the domain expert, try switching tactics. Instead of just asking why, try describing your current understanding, preferably using a concrete example. This often changes the dynamics in the room!

If you didn’t understand because you were talking past each other, now there’s something to gather around. Your description will almost certainly contain a couple of errors, but that’s actually a good thing. It makes misunderstandings visible and helps the domain expert see exactly where clarification is needed and what to focus on next.

3 - Ask the “stupid” questions

Let go of your pride and ask the questions you’re afraid will sound really stupid. Showing that kind of vulnerability can be very effective for changing the atmosphere in tense situations. More often than not, it also helps someone else in the room get a new idea. And, it might not be a stupid question at all, that’s impossible to know beforehand.

What often stops us from using this tool is the fear of letting other people know that we don’t get it yet. But you should optimise for understanding, not for looking smart or seeming like you already know everything.

Goldratt says it well in The Choice: “We need humble arrogance. Be humble to assume that one doesn't know. Be arrogant – have the confidence that one is capable of figuring out.”

Pippi Longstocking says something along the lines of “I’ve never tried that before, so I’m probably very good at it”, but that might be taking it a step too far.

4 – Use different model presentations

You’re trying to create a shared mental model together, and different ways of doing this will fit different domain experts more or less well. It’s also highly contextual.

Sometimes it helps to sketch on a whiteboard. Sometimes it’s enough to talk and really play with the words, evolving the ubiquitous language together. Sometimes writing text together works best, or sketching a user interface. And don’t forget code, it can work like a charm too.

Another powerful shift is to move back and forth between looking at the big picture and diving into the details. It’s also helpful to alternate between abstract models and concrete examples.

It’s not just about finding the right tool for a specific domain expert. It’s about viewing the concept you’re working on from multiple angles. When you get stuck in one, switch to another.

5 – Understand the core objectives of the business

The sub-domain you are working on together with the domain expert doesn’t exist in isolation. Make sure you understand how it fits into the broader business strategy of the company and how it connects to its core objectives. If you, for example, believe you’re working in the core sub-domain, but it’s actually a generic sub-domain, misunderstandings are bound to happen.

6 – Read up on the basics

Earlier, I recommended asking “stupid” questions – and I still stand by that. But be mindful not to exhaust domain experts with questions about the basics over and over again. Doing some reading before and between conversations will definitely be helpful, and it’s also a matter of respecting their time.

If the domain expert notices that you are making a real effort, they are more likely to meet you halfway.

A good starting point is to ask what book students would be given in an introductory course on the subject. Or maybe there are lectures, talks, or other resources that would suit your way of learning better?

It is worth remembering that, in most cases, you do not need to become a domain expert – you just need to be able to understand one.

4-6 are inspired by Tobias Fors, Nyari Samushonga, Patrik Fredriksson and Gregory Young.

7 – Say thanks and mean it

Of course you say thank you when someone helps you. We all do. Still, it’s worth being very explicit about.

Saying thanks is about respecting someone’s time. It’s about showing appreciation for their work, their expertise, and the insights they share. If a domain expert takes time out of what was supposed to be spent on something else to help you understand a tricky concept – and doesn’t even get a thank you in return – that doesn’t exactly set things up nicely for the next session (if there will even be one).

Also, be explicit internally in the organisation about who has helped you with what. That’s not just nice, it helps others in the organisation understand who is worth turning to for help.

7 is inspired by Katharina Damschen.

8 – Act like a mirror

A simple communication technique that can be very powerful in certain situations is to act like a mirror. When a domain expert explains something important and complicated to you, try repeating it back to them in your own words, based on how you understood it.

First of all, it’s a good way for you to deepen your understanding. It also gives you a chance to validate that you actually got it right. At the same time, the domain expert feels heard, which in itself has positive effects, both in the moment and over time.

Finally, for those of us who have that lovely, automatic impulse to jump straight to problem-solving, this tip will help you pause that default behaviour for a moment. Sometimes the most helpful thing you can do is to stay with them for a bit longer, rather than rushing back to you and your ideas!

I suspect this tip may be as challenging for some you as it’s been for me. I still struggle with this, very often. But trust me, it can be extremely helpful!!!

8 is inspired by Lotta Nilsson

9 – Talk in four dimensions

Another communication technique I find very useful is to talk in four dimensions by explicitly describing:

  1. what you observe
  2. what you think
  3. how that makes you feel
  4. what you want

This creates a much richer picture for the person listening, and is typically received quite well.

It’s especially powerful in situations where simply describing what you observe tends to create friction, for example, when the receiver experiences it as an attack.

Even though I’ve known about this approach for a long time, and used it with good effect on many occasions, it still doesn’t come naturally to me. The good news is that if a conversation didn’t go well the first time, you can usually go back and ask for a new try. You don’t just get one chance; try again, but change something.

You can read more about this in the book Clear Leadership by Gervase Bushe.

10 – Make it a dialogue

It’s good to act a bit like a crocodile: small mouth, big ears. But it’s a misunderstanding to think that your job is simply to listen to the domain expert and capture everything they say.

A good conversation isn’t just one-way. For it to be useful, it needs to be a dialogue. For example, your experiences from other domains and situations are often highly interesting to the domain expert (when shared at the right moment) and can help them rethink aspects of their own domain.

If you started out knowing exactly the same things as the domain expert, the collaboration would be pretty useless. Celebrate your differences and be generous about sharing them.

Also, listen to what is said between the lines. If the domain expert doesn’t understand something when you try to explain it, that’s a strong signal that you might have misunderstood. And that’s actually a very good thing. Lack of understanding is an invitation to dig deeper – and might be the start of a real breakthrough!

11 – Create a sense of belonging

Wanting to belong is a deeply human thing, and it applies to both you and the domain expert. So, it’s worth considering how you can create that sense of belonging together.

Try not to see your conversations as transactions. Think of them as the start of a relationship instead. It might seem like you don’t have much in common at first, but in my experience, it often turns into something surprisingly fun and meaningful over time!

This tip is actually quite simple: treat the domain expert like a human. Talk about other things now and then, share a bit about yourself, listen carefully even when it’s not about the domain, grab lunch or have a coffee together. Nothing fancy, just normal, human stuff!

12 – Check alignment

When you start working with someone new, take a moment early on to understand their goals and values. If you’re aligned, there’s usually a solid foundation for trust. If you're not, that's genuinely useful to know early.

The mistake I keep making is assuming everyone shares the same outlook as me and is naturally pulling in the same direction. But people come with different backgrounds, priorities and ideas of what “better” looks like.

A good starting point is to identify one shared outcome you can both agree on, something concrete and simple. Something you both find valuable, even if you don’t share all the same values. Start the session with the mindset “we all want to make things better”.

11 and 12 are inspired by Suzi Edwards-Alexander.

13 – Create the situation

Kenny (Baas Schwegler wrote a post about that the situation might not be optimal for a group to come up with the best ideas. Rank, experience, reputation, personality, etc lead to a dynamic that always favors the same few people. The best ideas might not even have been articulated...

This probably needs a book on its own, but I know that Cecilia Hilton would suggest the two first here:

  • Agree on some basic rules to make sure everybody is heard and everybody listens. For example, that everybody has one minute to speak about the topic. Then everybody speaks another minute about what they think and feel after having heard the others.
  • Use retrospectives (including the domain experts) for improving psychological safety. It’s amazingly powerful if done in a good way. (Weird, I first wrote “psychedelic safety”, wonder what that means…)
  • Celebrate new mistakes. And if old mistakes are causing problems, the fault and action is on the organisation for not having created guardrails. Since they have happened, they are proven to be possible and even likely. Even domain experts are allowed to make mistakes. :)
  • Be kind!

14 – Language as an icebreaker

Writing scenarios in the style of Behavior-Driven Development (BDD) (created by Daniel Terhorst-North) definitely have large value in itself as documentation and as automatic tests. But the biggest value as I see it is in the discussion between domain experts and developers.

It can be a powerful icebreaker. You write three words on the whiteboard, and then somebody says that “we actually don’t call them customers, rather…”. The person asks for the pen and continues writing. The discussion is started and work of evolving the ubiquitous language is on.

Don’t take my word for it, must be experienced!

15 – No derogatory thoughts

Your mindset should always be curiosity and a genuine desire to learn, not letting thoughts like “that seems stupid” through. Goldratt gives clear advice on this in “The Choice”: beware of derogatory thoughts. It’s a trap, a really bad one! Your thinking will create the situation you were thinking about. If you are aware that derogatory thoughts are a trap, it gets easier to recognise them and see them as what they are: just a stupid thought on my part.

Why it works to have a curious mindset, I think it’s because when you continue investigating what seems stupid, you reach understanding and understanding is the cure! A lack of understanding, well then most things seems stupid.

Related to this, Suzi Edwards-Alexander mentioned “fundamental attribution error”. The solution is to focus on the behaviour, not the person. I guess this is useful for tips 13 as well.

Bonus

Dan North mentioned in the comments the following great tips:

For 14 – Language as an icebreaker, two concrete examples I've experienced:

  1. Event Storming as an interactive, high-energy form of value-stream mapping, leads to some great conversations around process, domain concepts, what goes where, who owns what, etc.
  2. DDD in the code where a domain SME can be helping developers because the code literally says what the domain does.

When posting the tips three att a time on LinkedIn, I got a lot of good suggestions for books I should read. Those are still on my TOOD list, but I'm quite sure I will have more tips to share later on. But 15 (or 17?) will have to do for today! Oh, and please don't hesitate to ping me with more ideas!

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories