Stories about Software


Gathering the Confidence to Leave Your Job

It’s Thursday night, and I’m holed up in a hotel in Lansing, Michigan.  I figure there’s never been a better time to answer a reader question.  This one is about how to summon the confidence to leave your job.

The question is actually a rather lengthy one, and here is a redacted/obfuscated version of it (removing anything that could be identifying).

I have had my developer position for several years. I’ve been promoted, but I’m still not a senior developer. I have become extremely “silo-ed” in my skills, because those are the types of projects I’ve been assigned.  I read your statement that salaried employment is a bad economical decision for developers. The developer should be making $50 or maybe a bit more at $60. I get paid {a good bit less} an hour for 40 hours a week of expected work.  I feel the need to grow my abilities.

I watched your video on Pluralsight on how to propose practices. My manager bought into some,  but most of my coworkers are ignoring the new stuff.  My place of employment fires developers once they are called as a references for checking if they ever worked there.

I need a goal, something I can achieve to give me confidence to start pursuing other options. Something that gets me into a situation where people seek me for relevant development.

There are actually several questions and issues here to unpack, so I’ll tackle them in order of complexity.

Pay is Relative

First of all, when I talk about developers making 50 per hour/100K or 60 per hour/120K, I’m mainly catering to myself and ease of math.  100K is a nice, round figure, and 120K makes monthly finace (10K) easy to calculate.  These figures were slightly high in the Chicago-land area as of 2+ years ago, which was when I was last seriously hiring and evaluating pay there.

But, beyond that, pay varies a lot by geographic location, industry, filing status (nonprofit, for profit), etc.  If you salaried a developer working in San Francisco at 150K per year, he would probably need to move into a homeless shelter.  (I kid, but only slightly).  Pay that same wage to someone in central Kentucky and “should we install a second hot tub on the master bedroom deck” becomes a topic of debate around the marble dinner table.

All that being said, your wage was fairly low for a developer anywhere of your experience.  But don’t base your assessment of how low on my blog and what I know (I don’t pay much attention these days).  Base instead off of researching in your region.

We’ll Fire You for Looking…

Okay, this is where I offer the IANAL (I am not a lawyer) caveat.  This is based on my experience doing management consulting and working as a manager, much of which happened in at will states (this can vary by state and certainly by country).

If you’re a company, terminating employees is like playing Minesweeper, except instead of bombs, there are lawsuits.  You’re clicking along gleefully when suddenly, one day, BLAMMO!  Wrongful termination!  So you learn your lesson and you start looking at all of those numbers really carefully and insulating yourself against potential problems.

Minesweeper Read More


So You Want Some Passive Income

Today I’m going to answer a reader question about passive income.  This arose out of an actual conversation, so I can’t post a verbatim quote here.  But it’s simple enough to paraphrase.

Do you mind telling me about some of the ways that you earn passive income?

Not at all.

It’s not something I talk about a whole ton on this blog, but income models are something I feel fairly strongly about.  I actually think that one of the weirder things about the modern, knowledge economy is that we assign monetary value to what is, essentially, “hours toiled,” which puts knowledge work on the same footing as “guy dressed like a giant chicken, holding a spinning arrow sign next to the road.”  You show up somewhere and get money for attendance, regardless of outcome.

Oh, sure, if you’re embroiled in enough bad outcomes, you’re eventually sacked, but generally speaking, your pay is decoupled from value that you deliver, unless you’re in the odd incentivized role, such as a sales person.  Show up hungover and stare at your screen for a day?  $400.  Show up and invent Javascript in a day?  $400.  (If you’re interested in a more in-depth treatment of this subject, I talk at length about the divorce between value and labor in corporations in my upcoming book, Developer Hegemony)


Apart from the problem that hours worked and value delivered are so unrelated as to often be orthogonal, there is another, subtler problem with this paradigm.  Hourly labor creates a tight coupling between time spent and earning power; you’re in a constant state of decision between whether you’re providing for yourself or whether you’re doing anything else.  Doing both at the same time is generally called “misappropriation of company time.”

Hourly comp is ubiquitous to the point of seeming inevitable.  But it’s really and surprisingly not.  In this post, I’m going to explore a few pretty achievable ways of earning income that is decoupled from time.  In this sense, it is passive.  Last Saturday, I was sitting at a beachside bar, reading, when I got a notification on my phone informing me that I’d just earned $300 that day.  The only labor I performed that day was a bike ride up and down the beach.  So, it is possible.  And, it’s possible for you — not just me.

Read More


Chess TDD 59: King (Not) Moving into Check

This episode was relatively short and sweet.  Things actually went well, which is surprising to me somehow, particularly given the length of time between episodes.  In this episode I used previously implemented code to stop the king from being able to move into check.  I’m not positive, but off the top, this might be the last move consideration to implement.  I think my remaining cards are about testing activities and design considerations.  (Though, famous last words)

What I accomplish in this clip:

  • Disallow king from moving into check.
  • Clean a bit of cruft out of an old unit test class.

Here are some lessons to take away:

  • Tech debt can happen even in a code base well covered by tests.  It manifests itself in a variety of ways, not the least of which is making it harder than it should  be to get your bearings.  That’s on display a bit now in some of these episodes (though, I’d argue there’s no crippling debt, you can still see the effect)
  • If you see commented out code, there’s only one thing to do with it, in my opinion: delete it without a second thought.  I mean, it’s not doing any good.  If you uncomment it and it even compiles, then… good?  Do you then leave it in, even though it’s dead?  Do you, for some reason, try to use it?  I mean, what good comes from it?  And, if you’re inclined to leave it, why do that?  Isn’t that what source control is for?
  • Things like what to name stuff and when to extract constants are no exact science.  Bounce the question off of others and poll for opinions.  I suggest making it a practice not to be too uptight about such things, or programming collaboratively will wind up being a high-stress, neurotic endeavor.
  • When you get to the end of a complex chain of business rules applying to one part of the application, it may be the case that “the simplest thing that could work to get the tests all green” is actually rather complex.  This is (1) possibly unavoidable and/or (2) possibly a smell that you need to break the business logic apart.  In my case here, I’d say a little from each column.  The rules of chess are fairly complex, but it’s no secret that we’re carrying around some of the aforementioned tech debt here.


Making the Most of Grad School for Programmers

Another week, another reader question!  I feel pretty good about mostly sticking to this micro-commitment I made a while back.  Today’s question is from a non-US reader planning to pursue a master’s degree in the US.  Here’s the question.

I will be pursuing a 2 year masters in US. I will be using the time to build a solid profile and pursue better opportunities and it would be great to see an article about devs going back to college and how they must use the time and opportunity.

This is actually a subject near and dear to my heart.  I earned a master’s degree in computer science, myself, working a full time job and getting the degree at night.  During that time, I worked on interesting projects for school and got quite used to writing whitepapers and debating academic points.  This blog actually started as a way to fill my time after graduation — I figured I’d just keep going on writing about topics related to software.

Anyway, I really like this question.  It is suggestive of someone being deliberate about their career and a degree.  I must confess that I kind of just went back to school with the idea that I fancied myself a person that should be more educated.  I thought it likely I’d also go get a PhD one day because education.  If I could go back in time, I’d approach the subject more like this reader.

I say this because it’s not particularly clear that earning a MS degree is, in and of itself, a path to money.  There are some employers (especially the ones that do tuition reimbursement) that may confer a promotion upon completion of the degree, but I think this is becoming rarer.  And, frankly, when I’m helping organizations hire or handle staff, a graduate degree doesn’t count for a whole lot these days in determining pay bands, particularly once people have a decent number of years of experience.

The question then becomes, if not salary, then what?  And, is it worth doing?

Well, for worth, I really can’t speak to that.  People may have all manner of different motivations, from vanity (e.g. my motivation) to logistics (e.g. it’s a way to come to the US and get a foot in the door).  But what I can speak to is how to make the most out of your time in school.  And I’ll do that here.


Read More


The Trouble with Career Sites

Last week featured some unexpected alterations (read: extensions) to my travel plans, and this week featured me playing a bit of catch up.  So, Monday featured no post at all, and Wednesday was a cross post.  If I do one thing this week, it’ll be to remain true to my attempts to regularly answer reader questions.  Here’s the question in question.

You mentioned in your “Avoiding the Dreaded Experience Tuples” post that there are better ways than monster.com to look for jobs…

Do you group the other common jobs sites with monster (i.e. dice, muse, hired, indeed, stackoverflow careers)?

Or is monster just bad?

First of all, an advanced caveat.  I am not familiar with muse or indeed, so I I’ll skip them and speak to what I know.  The short answer to the question is “I mostly group these sites together, and I think that using any of them to look for jobs is the Greyhound Bus of finding jobs.”  But, not all Greyhound Bus rides are equal — on some a drunk hobo throws up in your lap, and on some the drunk hobo just falls asleep on your shoulder.  And, with one of the sites here, I’d say you’re not really even riding a bus.  Let me do a bit of forced ranking.


Read More