Stories about Software


A Digest and Notes from the Road: Spearfish, SD

Hey, it’s been a while since I did a slow travel digest.  I think that’s because, until this spring, we did more fast travel than slow.  We spent time in Dubai, Thailand, the Bay Area, and midwest locations over the fall and winter months.  But those trips were 1-3 weeks in nature, rather than months-long.

But hey, we’re back at it.

So I’ll talk about my experience in Spearfish, South Dakota, where we spent a month.  If you’re just in it for the video content and picks, though, you can skip to the bottom.

Spearfish: The Black Hills Experience

Amanda and I tend to move around a lot.  But early March saw us in Michigan at our house, so when the world battened the hatches, we battened down along with it.  After all, our normal lifestyle is already fairly distanced from everyone, so in a lot of ways, minus the lack of mobility, nothing much changed for us.

But after two months of that, we grew pretty restless and decided to head somewhere more open/remote and less touched by the whole COVID situation.  The “somewhere” we picked was South Dakota because of a combination of the appeal of the Black Hills and its relatively laissez faire approach to lockdown restrictions.

And, man was it good to hit the road after two months of being stationary.

Cats on the road.

We headed to Spearfish, South Dakota, which was about 16 hours driving from our lake house.  Spearfish sits in the Black Hills of South Dakota and is maybe an hour and a half from Mt. Rushmore and very close to motorcycle Mecca, Sturgis.  It’s a town with probably around 10,000 people and was a fun mix of the rural and the surprisingly cosmopolitan.

Read More


The Freelancer’s Condition: Quagmire of the Owner-Operator

So far in this series of posts, I’ve written about two topics:

  1. How freelancers aren’t really business owners (yet) because they’re not reasoning about profit.
  2. A deep dive into the nature of profit, which I heuristically described at money that you could make while asleep.

I want to follow those up by closing a loop I’ve kind of left open.

Throughout those two posts, I talked about the freelancer simultaneously (and inadvertently) occupying two roles: owner and employee.  They excel as employees, who earn money via salary.  But given their zero-profit model, they do terribly as owners, who earn money via profit (or appreciation).

Today, I’d like to delve into the owner-operator concept in a lot more detail.

I’ve talked about how you can reason about a freelancer’s profitability (or lack thereof) by trying to backfill everything the freelancer does.  But if you’re a freelancer or an aspiring freelancer, this is precisely backward.  Why take action and then hope it makes sense, when you can figure out the sense before taking action?

Understanding the owner-operator dynamic will at least help you avoid blundering into a situation with a low ceiling, and, ideally, give you a sense of how to create a profitable business from the outset.

Owner-Operator: A More Appropriate Job Title Than You’d Think

When I first hung out my shingle to moonlight, a decade ago, I gave myself a new job title as the owner of my “consultancy.”  You guessed it.  Owner-operator.

Proud of this, I told my dad about it, and he skeptically pointed out that this made me sound like I drove and owned a truck.  He suggested that I change my title to “founder and principal,” which I did.

To this day, I’m not sure why I conflated that title with something that independent contractors called themselves.  But I do think that, in my corporate naivete, I stumbled into a pretty good term for what they are.

Someone that buys a truck and makes a living transporting freight is certainly an “owner-operator,” by convention.  But I’d argue that so, too, is the freelancer.  Both not only have businesses where the owner is the operator, but also where you’d be hard pressed to separate the roles.

But let’s forget about trucks and freelance app dev, and consider a different owner-operator setup.

Read More


Business Profit 101: A Primer for Freelance Software Developers

As I threatened in my last post, I’m starting something of a loosely collected series. Maybe I’ll even get organized and give them a WordPress category at some point.

If you missed the last post, it’s not exactly required reading, but it would help with context.  In that post, I explained that freelancers, however they describe themselves, aren’t business owners.  Not really.

And I went on to say that the primary distinction between business owners and freelancers is that the former reason about profit.  Freelancers simply plunder every last dime from their “businesses,” not understanding that this is salary, and thus a business cost, rather than profit.

But I didn’t dive too much into the nature of profit itself.

I would understand if you read that last post and said, “I get what you’re saying, but I’m not sure I grok.  Couldn’t I just arbitrarily say that my salary is 80% of what I bring in freelancing, and then 20% of it would be profit?  Problem solved, right?”

The answer is, “no, definitely not.” But I can understand if you don’t understand why that’s the answer.

In the most abstract sense, think of profit as money your business can make while you sleep (or, in general, while you don’t work). And you, as a freelancer literally selling your hours of labor, can’t make any money while you don’t work, 20% or any other percent.

But let’s clear things up in this post by examining a concretion.  I’m going to walk you through a very realistic app dev freelancing situation and talk through the ideas of cost, salary, and profit.  Hopefully that drives the point home.

Read More


Freelancers Aren’t (Yet) Business Owners

The idea for this post started as an idea for a tweet, and actually grew into an idea for a series.  (Or, perhaps, even a book, in a world where I can semi-retire for a while and have more time.)  But, lest I get too ambitious, let’s start with just a post.

And let’s start that post with the tweet that popped into my head.

“Freelancer” isn’t a career destination.  It’s an intermediate step along one of two career paths.

Path A: Employee -> Freelancer -> Employee

Path B: Employee -> Freelancer -> Business Owner

If you’re not consciously on path B, you’re accidentally on path A.

Here’s a graphical representation, if crude ASCII arrows aren’t your thing.

Now, the problem with this as a tweet is that it would have invited enough legitimate questions and discussions so as to make me break with my normal Twitter conversational pattern of “sporadic, at best.”  I can picture the objections/questions now:

  1. What, exactly, do you mean by “business owner?”
  2. That’s ridiculous, I’ve been freelancing for 20 years!
  3. What, exactly, do you mean by “consciously?”
  4.  Aren’t freelancers business owners by default and by definition?

And so on and so forth.

So, rather than try to sort all that out in a flurry of confusing Twitter threads, let me lay out my case here.  That way, I can tweet my tweet and then just reply to it with a link here, thus preserving “sporadic, at best.”

Read More


11 Realpolitik Career Tips for Junior Developers

If you’ve followed me for years (and you read the title), you’re probably thinking, “Erik, you hypocrite.”

But let’s not confuse everyone else with inside baseball just yet. There will be plenty of time to get into why I called them “junior developers” in spite of really disliking that term.

So give me the rope with which to hang myself, and stay tuned for my advice to those embarking on a programming career.

What This Post Is and Is Not

What I want to do here today is offer some tips. But if I just wrote a post called, “Tips for Junior Developers,” I’d be, by my non-scientific making up of a number, the 79,667th person to write a post with that title.

And those tips would include things like:

  • Be humble.
  • Keep a developer journal and write down your mistakes to learn from.
  • Read well-regarded books by prominent developers.
  • Learn communication skills

I’m sorry, I need to stop. No offense to people who have written these things (including probably me at times). But I’m boring myself to tears just typing out the strawman.

So I won’t write that post. I promise.

Instead, this post will have what readers of this blog and my book have come to think of as my personal spin on it, which generally ranges somewhere between hyper-cynical and coldly pragmatic, depending on your point of view.

If you’ve never read it, you might want to check out my definition of the corporate hierarchy, to understand what I mean when I describe people in organizations as pragmatists, idealists, and opportunists. That may prove helpful for perspective, since I’d characterize so-called “junior” developers (let’s say people with < 2 years industry experience) as idealists by definition.

Those formative 2 years will determine whether you remain an idealist, graduate to journeyman idealist, give up and become a pragmatist, or… well, let’s not worry about opportunists here.  The intersection of budding corporate opportunists and people looking for junior dev tips is probably the empty set.

Career-Savvy Tips for Junior Developers

If you’re embarking on a programming career, first of all, good for you.

Seriously. You’ve selected a path that will pay you handsomely and is, in my opinion, anyway, a lot of fun.  I always thought of professional programming as “people pay me to solve puzzles.”

As a so-called junior developer (or an aspiring one), you’ve come from one of two very broad paths:

  • Recent grad with a CS or related degree, looking for that first corporate job.
  • You have professional experience, but are making a career transition, perhaps with the aid of a bootcamp.

So you’re either standing outside the club, leaning against the velvet rope and peering eagerly at the movers and shakers within, or else the bouncer has just waved you in, and you’re telling yourself, “play it cool, play it cool!”

You’ve waited and worked for this moment. The club analogy trivializes it, because you don’t spend months or years waiting to get into the club.  (I mean, I don’t think so anyway — my days of going to anything called a “club” are so far in my rearview that I’d have to pull over for them to catch up.)

You’re grateful to have that first job, and to be welcomed into the society of real software developers.  I get it, I find your enthusiasm infectious, and I’m happy for you.

But don’t let this excitement take your perspective.  Because it will, and it does for most.

To understand what I mean, let’s get into the tips.

Read More