> ## Content Index
> Fetch the complete content index at: https://nolongerset.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Eliminating Friction
- URL: https://nolongerset.com/eliminating-friction/
- Published: 2021-10-20T03:45:20.000Z
- Updated: 2026-05-08T13:01:47.000Z
- Description: The key to becoming a better developer is to make it so The Right Way is also The Easy Way.
- Author: Mike Wolfe
- Tags: Commentary, #Import 2026-05-20 02:59

Want to write better code? Eliminate friction around best practices.

---

### Best Practice: Error Logging

**DON'T** write custom error logging on an as-needed basis.

**DO** use a global error handler and [vbWatchdog](https://nolongerset.com/error-handling-evolution/) to centralize error logging.

---

### Best Practice: Throwing Custom Errors

**DON'T** maintain some huge master list of custom error numbers.

**DO** automatically generate [unique custom error numbers](https://nolongerset.com/throwing-errors-in-vba/) on the fly.

---

### Best Practice: Version Control

**DON'T** manually export and import VBA code to text files.

**DO** use a [script](https://nolongerset.com/putting-it-all-together/) or [add-in](https://nolongerset.com/instant-version-control/) to convert all Access objects to text files.

---

### Best Practice: Don't Repeat Yourself

**DON'T** copy and paste code snippets from one application to another.

**DO** maintain a [library of code](https://nolongerset.com/building-your-library/) that *never breaks backward compatibility.*

---

### Best Practice: Professional Installers

**DON'T** use a wizard-based product with lots of manual steps.

**DO** use a text/script-based installer creator like [Inno Setup](https://nolongerset.com/installing-and-updating-access-applications/).

---

## Investing in the Future

What do all of these things have in common?

In almost all cases, there is a relatively significant upfront investment of time to accomplish the task for the first time. For example, it probably took me a dozen or more hours to create my first installer in Inno Setup. Now, though, I can create an *extremely professional* installer for a new application in under five minutes.

A professional installer in less than five minutes? Now *that* is low-friction.

Before I switched to using Inno Setup, I used a wizard-based Microsoft product. It was impossible to recreate installers. Every installer was a little different than the last one, and there was no easy way to tell how one installer was different from another (do I need *Setup-v3.exe* or *Setup-Final.exe* or *Setup-Final-New.exe*?).

The Microsoft installer was faster **the first time**. 

But Inno Setup was faster **over time**.

## Moral of the Story

If you want to do things The Right Way™, then invest time upfront to develop a low-friction approach that you can use forever. 

**Make it so The Right Way is also The Easy Way.**

---

### Referenced articles

[Error Handling EvolutionHow you handle errors says a lot about you as a programmer. Most people evolve with experience in how they handle errors. From the most naïve to the most advanced, here is what that evolution looks like.![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2020/09/evolution-4107273_1920.jpg)](https://nolongerset.com/error-handling-evolution/)

[Throwing Errors in VBAIntroducing a frictionless alternative to Err.Raise.![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2020/10/juggler-2329843_1920.jpg)](https://nolongerset.com/throwing-errors-in-vba/)

[Putting It All TogetherI expanded on the original decompose.vbs script. The code below is the culmination of more than 50 individual changes and tweaks over 10+ years.![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2020/09/puzzle-210785_1920.jpg)](https://nolongerset.com/putting-it-all-together/)

[A Quick, Free Way to Try Version Control with Microsoft AccessCurious about getting started with version control in Microsoft Access, but don’t want to commit a lot of time or money? This could be just the solution for you.![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/07/Instant-Version-Control-1-.jpg)](https://nolongerset.com/instant-version-control/)

[Building Your LibraryThirteen years ago, I chose to maintain a folder of text files rather than a single Access database library. I’ve never once regretted that decision.![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2020/09/george-peabody-bucherei-1629308_1920.jpg)](https://nolongerset.com/building-your-library/)

[Installing and Updating Access ApplicationsWant to be a professional Access developer? Then you can’t ask your clients to copy and paste .accdb files to their computers. What do you do instead?![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/01/hallway-802068_1920.jpg)](https://nolongerset.com/installing-and-updating-access-applications/)

*Image by [Marie Sjödin](https://pixabay.com/users/marsjo-1176548/?utm%5Fsource=link-attribution&utm%5Fmedium=referral&utm%5Fcampaign=image&utm%5Fcontent=4404038) from [Pixabay](https://pixabay.com/?utm%5Fsource=link-attribution&utm%5Fmedium=referral&utm%5Fcampaign=image&utm%5Fcontent=4404038)*