Live like an IIFE, not an if/else chain
I love this framing:
Live like an IIFE, not an if/else chain.
It sounds a little ridiculous at first, but the more I think about it, the more it feels true.
What an if/else life looks like
if (conditionsArePerfect) {
startTheProject()
} else if (IFeelReady) {
beginExercising()
} else if (IHaveEnoughMoney) {
takeTheTrip()
} else {
wait()
}
This is how a lot of us live.
We keep evaluating prerequisites. We defer action. We outsource the start signal to external circumstances. The code never runs unless everything lines up, and everything almost never lines up.
So we wait.
We wait until the timing is better. Until we are more confident. Until the bank account looks different. Until the plan is clearer. Until someone tells us it is okay to begin.
An if/else life is a waiting architecture.
What an IIFE life looks like
(() => {
// Just begin. Right now. With what's here.
buildTheThing()
loveThePeople()
doTheWork()
})()
That is the move.
You invoke yourself.
An IIFE does not wait to be called. It does not sit in a module hoping somebody imports it later. It executes the moment it is defined. The invocation is baked in.
There is something deeply helpful about that as a life metaphor.
The deeper principles
Self-invocation is self-agency
You do not need permission, a perfect moment, or an external trigger.
You are both the function and the call.
Scope is a feature, not a bug
IIFEs create their own scope. They do not pollute the global namespace.
Living this way means owning your context: your choices, your defaults, your environment. You are not at the mercy of whatever variables are floating around in the global scope, whether that is other people's opinions, cultural defaults, or inherited assumptions you never meant to keep.
Parameters can be passed in, but defaults exist
((name = 'Patrick') => {
console.log(`Running as ${name}`)
})()
You can accept input from the world, but you can also have sensible defaults.
You do not need the world to hand you an identity before you start running.
No return value required
An IIFE can return something, but it does not have to.
Some of the best execution in life is just side effects: showing up, making something, being present, helping somebody, sending the message, taking the walk, starting before you feel fully formed.
Not everything meaningful needs to resolve to a tidy output.
The if/else trap
The if/else life is fundamentally reactive.
It only executes when conditions are met, which means you have handed control of your own invocation to the environment. You become a function that never gets called because the caller never comes.
That is the trap.
You can spend years becoming more prepared without ever becoming more alive.
The one-line version
An if/else chain asks, "When should I start?"
An IIFE already started.
The () at the end is not a small thing. It is the whole thing.
Put it at the end of yourself and go.
How to get in touch?
DM me @pjkellar on Twitter or email me
Patrick ✌️
