December 2, 2018

JF1552: Think Like A Programmer For A More Efficient & Effective Investing Business #SkillSetSunday with Tim Bornholdt

Tim and his company specialize in creating great apps for companies. He’s also made a connection for us as real estate investors, how thinking like a programmer can help us a scale a business faster. He can even build an app to help us with that! If you enjoyed today’s episode remember to subscribe in iTunes and leave us a review!

Best Ever Tweet:


Tim Bornholdt Real Estate Background:

  • Entrepreneur, software developer, podcaster, and the founder of The Jed Mahonis Group
  • Specializes in helping businesses strategize and develop their own custom mobile apps
  • They have worked on 75 apps since 2012, Great Clips is one of their bigger clients, millions of people use the Great Clips app per month
  • Based in Minneapolis, MN
  • Say hi to him at

Get more real estate investing tips every week by subscribing for our newsletter at

Best Ever Listeners:

Do you need debt, equity, or a loan guarantor for your deals?

Eastern Union Funding and Arbor Realty Trust are the companies to talk to, specifically Marc Belsky.

I have used him for both agency debt, help with the equity raise, and my consulting clients have successfully closed deals with Marc’s help. See how Marc can help you by calling him at 212-897-9875 or emailing him


Joe Fairless: Best Ever listeners, how are you doing? Welcome to the best real estate investing advice ever show. I’m Joe Fairless, and this is the world’s longest-running daily real estate investing podcast. We only talk about the best advice ever, we don’t get into any of that fluffy stuff.

First off, I hope you’re having a best ever weekend. Because today is Sunday, we’ve got a special segment called Skillset Sunday. You’re going to hone or acquire a skill that perhaps you didn’t have before, or if you did, you’ll hone it, so you’ll get even better at it. We’re gonna be talking today about how to think like a programmer as it relates to building a real estate business, so that we can automate it more and become more efficient, and ultimately more effective, and scale.

With us today to talk about that is Tim Bornholdt. How are you doing, Tim?

Tim Bornholdt: I’m great, Joe. How are you doing?

Joe Fairless: I am doing well, and nice to have you on the show. A little bit about Tim – he is an entrepreneur, software developer, podcaster, and he’s the founder of The Jed Mahonis Group. He specializes in helping businesses strategize and develop their own custom mobile apps. They’ve worked on 75 apps since 2012. Great Clips is one of their bigger clients. Millions of people use the Great Clips app every month. Based in Minneapolis, Minnesota. With that being said, Tim, do you wanna give the Best Ever listeners a little bit more about your background and your current focus?

Tim Bornholdt: Yeah, I’ve been building websites since I was in first grade, so it’s been about 20 years now, and I focused mostly nowadays on doing native mobile apps. We work with businesses, startups, all kinds of companies to find processes that can be made more efficient by turning them into a mobile app, and then we help them get there. That’s really what we focus on here at The Jed Mahonis Group.

Joe Fairless: Cool. And as real estate investors, we’re looking to make as much money as possible in the least amount of time, as with perhaps all entrepreneurs, I would think, and add a whole lot of value to the world while we do it, so what are some ways, or how can we go about thinking like a programmer? Or, first off, let’s do this – why should we think like a programmer as it relates to building our business?

Tim Bornholdt: Well, thinking like a programmer is really just making the world seem like it’s made up of systems. If you’re not thinking like a programmer, you’re kind of just taking the day as it comes to you, and you’re just rolling with the punches, and you’re not really thinking systematically and doing things repeatable, which if you’re trying to build a scalable business, you need to have repeatable steps that you aren’t the one in the driver’s seat, having to do them all the time. If you break your business down into more simple terms, at least in ways that can be automated or that somebody else can do, that’s really the key to scaling any business, especially in the real estate space.

Joe Fairless: For example…

Tim Bornholdt: Pardon?

Joe Fairless: Can you give examples, build that out a little bit?

Tim Bornholdt: Yeah, if you want, I can also just go right into what that might look like, or how a programmer thinks…

Joe Fairless: Yes.

Tim Bornholdt: Generally, thinking like a programmer, how we would do that is every program starts with a problem… So defining your problem and really making sure you understand what you’re dealing with. Then two, breaking that problem down into smaller problems, because a lot of times, when you come at this, you think of “Well, I wanna get more sales”, or something like that. Well, that’s a huge problem and not something you can really easily tackle in and of itself, but if you break it down into smaller chunks, then you can really go to the third step, which is to fix those small problems one at a time, and really just focus on a small part of the entire system. As you’re making those smaller fixes, then you can assemble them in a way that makes sense, so you’re putting them in a repeatable order, and then finally, you’re making improvements to those fixes as you go on. That’s what we in development terms call refactoring.

So if you can apply those five steps to any process in your business, you’ll start to think like a programmer and build out systems that can be automated, and therefore scale your business.

Joe Fairless: Have you come across a challenge or a problem where you’re starting to fix the small problems one by one, but because you’re focusing on small problems one by one and not addressing a more important, larger problem, that the smaller problems don’t go away?

Tim Bornholdt: Yeah, I think that’s somewhat common. When you really dig into something, you might start picking away at a really small problem, but then that just reveals that there’s a whole other side set of problems that you need to address. It happens every day. I’m sure it happens even if you’re not programming. It’s like, you go and you open up your computer and you’re like, “Alright, I need to get these three things done today”, and by the time you get to the end of the day, you’re closing 800 browser tabs and you realize that you never even started doing the one thing that you wanted to fix in the first place. It happens all the time in this space… So really being able to adapt and just continually apply that same methodology of fix one small problem at a time, and then if you come across another problem, then yeah, go and fix it and continue to go down that rabbit hole until you can come all the way back up to the original problem, and kind of go from there.

Joe Fairless: When you define the problem – and we’ll go into each of these five steps – step number one, I’m sure there are poor definitions and good definitions, and just acceptable definitions of a problem, where some lack specificity, and others are more specific and quantifiable… So what is an example of a high-quality definition of a problem?

Tim Bornholdt: Well, I think one common way I can relate to programming specifically – which applies to the greater course of what we’re talking about here, but just as an example… So we do quality assurance testing on apps all the time, and part of that is you have to go in and you have to find a way to break the app; that’s what testing it is all about. And when you’re going through and breaking it, a lot of times people will send reports to us that say “The app is broken” and that’s it. Now, that’s a problem, obviously. The problem is that the app doesn’t work, but the problem is so vague there is no way that you can get to the second part of this process by breaking it into smaller problems if you can’t even tell me what the big problem is overall. So really, when you define the problem, you need to be specific about what you’re trying to fix.

I think a good example would be if I can’t log into an app, for example, that’s still even vague; it’s like “I can’t log in” – okay, are you using an e-mail address, or are you logging in with Facebook? “Okay, I’m using an e-mail address.” Well, is your e-mail address spelled correctly…? You can go down the rabbit hole until you get to the point where it’s like “Oh, okay, well this is the specific problem and now I can take steps to fix that problem.”

Joe Fairless: Makes sense. Okay. So once we effectively define that problem, then the next step is to break down the problem into smaller ones. So let’s just use — the problem is I need to rent my house that I just purchased, so I need to find a quality tenant… So then breaking it down into smaller problems makes us think about the process that we need to have in place in order to have an actual tenant in the house, right?

Tim Bornholdt: Exactly. And for that specific example, you need to find tenants to fill a vacancy – well, you’re gonna need to first of all figure out “Well, I need to get a list of tenants.” Before you can even start finding quality tenants, you need to have some tenants, so you need to start researching places where tenants hang out, where are people looking for houses? Are they looking on Craigslist, are they looking on Facebook? Where are you going to be able to collect all this information? That leads you to a smaller problem of “Well, I need to create that list”, and then you kind of continue to drill down from there, of “Okay, maybe Craigslist is the right way to go. Where am I posting it? How are my posts formatted?” You can continue to go down the rabbit hole there, of the big problem is solved by continuing to go deeper into it and fixing those smaller problems, until by the end of it now you’ve got your problem solved by the end of the steps.

Joe Fairless: And there certainly could be a rabbit hole, because you could optimize every single sub-step of that process, right?

Tim Bornholdt: Welcome to my madness, yes. [laughter] Especially in programming, you definitely fall into those rabbit holes… And part of being a good programmer and going through these steps is knowing when you back out, because you don’t necessarily wanna spend all of your time over-optimizing for problems. At the end of the day, step five is refactoring and making optimizations at that point. Really what you wanna do is get some solution down, so that you’re able to then come back at it later and continue to improve and refactor your solution, so that it is the optimal case for your specific need.

Joe Fairless: And then the third step is fix the small problems one at a time, and then the fourth is — I believe you said “assemble them and order them”? Did I hear that right?

Tim Bornholdt: Yes, assemble them in a way that makes sense. For instance, in this case, if you’re talking about how do you fill a vacancy in your property – well, it wouldn’t make sense to get your contract signed before you have a list of tenants to go through, so you need to make sure that you can fix problems out of order, but by the time you are solving that big problem, you need to make sure that you’ve got all of your steps in a row, in the right order, that makes sense for whatever problem you’re trying to solve.

Joe Fairless: And then the last step is refactoring. Will you elaborate on refactoring?

Tim Bornholdt: Absolutely. Refactoring is really where you have a solution down that works, and it works fine, but maybe it’s not the most efficient way you can do it, or maybe it’s not the cleanest way that you could possibly do it… So refactoring is taking your time to think through — you know a solution that works, but what if you tweak it a little bit and do it this way… Does that improve the outcome, or does that make it worse? Going through and refactoring is a really big, common practice in development, and again, going back to the instance of filling vacancies in your properties, maybe you find a good process here that you go through everything and you’ve got a quality list of tenants that are possibilities. Maybe as you’re refactoring, you’re thinking “Well, I’m getting better leads from this source than I am from this other source”, or maybe you have a list of places that you’ve tried before and they failed, or you get poor tenants from this place or the other… Refactoring would be looking at it and saying “Well, what if I tried using this third source?” or “What if I just changed the copy that I’m using on Craigslist, and maybe I’ll get better tenants that way?” That’s really what refactoring is.

Joe Fairless: What’s the difference between that and fixing each of the problems and the sub-problems?

Tim Bornholdt: When you’re going through the first time, it’s very rare that the first solution you’ll come up with is perfect… Especially as the problem gets bigger and bigger, you’re never gonna knock it out of the park on the first time. I mean, if you are, then kudos… But typically, the refactoring part is necessary, because as business grows and as your business scales, things that worked well when you fixed the problem originally, when you come back to them five years later, you might think “Why are we doing it this way?” and that’s what refactoring is – being able to go back in and make changes to problems that you assumed were already solved, but you need to think of a different way, or you’ve come up with a different edge case that you need to account for. That’s really the difference between fixing the problem right then and there, and fixing it a little bit down the road.

Joe Fairless: Anything else as it relates to these five steps for how to think like a programmer and apply it to real estate that we haven’t talked about, that you think we should?

Tim Bornholdt: No, I think that pretty much nails it. Thinking like a programmer, at the end of the day, is just having that set of resources and a repeatable process in your own mind that you can apply to so many different areas of your business… So I would just encourage our listeners, if you’re not gonna think exactly like a programmer — I know sometimes I can drive my wife mad, because I think like a programmer all the time… So it’s just having another tool in your toolchest, that you’re able to take and apply to your own business to make things better and have a systematic way of looking at the world.

Joe Fairless: Yeah, it’s a necessary tool to have in our toolbag, because as you said, having  a systematic way to look at the world and to approach problems… It’s tough to argue with the logic that you just laid out for these five steps to approaching challenges, because as a programmer, you’re very efficient and effective with what you do, because you approach it very logically… And fortunately for us, you’ve laid out the five-step process for us to apply that same logic to our challenges.

Tim, how can the Best Ever listeners learn more about what you’ve got going on?

Tim Bornholdt: Well, if you ever wanna talk more about this or learn more about mobile apps, you can visit our company’s website. It’s Or it’s a little bit faster if you go to, and there you can learn about all the apps we’ve built, and we can talk apps all day. That’s what I do all day, every day, and I love it.

Joe Fairless: Tim, thanks again for being on the show. I hope you have a best ever weekend, and we’ll talk to you soon.

Tim Bornholdt: You too. Thanks, Joe.

Share this:  

    Get More CRE Investing Tips Right to Your Inbox

    Get exclusive commercial real estate investing tips from industry experts, tailored for you CRE news, the latest videos, and more - right to your inbox weekly.