This is Part 1 of our conversation with Dan Appleman, author, software engineer, and entrepreneur. Dan has created several PluralSight courses out there and is very well known for his books on Advanced Apex. 

Not having any background in writing software in Salesforce, Dan spent months just experimenting and thinking about how one translates existing standard design patterns into the world of cloud computing with limits, different use of static variables, and execution contexts. He ended up creating an architecture around what he had learned and built the very first instance of their response management application based on that architecture. 

Show Highlights:

  • Dan’s early years and his love for computing
  • His introduction into Salesforce/cloud computing
  • Dan’s first experience doing Apex trigger
  • His passion for education
  • How he got involved in Pluralsight
  • The impetus behind developing materials targeting admins
  • Why SFDX source is the center of the universe in the modern world
  • The impact of automation on developers
  • The power of admins and developers working together

Links:

Episode Transcript

Dan Appleman:
[inaudible 00:00:10] say, “Hey, I was able to get a promotion, or a raise, or enter a new field, or do a pivot in my career because of something that you taught me.” I mean, what could be better?

Josh Birk:
That is Dan Appleman, the CTO and co-founder of Full Circle Insights. I’m Josh Birk, your host of the Salesforce Developer Podcast. Here, in the podcast, you’ll hear stories and insights from developers for developers. Today is part one with my interview with Dan. Dan is widely known in the community. He’s got several Pluralsight courses out there. He is very well known for his book on Advanced Apex, as well. We’re going to sit down and talk about a wide range of topics concerning Salesforce development, but we’ll start as we frequently do with his early years.

Dan Appleman:
Well, my earliest, earliest one was hand filling out punch cards at a high school. A teacher, who worked in the industry, he’d have us fill out punch cards. He would take them to work, and run them, and bring back the printout.

Josh Birk:
Wow.

Dan Appleman:
That doesn’t really count. My real love for computing happened during student orientation at UC Irvine. I was an electrical engineering student, and really didn’t know or think about computers. There was this big event going on that evening. Someone I met had a free account on one of the campus computers. He said, “Hey, we can go and log in.” I say, “Sure.” We go over to there. We end up spending the whole night. It’s my first, and one of three, college all-nighters playing a text-based Star Trek game on a PDP-11/45.

Josh Birk:
Oh.

Dan Appleman:
At that point, it was, “Okay, I’m hooked.”

Josh Birk:
Uh-huh (affirmative).

Dan Appleman:
I ended up getting a double major. I ended up getting a CS major, as well.

Josh Birk:
Wow. I don’t think… Gosh, I’m trying to think of how to express to a younger audience how addictive those early text games were, and how you could just pour hours into them just trying to figure out a single puzzle.

Dan Appleman:
Well, you know what? Games are games. I don’t think that it’s any different from playing Minecraft, today.

Josh Birk:
Yeah. Yeah. That’s fair. That’s fair. It was the graphics capability that we had access to at the time, so.

Dan Appleman:
Right. This Star Trek game, it was really cool because it was on a multi-user computer. The PDP-11/45 supported about 30 or 40 terminals. You were actually playing against other people. Right?

Josh Birk:
Nice. Nice.

Dan Appleman:
… which was really, really cool and innovative at the time.

Josh Birk:
Nice. I am now reminded of old school bulletin board system door games, which is yet another thing I kind of feel like is something we’ve sort of lost in our modern internet of gaming, was a cherished memory of my youth in growing up with computers, too.

Dan Appleman:
Those local BBS systems, the bulletin board systems, they were local because you couldn’t afford long distance calls. It was actually people in your town and neighborhood. There was one that I belonged to called Stewart II. We would have monthly potlucks, and we would actually meet the people. That was really cool.

Josh Birk:
Right, right. Yeah. Some of my early communal experiences were a little less legal in that our potlucks involved pirated games. To my credit, it was also before you could just randomly download a bunch of stuff. There were games that I hadn’t even heard of that we’d pass around at these swaps. They were actually a lot of fun.

Dan Appleman:
Yeah. I’m not going to talk about my history with…

Josh Birk:
We will not ask for any confessions on the podcast, and so.

Dan Appleman:
No. I just note that, in those early days, to be called a hacker was a compliment.

Josh Birk:
Right?

Dan Appleman:
Right.

Josh Birk:
Right. Yes. It was a point of pride, and it-

Dan Appleman:
Exactly.

Josh Birk:
… actually meant more like you just knew the internals of how to get stuff done, as opposed to you were wearing a black hat and trying to break into the post office.

Dan Appleman:
Exactly right. Exactly right.

Josh Birk:
Nice. Okay. Then you went into computer science. Did you want to always go into software engineering, in general? Did the Star Trek game basically just create this as a passion for you?

Dan Appleman:
Well, it added on because I didn’t lose my love of hardware and engineering. In fact, first part of my career, I spent a couple years doing firmware and embedded software.

Josh Birk:
Gotcha.

Dan Appleman:
I actually created what might be the very first piece of test equipment that ran on Windows 1.0. I won’t swear to it, but it’s very possible. It was a semiconductor curve tracer, and I was responsible for the software for that. It might have been the first piece of test equipment running under Windows.

Josh Birk:
Wow. That’s pretty cool. Okay. It’s an interesting road, then. You’re doing hardware. You’re working with Windows. What was your earliest introduction to Salesforce/cloud computing?

Dan Appleman:
Well, most of my career was spent in Windows. Right?

Josh Birk:
Uh-huh (affirmative).

Dan Appleman:
Visual Basic, then .Net, and so on. I’d sort of reached the point in my career where I was, I called it, semi-retired because, yeah, .net wasn’t that exciting. I sort of felt they were adding features into VB, .Net, and C# that were just different ways of doing the same thing.

Josh Birk:
Gotcha.

Dan Appleman:
I was sort of drifting a little bit. A friend of mine reaches out, and says, “Hey, I’m doing Salesforce, and I want you to write a trigger.” My first reaction was, “What is Salesforce? And, what’s a trigger?”

Josh Birk:
Uh-huh (affirmative).

Dan Appleman:
I was the only software developer she knew. Software is software so I wrote a trigger, and ended up doing more of these things, and working on larger and larger projects. Finally ended up working on this really big project. This is early days of Apex. I think Visual Force was brand new. The limits were you could do 10 queries in an execution context, something like that. It was really, really, really limiting. I built this project, and the launch was an absolute disaster.

Josh Birk:
Oh, really?

Dan Appleman:
Well, you know how, even now, things will work great on a sandbox, but then they hit production and-

Josh Birk:
Oh, yeah.

Dan Appleman:
Right? There are things-

Josh Birk:
Yep.

Dan Appleman:
It’s different. Right?

Josh Birk:
Yep.

Dan Appleman:
Well, we hit that with a vengeance. Just, nothing worked in production. That was a real eye-opener to me. When we got together to form Full Circle Insights, we’re going to write a real application. I sort of took a step back, and I said, “You know? I don’t know how to write software on Salesforce. This is a different platform. Obviously, the design patterns I grew up with don’t really work, at least, not well.” The first part of this project, I spent months just experimenting and thinking about, “How does one translate existing standard design patterns into this world of cloud computing, with limits, and different use of static variables, and execution context, and so on?” I ended up creating an architecture around what I’d learned, and we built the very first instance of our response management application based on that architecture. I got a lot of things right. We’re still built on that architecture. We haven’t had-

Josh Birk:
Oh, wow.

Dan Appleman:
… to tear it down and refactor. I mean, it’s just very solid architecture. Based on my earlier part of my career, the Windows world, I always sort of followed this practice of, “Learn something, teach something,” or “Learn a lot and write a book about it.” I ended up writing the first edition of Advanced Apex Programming on force.com, as it was at the time-

Josh Birk:
Gotcha.

Dan Appleman:
… based on, basically, what I’d learned in the real world.

Josh Birk:
Got it. A couple follow-ups there. One being, it feels like, and this is just through perusing your LinkedIn and whatnot, but it feels like, alongside a passion for your peers, you’ve also always sort of had this passion for education and teaching others. Is that a fair statement, that this has been pretty true for most of your career?

Dan Appleman:
Absolutely, absolutely.

Josh Birk:
Okay.

Dan Appleman:
I’ve written a lot of books, and again, it’s one of these once I learn something, I like to write about it, and teach it, and so on. I spent many years on the Microsoft speaking circuit, traveling around the world and doing sessions at conferences. In fact, I’ve done quite a few of those in the Salesforce world, as well, such as Dreamforce and community conferences. Over 30 years now, I’ve been volunteering with this teen leadership youth group where basically it’s this mentoring where you’re teaching teens how to become leaders, and future leaders, and current leaders, and so on. I ended up writing a book about that, as well, called Developing Teen Leadership.

Josh Birk:
Oh, wow.

Dan Appleman:
The pattern of do something, teach it, and then write a book about it, has been a pretty steady pattern.

Josh Birk:
Where do you think that originates from? I mean, it almost sounds like it’s part of your professional cycle, even, that you consider the extension of telling other people what you’ve learned as almost the last part of your cycle to then go begin anew and learn something new. Was this something that you used to do in college, or did it just sort of feel natural to you?

Dan Appleman:
I really don’t know where it started. I think that I always liked the idea of becoming a teacher. I just never liked the idea of teaching in a school.

Josh Birk:
Yeah.

Dan Appleman:
I did not have a delightful time in elementary school or high school. It wasn’t awful, but it wasn’t great. I loved college.

Josh Birk:
Yeah. Gotcha. No. I hear you. I think sometimes you just sort of have to realize… I had no idea how comfortable I was going to be instructing workshops until I actually started doing it. It just felt so natural to be in front of a, not a room of people, but a room of developers, a room of my people, of my tribe, and then sharing with them all the stuff that I had just done in the last three weeks. It’s like an evolution of presenting. Right? You either get up on stage and enjoy yourself, or you don’t. If you don’t enjoy yourself, don’t abuse yourself by trying to be a presenter. If you enjoy yourself being an educator, by all means, keep doing it.

Dan Appleman:
Also, you think about, “What are the rewards?” Well, sure, there’s money, but I’ve always felt a little bit astonished that people are willing to pay me to write software. Right? Because, I love doing the work.

Josh Birk:
Right.

Dan Appleman:
The greatest reward is when someone comes back to me, and says, “Hey, I got my job because of your book.” It’s, “Wow. I’ve changed the world. I have had an impact.” That’s, by far, the most rewarding part. When people watch my Pluralsight courses, and say, “Hey, I was able to get a promotion, or a raise, or enter a new field, or do a pivot in my career because of something that you taught me.” I mean, what could be better? Right?

Josh Birk:
Right, right. Exactly. Exactly. Well, I do want to talk more about the book itself, but you mentioned Pluralsight. I want to dig into a little bit of that. I think we just heard it. Why did you get in involved in Pluralsight? Give me a little bit of history, there. When did you start getting involved in Pluralsight? What kind of courseware did you want to put out there?

Dan Appleman:
Okay. It’s, actually, a funny story. I’ve been with Pluralsight, now, for about 10 years now, which is a little bit shocking. I was recruited at a Dreamforce by Aaron Skonnard, who was, and is, the CEO, who basically said, “We want Salesforce content. You’re a good speaker so please do a course.” I get approached by all kinds of people, for all kinds of things. I don’t know. It was the right time. I was curious, and sure, I did this course. It was a lot of work. It was the first version of, basically, Apex for Developers, how to learn Apex if you’re coming from another language.

Josh Birk:
Gotcha.

Dan Appleman:
The course flopped because, at the time, there were very few Salesforce viewers on Pluralsight.

Josh Birk:
Yeah.

Dan Appleman:
I did enjoy the process. I thought, “Well, what else could I do?” I thought to myself, “You know? I’d like to do a course that every developer would benefit from.” I created a course called Career and Survival Strategies for Technologists, which was basically, “Here’s how you build a tech career.” At the time, Pluralsight was very small. There weren’t a lot of authors, and they’d never done this kind of course before. They’d never done what we call a soft skills course before. The content guy, at the time, Fritz Onion, said, “Yeah. Let’s try it. Let’s see what happens.” And, it was a huge hit.

Josh Birk:
Nice.

Dan Appleman:
I’ve continued that pattern. I’ve two types of courses on Pluralsight. I have the technical courses, like the Salesforce courses, and so on. In fact, I’m watching one right now. I’m getting started with JavaScript for Salesforce Developers because I need to remind myself how JavaScript works. I’m watching my own course, which is weird, but it works. I have a ton of career courses, Leading Virtual Teams, and Learning How to Learn Efficiently, and How to Keep Up With Technology, and Building Trust and Commitment on Teams, and The Dark Side of Technology Careers, or The Hidden Secrets, it’s called now… All the stuff that comes and bites you, if you don’t know about it. I just have a lot of fun doing the soft skills and career courses, as well.

Josh Birk:
Gotcha. No. That’s awesome stuff. I love that you have fallen prey to… I think it’s a trap that anybody who does any kind of education, I don’t even know if it’s technical, it’s certainly not Salesforce only. I tell evangelists, when they’re new to the job, I’m, “One of these days you’re going to Google for a solution. The solution’s going to be your own blog post, and it will be okay. You’re not going insane.” It’s just you, from three years ago, had the answer. Now, you’re reminding yourself.

Dan Appleman:
That is incredibly true, and incredibly important to realize because we don’t remember things. Right? You know?

Josh Birk:
Right. It’s like the job interviews where it’s, “Well, do you Google answers?” I’m, “Of course, I Google answers. I’m a technical person.” There’s so much information out there. Constant joke on the podcast, Stack Exchange is my IDE half the time. “I got to go figure out, bro.” Brian [inaudible 00:15:32] figured it out three months ago. Why wouldn’t I leverage his knowledge?

Dan Appleman:
One of my best courses on Pluralsight is called Learning Technology in the Information Age.

Josh Birk:
Nice.

Dan Appleman:
I talk about the fact that we are not a knowledge society any more. Knowledge is cheap. Right?

Josh Birk:
Mm-hmm (affirmative).

Dan Appleman:
Knowledge is everywhere. What matters now are skills, the ability to interpret and effectively deploy knowledge so that when you copy that Stack Exchange code, or that developer form code, you don’t just paste it in. You take the time and are able to understand it, and adapt it to your needs.

Josh Birk:
Yeah. Yeah. One of the things I love about Stack Exchange is the nerdy discussions about, “Why is this code block better than that other code block,” kind of thing. It’s such good dopamine to hear about, “Code that looks efficient, eh, can be more efficient. Here’s all of the heat memory reasons as to why that’s true.”

Dan Appleman:
Absolutely. Especially when you’re working on the bleeding edge, and there aren’t that many people who are dealing with the problem that you need to solve today.

Josh Birk:
Right. Right. Let’s talk a little more specifics about the Pluralsight stuff. If I recall correctly, you have, I’m not sure how new the material is, but you have some developer material. I believe you’re aiming it at admins. What was some of the impetus there?

Dan Appleman:
It’s all new. One of the things I did during the pandemic is update almost all of my courses.

Josh Birk:
Gotcha.

Dan Appleman:
It’s pretty up-to-date. I have two that are targeted at admins. One is Formula Fundamentals in Salesforce.

Josh Birk:
Got it.

Dan Appleman:
Anybody who actually really wants to learn formulas, especially all that Boolean logic, good course on that. The one that I’m most interested in, in that respect, is called Getting Started With Salesforce Development, or something like that, or Salesforce Development Getting Started. It is basically an introduction to SFDX. Right?

Josh Birk:
Okay.

Dan Appleman:
My idea is that it is time to stop teaching the developer console. Certainly, if you’re going to be an Apex coder, you need to start with an IDE and SFDX. That’s table stakes. Any Salesforce developer now who is not using SFDX in an IDE, they’re not a Salesforce developer anymore. Strip away their certifications. It’s just, “Sorry, it’s too late.” Right?

Josh Birk:
Yeah.

Dan Appleman:
True DevOps in Salesforce, the ability to really do it properly, you have to have the admins. Right?

Josh Birk:
Okay.

Dan Appleman:
They have to be working with metadata. They have to be committing, into repositories, those workflows, and the processes, and the flows. We just have to get there. I know it’s really early, but we need to get there. That means it’s really time for admins to start learning about metadata. They’re not going to be creating workflows in an IDE. They ought to know how to understand that there is metadata behind it, to have the ability to pull it down when they make changes, and to commit it into a repository. I think we need to get there. The tooling is still primitive for admins. I wanted to give admins the tools to be able to do that, and really participate in proper DevOps.

Josh Birk:
Yeah. Well, that’s interesting. First of all, SFDX is like the center of the universe when it comes to dealing with metadata. Am I paraphrasing you correctly, there?

Dan Appleman:
Source is the center of the universe in the modern world.

Josh Birk:
Okay.

Dan Appleman:
SFDX is the tool that lets us access that source, and lets us monitor changes, and pull them down, and do things with them. There will be better tools that will hide a lot of that stuff from admins, as time goes on. Right now, I don’t think they’re really very mature, yet. I don’t think there’s any standard or established standard about it. My approach in this course is to say, “If you’re an admin, you can take this course. You don’t have to understand code or learn how to code. You’ll understand how you can modify a workflow in a sandbox. You can pull it down. That is reflected by metadata, source, which you can then do things with like back up or store somewhere, or archive, or put in a repository, or do something with. That’s your source of truth.”

Josh Birk:
Gotcha.

Dan Appleman:
Metadata sources the source of truth.

Josh Birk:
Got it. I’m trying to remember. I believe it’s my colleague, Peter Cheetham, who had a session, at one point, he put together, that I think was called Don’t Fear the Command Line. I’m reminded of all of this, right now. Do you feel like admins are comfortable with getting… You’re talking about using command line, SFDX, getting into the XML for the metadata, and stuff like that. Are you seeing a lot of adoption, I guess, is my real question?

Dan Appleman:
Oh, probably not.

Josh Birk:
Okay.

Dan Appleman:
Not among admins, yet. Here’s the thing. We talk about the command line as if it’s this scary and intimidating thing. When it comes to managing metadata, it’s just a handful of commands. You know?

Josh Birk:
Yeah.

Dan Appleman:
It’s fore:source:pull, fore:source:push.

Josh Birk:
Yep.

Dan Appleman:
You don’t need to know the whole CLI to do the things that an admin need to do.

Josh Birk:
Right, right. Then tell me, and I think this is interest for both developers and admin, what do you use from the DevOps side as an example? For instance, I know the team behind the CumulusCI, they want to adopt admins as users. They’re looking for ways to make it more admin friendly. From a DevOps point of view, what are some of your favorites there?

Dan Appleman:
In terms as a developer? Remember, I’m primarily a developer so we’re not doing admin DevOps.

Josh Birk:
Gotcha.

Dan Appleman:
We’re an ISV partner.

Josh Birk:
Okay.

Dan Appleman:
Of course, we do things the way modern teams should do things. We track everything in JIRA. Everything is in the repository. When you make a commit, it gets pushed up to a Jenkins server that spins up scratch orgs, and runs all the unit tests, and yells if something’s broken. I’m not going to say we are the most sophisticated DevOps in the world, but we’re doing all the basics.

Josh Birk:
Got it. Got it. Nice. Then, how do you feel, because I think you’ve also got a course in Pluralsight on automation, how do you think automation is starting to impact both developers and, I mean, I think we know how it’s been impacting admins. Do you feel like the impact is growing on developers?

Dan Appleman:
Well, I don’t really have a course on automation, but I do talk a lot about the idea that admins and developers, we all live in the same metadata.

Josh Birk:
Got it. Okay.

Dan Appleman:
I should note, there are lots of automation courses on Pluralsight by other authors. I just want to note that for the record.

Josh Birk:
Cool.

Dan Appleman:
You can find some great stuff there.

Josh Birk:
Okay.

Dan Appleman:
One of the things that we’ll probably talk about a little bit later is how to create code that cooperates with automation. I think that’s becoming increasingly important. Of course, with Flow, and the enhancements of Flow, you have really interesting dynamic going on, where on one hand, Flow is able to legitimately eat into applications that previously you could only do with code. It has the power and the performance. Right?

Josh Birk:
Mm-hmm (affirmative).

Dan Appleman:
I want to stress that. Flow is not Process Builder. Process builder is evil. Flow is good so it’s legit. Here’s the challenge. The challenge is Flow’s also gotten more complicated. Right?

Josh Birk:
Yeah.

Dan Appleman:
The learning curve is deeper, and that’s going to leave some admins behind. That’s a tough place to be. There’s a fine line, there.

Josh Birk:
Yeah. I mean, it’s an interesting domain. First of all, I’m pretty certain Alex Edelstein’s ears just rang somewhere in the universe. Anyway, it’s an interesting domain because it keeps coming back. Thinking of Flow is like visual coding, which in a lot of ways makes it easier to construct these programmatic applications. They’re programmatic “without code.” It’s like as they get more complex, you kind of need that developer’s mindset in order to sort of navigate through it. I kind of feel like we’re getting back to the state where you almost need admins and developers working on the exact same Flow so that they’re achieving the right goals. Does that sound right?

Dan Appleman:
Not only that, but you’re able to build some really interesting solutions by combining the two. For example, we have in our main application, our response management package, we have an extensibility model where you can create plugins that basically receive events from our application. We recently added a capability for, basically, a plugin that would intercept our plugin events, and publish them as a platform event. These platform events then could be read by flows. Right?

Josh Birk:
Mm-hmm (affirmative).

Dan Appleman:
We’ve basically made it possible to create plugins for our application that instead of having to write them an Apex, you can effectively build them in Flow.

Josh Birk:
Got it. Got it.

Dan Appleman:
This is very new. I don’t know to what degree it’s going to catch on. Certainly, that provides a lot of ability for our customers to build functionality on top of our application without actually having to hire coders to do it.

Josh Birk:
That’s our show. Tune in next week, as we continue talking to Dan. We’ll talk more about Advanced Apex, more development stuff, find out his non-technical hobby, and generally, just have some fun. Thank you for listening. If you want to learn more about this show, head on over to developer.salesforce.com/podcast, where you can hear old episodes, see the show notes and find links to your favorite podcast service. Thanks again, everybody. I’ll talk to you next week.

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