Jeffrey Sherman
jeffreysherman.bsky.social
Jeffrey Sherman
@jeffreysherman.bsky.social
Incremental ETL Patterns For SaaS Developers

Lessons from a world driven by the fear of being woken up at 3am to fix a process that must finish before 8am.

shermanonsoftware.com/2025/11/12/i...
November 12, 2025 at 7:05 PM
Pumping A Leaky Balloon - The Reality of SaaS Business Models

The SaaS Business Model is like pumping air into a balloon with a leak. Without a steady stream of new customers, the balloon deflates and the SaaS will go out of business.

shermanonsoftware.com/2025/10/13/p...
October 13, 2025 at 8:57 PM
The Software Engineer And The Mechanical Engineer: A Parable

Once upon a time a Software Engineer and a Mechanical Engineer needed to lift the leg of a table and slide a carpet underneath.

shermanonsoftware.com/2025/10/06/t...
October 6, 2025 at 3:34 PM
Your SaaS Has Scaling Bottlenecks - Do You Know Where?

Bottlenecks can prevent you from onboarding customers fast enough, make supporting your largest customers impossible, and even leave you saying no to giant deals.

shermanonsoftware.com/2025/07/07/y...
July 7, 2025 at 4:52 PM
Latency, Throughput, And Spherical Cows

shermanonsoftware.com/2025/06/30/l...

Would latency impact throughput if you make the streaming system more realistic?

Let’s deflate the cow and find out!
July 2, 2025 at 3:36 AM
Reducing Latency Won’t Increase Throughput Of Streaming Systems

A counter intuitive property of streaming systems is that latency has no long term impact on throughput.

shermanonsoftware.com/2025/06/23/r...
June 23, 2025 at 4:04 PM
Context Required For Static Vs System Optimizations

A static analyzer can go through code and find big-O type problems. A developer can go through and refactor the code to make it run more efficiently.

Neither of these tasks requires much context about the larger system.
May 12, 2025 at 10:00 PM
You Can’t Change Your Answers

Without showing your work.

shermanonsoftware.com/2025/05/05/y...
May 5, 2025 at 9:04 PM
Rewrite Anti-Patterns: The Writeback

The Writeback Anti-Pattern is when a new Source Of Truth has to write data back to the legacy Source Of Truth because consumers are still getting data from the legacy source.

shermanonsoftware.com/2025/04/28/r...
April 28, 2025 at 2:20 PM
The Strangler-Fig Pattern Has An Implementation Order; Outputs First

It sounds easy: wrap the existing code, and replace the references over time. There’s an order to wrapping code: The outputs have to go before the inputs.

shermanonsoftware.com/2025/04/21/t...
April 21, 2025 at 6:48 PM
SaaS Code Does Not Have a Final State

Until you delete it, you can never look at a piece of code and say that won’t be changed again.

shermanonsoftware.com/2025/03/31/s...
April 1, 2025 at 3:22 AM
Sherman’s Law of Doomed Software Projects:

Software projects with the word “Next” or “New” in the name are doomed.

shermanonsoftware.com/2025/03/26/s...
March 26, 2025 at 2:53 PM
New Is Temporary

The only ones who know, or care, about “new”, or “old” are the people who built and maintain the code.

shermanonsoftware.com/2025/03/24/n...
March 25, 2025 at 2:26 AM
Rewrites Have Two Teams - Team Rewrite and Team Maintenance. Join Team Maintenance

Why would anyone join Team Maintenance?

Because Team Maintenance is both a flight to safety and an opportunity.

shermanonsoftware.com/2025/03/19/r...
March 19, 2025 at 6:56 PM
Messaging Patterns: What They Are, When To Use Them

Which pattern should you use?

There are 2 main considerations:
1. Are your messages Predefined or Ad Hoc?
2. Are your messages Ignorable or is Processing Expected?

shermanonsoftware.com/2025/03/17/m...
March 17, 2025 at 11:03 PM
Refactoring Imports From Row At A Time To Column At A Time For Performance

Changing strategies to favor fewer, larger, operations can reduce the number of operations by 80-90% and increase real world performance by 50% or more.

shermanonsoftware.com/2025/03/06/r...
March 6, 2025 at 7:28 PM
The Difference Between Rewriting And Iteratively Replacing Software

Since the result is the same, it can be difficult to understand why Iterative Replacement, or TheeSeeShipping, is so much more effective and less risky.

shermanonsoftware.com/2025/03/03/t...
March 3, 2025 at 10:55 PM
Rewrite Case Study - The Three Musketeers Don’t Deliver

shermanonsoftware.com/2025/02/26/c...
February 26, 2025 at 6:25 PM
Rewrite Case Study - The Three Musketeers Don’t Deliver
shermanonsoftware.com/2025/02/26/c...
February 26, 2025 at 6:22 PM
State, Persistence, And Cold Restarts

shermanonsoftware.com/2025/02/19/s...
February 20, 2025 at 3:54 AM
The Technical Problems You Should Solve At A Midsize SaaS

shermanonsoftware.com/2025/02/17/t...
February 17, 2025 at 10:18 PM
How To Say No As A Staff Engineer

When I say “no”, I have to explain why, offer alternatives, and make myself available to work through emergent issues.

shermanonsoftware.com/2025/02/12/h...
February 12, 2025 at 2:43 PM
Iteration Is Not A Speed, It’s A Journey

shermanonsoftware.com/2025/02/10/i...
February 10, 2025 at 6:38 PM
Things I Learned By Helping To Program A Clavinet Clone

Over the past few months I have helped create a Clavinet Clone for musical keyboards.

I was surprised by some of the lesions I learned!

shermanonsoftware.com/2025/02/05/t...
February 5, 2025 at 2:31 PM
You’ve Built A Bad Implementation Of Other Software, Now What?

Whether you built, or are responsible for, a bad implementation of other software, what do you do now? It depends on which of 3 buckets the implementation falls into.

shermanonsoftware.com/2025/02/03/y...
February 3, 2025 at 7:49 PM