In computer science, CAP theorem states that in a distributed system, we can only guarantee two out of the three: Consistency, Availability, and Partition tolerance.
In making career decisions, I developed a CAP theorem of my own.
C: Compensation
Getting paid our fair market value. It is important to know that value is, and how much we bring to the table. Don't undersell ourselves, don't let that knowledge gap work in someone else's favor.
A: Advancement
Besides a paycheck, a job should provide opportunity for advancement. Advancement takes different forms and can mean different depending on who and when you ask. The important thing is we should be the ones to define it, not our boss. Things cleary don't work if you want to improve your wielding skills while all you get from the job is plumbing. Don't let others delude you into rationalizing what is not working for you.
P: People factor
These are the people we spend 40 hours a week with; they are our professional associates. Ideally we should enjoy working with them, learn from them, maybe even be friends; at the very least, the professional interactions between you should be tolerable to you. A team you dread facing on Monday morning will poison everything else. No amount of compensation or growth opportunity makes up for it indefinitely.
All three factors are dynamic, and they inevitably change through our tenure. Some changes are outside of our control: a bad economy, personnel rotation, company re-org. Others originate from changes in ourselves: we want to improve a different skill, we want to start a family. In the end, it does not matter what or who initiate the changes, we are paintings being drawn within a shifting frame, it only matters when one no longer fits the other.
I've had jobs once had all three. I've had jobs where all three became absent in a span of weeks. But more often than not, I'm happy when my job can reliably deliver two out of the three. When it doesn't, my gut always tells me to start looking.
March 20, 2026