Adam White Join us as we have a conversation with our guest, Adam White, Senior Product Manager of Automation at Salesforce. Listen in as he recounts the evolution of his gaming and tinkering with various consoles and his first computer, a Pentium 100, revealing how overcoming the challenges of early computing led to a love for problem-solving and technical mastery.

In this conversation, we explore the unconventional pathways to tech careers, emphasizing that a traditional background in technology isn’t always necessary. The discussion navigates through career milestones, from the challenges of managing Salesforce single-handedly to embracing program management at Alarm.com and delving into the role of Atlassian tools in business applications. Our chat then takes a closer look at the latest features in Salesforce Flow, such as the advancements in reactive screen flows, allowing form building with conditionally disabled and read-only fields.

Listen in for an exciting conversation!

Show Highlights:

  • The influence of early gaming on developing tech skills and problem-solving abilities.
  • Transitioning from an economics and Spanish major to a tech enthusiast.
  • Challenges and triumphs of solo Salesforce administration and the benefits of low-code solutions like Salesforce Flow.
  • Latest features in Salesforce, including reactive screens and the repeater component for screen flows.
  • Discussion of the upcoming Salesforce features and the anticipation of how they will enhance user experience and developer capabilities.

Links:

Episode Transcript

Adam White:
I got a NES for Christmas when I was I think four. My first game was, as with most people, Super Mario Bros. I have a, and I don’t know if fond is the right word, but a very vivid memory of getting extremely frustrated, and my father filming me with the experience. Inevitably, I got so frustrated at my dad laughing at me that I eventually hit the camera-

Julián Duque:
Oh my God.

Adam White:
… into his face. But at the time, of course it was very stressful. But years later, it turned out to be a very treasured video that I still share with my kids.

Julián Duque:
And that’s Adam White, Senior Product Manager Automation at Salesforce. And I’m Julián Duque, your host for the Salesforce Developer Podcast. In the podcast, we share stories and insights from developers, for developers.
Today, we’re going to talk with Adam about the screen flow latest features. But before we will start just as we left off and we often do with his early years.

Adam White:
Well, I can tell you that my first experience with a computer, if you count it, was probably the Nintendo back in 1990. I’m going to go ahead and count the Nintendo.

Julián Duque:
Of course. That’s a very specific computer, but sure.

Adam White:
Absolutely. Yeah, so I got a NES for Christmas when I was I think four. My first game was, as with most people, Super Mario brothers. I have, and I don’t know if fond is the right word, but a very vivid memory of getting extremely frustrated and my father filming me with the experience. Inevitably, I got so frustrated at my dad laughing at me that I eventually hit the camera-

Julián Duque:
Oh my God.

Adam White:
… into his face. But at the time, of course it was very stressful. But years later, it turned out to be a very treasured video that I still share with my kids.

Julián Duque:
That’s how you end in YouTube.

Adam White:
Exactly, yeah. That’s an unlisted YouTube video right there.

Julián Duque:
Oh, of course. Of course.
A lot of us started with video games. I remember my first console was the Atari 2600. Way different than the Nintendo. Then the Nintendo came in, and it was a way different world. What happened after that?

Adam White:
Well, I feel like gaming was my segue into just getting into tinkering and technology in general.
I think my pathway was something like NES to Super Nintendo to Nintendo 64. Also at the same time, I think my parents had gotten, gosh, maybe like a Pentium 100 back in the day with either a 288 or a 56K modem. I was always playing the hot potato game of getting online and then having to get off because someone had to make a phone call.
But at the same time, I think my computer at the time came with… Gosh, I’m trying to remember back. I think it was Freddi the Fish was one of the games it came with and Army Men and Civilization II.

Julián Duque:
Oh yes, I remember that one.

Adam White:
Great games. Those exposed me to a whole different world of gaming because those are something you have to do. You have to install them. You have to troubleshoot them. You have to wonder why things are running slowly. And so-

Julián Duque:
The drivers. Getting the sound drivers, speeding drivers.

Adam White:
Think back in the day, things were way harder. You had to boot into DOS with a floppy disk to install windows. I think gaming was really my segue into getting tech-savvy because eventually you get that itch. You need to upgrade your computer. Back then, it was actually cheaper to buy the parts and upgrade.
I think maybe in middle school, or maybe it was freshman year of high school, I built my first computer. When you do that, you have to do a lot of research wondering why it’s not booting up. You’re ready for the tech world at that point.

Julián Duque:
Definitely.
Did you study any tech-related career? What’s your background?

Adam White:
Yeah, it’s interesting. My whole family probably would’ve expected me to go into engineering, but I just didn’t like math a whole lot. The schools I were looking at had pretty hard engineering programs, and most of them were heavy in math.
Super interested in technology, but I felt like I could get into the tech field without doing all of that. And so I went the business route. Undergrad, I was an econ and Spanish major, but I took a couple E-school classes around programming and things like that. But it wasn’t really until after college that I started to get more into programming and systems.

Julián Duque:
And what was your premier programming experience? Do you remember your first language or environment?

Adam White:
I do, yeah. I think it was called Scheme. It was-

Julián Duque:
Scheme? Oh, yes.

Adam White:
Schema or Scheme?

Julián Duque:
Scheme. The Lisp based one with the parenthesis?

Adam White:
Yeah, exactly. I think that was my first exposure. I mean, really Excel formulas were like my first programming experience, but I think Scheme was my first real language that I picked up in college. And then started to dabble in Java a bit a couple years, mainly in my second job just to put it under my belt.
And then later with Salesforce, Apex was obviously very similar to Java so I picked up on a lot of that. All the historical stuff around learning object-based programming and things like that really gave me a good leg up.

Julián Duque:
Yeah.
Now speaking about APEX, how you started with Salesforce? Because you mentioned transitioning from Java to APEX, did you have the opportunity to work for a company with Salesforce or at Salesforce?

Adam White:
Yeah, so Salesforce wasn’t even a blip on my radar. As with probably most people when they get out of college, I had no idea what I wanted to do. Of course when you don’t know what you want to do, you go into consulting out of school. I was in management consulting at Accenture.
A couple years in, I enjoyed being around systems. Accenture is a very system-heavy company. I think I had heard the word Salesforce muttered around the office, but it wasn’t really something I was super interested in because I didn’t know what it was.
And then I left Accenture after a couple of years to join a small tech company in Tysons Corner called Alarm.com. I think maybe when I joined there, was about 120 people as a program manager. I was quite good at program management, and actually they were in the midst of evaluating program management and change management tools internally. I implemented Jira, Confluence, Bitbucket, a bunch of those. Atlassian tools.
That got me into the whole business application space. After about a year we launched it, and I was looking for other opportunities outside of program management. And so I jumped into our operations group because our Salesforce instance really didn’t have any dedicated administrator. And so I went ahead and took the job and was up for the challenge. I think it had been quite a number of years without a dedicated admin, so there was a lot of tech debt. There was no process in place, so I put on my program manager hat and implemented a change management board with Jira. Got my admin certification.
Just really got super into Salesforce and realized it was something that I wanted to do full-time. I left that and started down here in Richmond with a group called CapTech Consulting as a full-time Salesforce consultant after having been a solo administrator for about a year. At that point, yeah, that’s all she wrote. Just got really into Salesforce. And then quickly discovered the magnificence of flow, which back in the day was very different from what it is now with the Flash UI and no-hold-bars set up configuration. It was a different time then.

Julián Duque:
Yeah.
How was that first experience with what we call low code? Because you were used to Java object-oriented programming, some APEX, but then you get the experience of not using code directly but a visual tool to build an application. How was that first experience for you?

Adam White:
Yeah, so I actually didn’t really do a whole lot of coding day-to-day in really in most of my roles. When I was first starting out with Salesforce, it was all about workflow rules and Process Builder. Use APEX when you need to.
Maybe that’s probably why I was so into Salesforce was because it was so easy. When I was an administrator for Jira and Confluence, it was tricky. You had to install add-ons to do a lot of the same automation that you can do in Salesforce very easily. And so I think those are the things that I had wished I’d had with Jira, with all these awesome, easy automations that you can set up. And so I think at least for my first, gosh, automation was probably just a basic email alert.
But I do remember my first flow. I think it was a flow that was kicked off by Process Builder because I was trying like hell to do something in Process Builder that just simply wasn’t possible. I was trying everything in my power to not have to create a flow. This was, gosh, six years ago at this point where I had to create a record and then reference the record ID that I had just created and write it to an account record or something like that. It was a, gosh, couldn’t have been more than a two-step flow. But just at that moment you’re like, oh, this is not that bad. It was also very cool.
It was just very powerful to be able to quickly spin up an automation for very little effort. I think that for me was just… That’s all she wrote.

Julián Duque:
Yeah, I consider myself pretty new to the Salesforce ecosystem. I joined the company four years ago. I never used Salesforce before. As a developer advocate, I have to create content and share with the developer community. I tried to create content around flow, but I didn’t know anything about flow.
So of course, first thing I did: Trailhead. I started consuming Trailhead, doing the super badges. Initially, I was super hesitant to the whole flow concept or low-code concept because I consider myself a hardcore developer. Show me the code. This is what I like. But once I started to learn, to grasp the concepts, building a screen flow, connecting things together, processes together, it was like a turning point for me. I knew this was powerful and now understood why people like it that much.

Adam White:
Yeah, absolutely. I mean, of course it’s a UI. It’s never going to be as… Gosh, if I think about if I have big blocks of code that I can just copy and paste at will in other places, it’s very tricky to replicate that experience in something like a tool with flow.
But you also get many other things, right? And so from my perspective, of course there are going to be pros and cons, specifically around the experience of building it. But at the same time, you also have to factor in all the things that you gain, right?

Julián Duque:
Yes.
Right now you work in the flow team. What’s your current job with the flow team?

Adam White:
Yeah, so I am a product manager specifically around screen flows. One of my major objectives right now, at least the past year and likely into the future, is what we call our reactive screens effort. I also own many of our out-of-the-box components that you can drag into the canvas.
But by and large, my main effort right now is just frontier expansion in screen flows, which is making screen flows specifically more powerful and extensible. This is especially important for developers. Because historically before reactive screens, to get a component to react to another component, you’d have to build just a big monolithic LWC or Aura component on the screen that might be comprised of five or six different components. But you couldn’t really see what was going on. You couldn’t reuse it. It was very restrictive, right?
What reactive screens allows you to do is build modular extensible components. You can give a component a job to do and reuse it in any flow, which is quite important when you’re creating scalable applications, right?

Julián Duque:
Yeah.
This is a little bit for our audience that it’s new to flow. What is a reactive component? How can I envision a reactive component to understand a little bit more?

Adam White:
Yeah, and it’s interesting you say that because a lot of times people just assume that that’s how the web works, right? For you developers out there, this is all about putting more data and interactions into the client, into the browser.
Historically, screen flows have been extremely server focused. You got to put in some text, hit the next button, it hits our servers, it comes back.
There’s pros and cons with that, right? You get a lot of good data security out of that. However, at the expense of the user experience. An example might be the very basic use case is as I’m typing in an input field, I have some text on the right-hand side telling me how many characters are left in my input. Or if I’ve got an input field that’s invalid, it might have some warning as I’m typing. That, hey, your input’s not valid before they have to actually hit next and experience that at the very end of the form and have the user get frustrated.
It’s all about improving user experience, more real-time and in the client than in the server.

Julián Duque:
And what about formulas? Does it support formulas as well?

Adam White:
It does, yeah.
There are some formulas that are not supported. Our formulas team, so outside of flow, actually built an entire library that essentially takes all the Salesforce formulas that we all know and love and converts them into JavaScript. We can run those in the client. There are a vast majority.
There are many functions and formulas that are supported in the client. And so if you do something like one plus one, imagine that, you’ll get a two on the right-hand side of a flow screen. And so there are definitely many formulas. Formulas are a key part in driving reactivity, especially when you’re trying to do math, perform a logic, basically just drive the whole experience.

Julián Duque:
I also heard it’s possible to have reactivity between, let’s say, a standard flow component and a custom one built with Lightning Web Components.

Adam White:
Absolutely, yeah. As long as you are following best practices in your LWCs and you’re importing the flow control module and you’re firing change events in the right way, it will work.

Julián Duque:
Nice. That’s great.
I’ve seen some of your demos that you post on LinkedIn, and for sure we are going to be sharing your LinkedIn on the show notes so people also see all the greatest things that your team are working on.
Is this new feature, correct me if I’m wrong, the repetitive components? Is that something that’s already available?

Adam White:
Yes, it’s coming soon. That was a little preview. It’s called the repeater component.

Julián Duque:
Repeater component?

Adam White:
Yes, so repeaters are something that actually are fairly high effort as a developer, right? It’s not a great model that you can reuse for any object. You almost have to recreate a new repeater every time you need a different object, new set of fields.
And so I’m really excited about repeaters because it’s going to be built natively in flow. You won’t have to create custom LWCs any time you need to repeat a set of inputs, right? Imagine I think the classic use case we like to use internally is you’re setting up a set of beneficiaries for an insurance policy. You as the flow a builder don’t know how many beneficiaries that user might want to add to that policy. And so typically you have to use conditional visibility with a finite number of in this case beneficiaries, which very limiting from a scalability standpoint, right?
And so this will allow you to basically just drag in a… It very much looks like a section component. You can put in supported fields. After the screen, we essentially create a new data type called a repeater data type that you can loop over and do really whatever you want with it. We created it with flexibility in mind because we don’t want to assume you might have one object inside a repeater. You might have two or three different objects that you’re just trying to abstract to the user.

Julián Duque:
Wow. That’s powerful because even though using custom Lightning Web Components, that’s not an easy task.

Adam White:
It’s not, and I’m really excited. It’s going to be a huge time saver. Really, it’s just a total mine shift in how you can create UI very easily in Salesforce now.
I think what I can’t wait for is eventually this release, we’re just supporting a subset of components. When we GA will be supporting all of our standard components and LWCs, which is going to be fantastic. And then after that, we’ll be supporting what we call the edit scenario, where you start with data when you enter the screen. Once we get to that point, it’s going to really change the game on how people want to create records and relationships in Salesforce. It’s going to just be such a fantastic addition for end users, I think.

Julián Duque:
So we have reactive components, which are GA, right?

Adam White:
Yep. We went GA in winter ’23.

Julián Duque:
Okay.

Adam White:
Winter ’24, just this past release.

Julián Duque:
Oh, nice.
And the repeater component, which is coming?

Adam White:
Yep. It’ll be beta in this upcoming release, and we’re shooting for GA two releases from now.

Julián Duque:
Beautiful.
And what other features do you have?

Adam White:
Ooh, yeah. One of the biggest challenges with reactivity today is you can react on things that are already in the client, already on the screen. You have to know ahead of time what the user’s going to do.
But what if you need to go and get data while the user’s on the screen? Classic example is a user selects a contact record, and maybe you want to display the contacts cases right below that look up. Even though we have reactivity, that’s just a framework thing. That’s just a platform functionality, but you still need a mechanism to grab that data.
And so what we’re working on is something called screen actions, which will come in two different parts. The first part is through what we’re calling action buttons. With an action button, you’ll be able to essentially run an auto-launch flow to go and get data or perform some calculation for you that can then spit back into your screen without having to hit next.
And so the world is your oyster. If you can put it in an auto-launch flow, you’ll be able to do it all on a single screen. Let’s say in that example where you put in a contact into a lookup, what if you wanted to grab their other accounts? There are other cases or perform some sort of aggregation? You can use our new transform element. Spit it all right back into the same screen so that as soon as you select that contact, you can have a button that says get contact info. Spits out everything that you could ever want to know about that contact all on the same screen without hitting next.

Julián Duque:
Or also an external call out [inaudible 00:21:59]

Adam White:
Absolutely.
The very first action button demo that I did once this had hit production a couple of weeks ago in our preview orgs was I created a button to hit: the dad joke API. There’s a free API that you can use that can generate dad jokes. I just threw in the HTTP call out, the standard one with flow, generated some dad jokes, and threw it in some display text.

Julián Duque:
Of course. That’s the best way to demo that.

Adam White:
It is.

Julián Duque:
So the first one is a button and the second one…

Adam White:
Oh, yeah. So then the second one is something that’s going to come a little further out. We actually don’t have a name for it yet. We have a lot of debates internally. Would love to hear what people think we should call it.
But essentially now this is where we really get into some crazy stuff. Imagine you could run one of those auto-launch flows off any criteria on the screen. Without having to hit a button, imagine you could go and get all that data from that other step as soon as there’s a change in the screen.
You could think of it as a reactive action almost, where if someone’s typing, you could run a flow and do calculations. A lot of people have asked for things like, hey, as I’m selecting rows in a data table, what if I wanted to add up an opportunity amount and show it on the right-hand side? Or grab the earliest or latest opportunity and show it to the user? There are just a million different use cases, which I think this is going to be just totally… It’ll totally change the game on how screen flows are built.

Julián Duque:
If you compare to a custom Lightning Web Component, this like an event action, pretty much?

Adam White:
You could think of it as like a controller, almost. Yeah, like an event and controller model.
What’s neat is now this could allow for developers to not have to build controllers that are nearly as complicated. They can just use the data from the flow and they can focus on the front end.

Julián Duque:
This is going to enable a lot of developers know that I’m thinking because you don’t need to go to build custom invocable actions or custom components to perform these level of UX but doing it just with standard components on a screen flow. This is definitely going to enable a lot of people know that I’m seeing it.

Adam White:
Yeah, most definitely.
And then of course there’s other features that we’re working on that I would consider more table stakes, that are expected with form building. One thing that we’re working on right now is conditionally disabled in read-only fields. It’s been a very common ask for folks to be able to disable a text input or make it read-only. Because when you want to display information about a record, you have to use display text, right? But what if you want it to look like a form? That’s where the read-only mode can come in for text inputs. That’s another thing we’re working on.

Julián Duque:
It seems your team is busy and next year is going to be busier.

Adam White:
Very busy.
It’s funny. Before joining the team, I was a big flow-netic for years. Even then, I was impressed with the amount of content that the flow teams generated. I always took for granted how complex all these features are to create. Because when you add a feature, you have to support that feature and you have to figure out how that feature works with your new features and your old features. Every net new feature you add adds complexity and development time.

Julián Duque:
Beautiful. That’s great. I’m super happy to see all the new features that are coming to flow and all the great work that your team is doing.

Adam White:
Thank you. Yeah, I’m really excited, too.

Julián Duque:
Sure.
Adam, when you are not improving the life of our Salesforce developers by adding awesome features to flow, what do you do? What are your hobbies or what do you like to do normally?

Adam White:
Well, if you couldn’t guess already from the beginning, I am a gamer. I don’t discriminate in what I play. I’ve got PC, PS5. I’m actually really, really in love with my Steam Deck.

Julián Duque:
Oh, nice.

Adam White:
I bought a Steam Deck back in summer. I just got the new OLED model, which has been just awesome. I love gaming.
I enjoy coffee roasting, actually. I roast my own coffee because I got super into coffee a few years ago. It’s expensive to buy really nice beans, and I got into coffee roasting initially as a way to save money on fancy coffee beans. But it turned out really started enjoying it.
Yeah, I really, really love metal. I think you and I have talked a lot about metal music. I’m actually about to go on a cruise in a little bit.

Julián Duque:
Ah, I’m so jealous.

Adam White:
A heavy metal cruise. Yep, that’d be real fun.

Julián Duque:
I’m so jealous.
What are you playing right now? What is the game you’re playing right now?

Adam White:
Ooh, so I’m on a rogue-like break right now. I say break because sometimes I’ll be in a game like Baldur’s Gate III, which I just finished-

Julián Duque:
Oh, yes.

Adam White:
… which took a long time. Sometimes after those long-winded epic journeys, I’ll just go on a rogue-like spree where I can pick games up and put them down real fast on the Deck.
Enter the Gungeon is one I’m playing right now. Let’s see. I went wild on the most recent Steam sale, so I’m just toying with a few games right now. But yeah, Baldur’s Gate III I recently finished.

Julián Duque:
Wow. I’m planning my second playthrough.

Adam White:
Very nice. Yeah.

Julián Duque:
What a beautiful-

Adam White:
I’m scared to start a second playthrough.

Julián Duque:
What a beautiful game.

Adam White:
Yeah, I would say top 10 game for me, easy. I was talking to my friends. It seems easy on the surface to pick a top 10, but then when you think back of 30 years of gaming, it actually quite difficult.

Julián Duque:
Yes, definitely.
Adam, this has been an amazing conversation with you. Thank you very much for all you do. Folks-

Adam White:
Thanks for having me.

Julián Duque:
[inaudible 00:28:22] to start listening this episode in 2024. Happy New Year to you all.

Adam White:
Happy New Year.

Julián Duque:
And that’s it. If you want to learn more about the show, head on to developer.salesforce.com/podcast where you can hear all the episodes and read the show notes. Thank you everybody, and talk to you the next time.

Get notified of new episodes with the new Salesforce Developers Slack app.