Stories about Software


Salary Transparency as the Fault in Our Stars

A few years ago, Hollywood produced a movie that I didn’t see and still haven’t seen, entitled The Fault in Our Stars.  I assume this movie’s title riffs on a quote from Shakespeare’s Julius Caesar.  And it is that quote to which I refer as a segue to talking about salary transparency.

The fault, dear Brutus, is not in our stars,
But in ourselves, that we are underlings.

I read Julius Caesar in high school, but if I dust off my literary dilettante credentials, I kind of remember what this meant.  Cassius, the speaker, was telling Brutus, his eventual co-conspirator that fate/the divine wasn’t installing Caesar as a monarch.  Instead, they were, by acting as underlings.  Cassius was saying, “God isn’t doing this — we are, with our inaction.”

And, naturally, this relates to the idea of salary transparency.

Salary Transparency as a Radical Workplace Idea

If you’ve never heard of salary transparency, that’s understandable, particularly if you live in the US.  Ever gone out to dinner with friends and asked to compare salaries when arguing over the check?  No, of course not.  Telling other people what you earn is considered gauche.

If this is true in social situations, it’s doubly true in the workplace.  You don’t wander over to Doris’s cube plop yourself down and say, “so, whaddya make per year?”  This is really gauche, and you could get in trouble.  As I describe at length in my book, Developer Hegemony, pyramid-shaped companies have a natural and rational incentive to hide this information.  In fact, so strong is this policy that they’ll create company policy of questionable legality.

The reasoning here is simple enough.  When negotiating, the less information your opponent has, the better.  If, at salary negotiation time, you know that everyone else in your role earns at least $90K per year, you’re going to hold pretty firm at $90K.  If you have no idea, you might lose your nerve and accept a job for $80K instead.

Now, you might object to me categorizing your employer as your opponent.  But you shouldn’t.  Salary negotiation is, ipso facto, a zero sum game.

But what if your employer didn’t hide this information?  What if your employer made all salary information publicly available the way sports teams and non-profits do?

Read More


What Do I think of “Full Stack” Development and the DevOps Movement?

Once again, I’m doing reader question Monday on a Tuesday.  I have no good excuses this time, either.  We arrived last week in San Diego, which is beautiful.  So, I’ll just flat out admit that I spent the weekend strolling beaches, eating lobster tacos, drinking craft beers, looking up at the stars and just generally enjoying life in a way that involved no writing of blog posts.  I regret nothing.

So let’s to reader question Monday on a Tuesday.  This is actually a question that just came in today as I was gearing up to write about TDD and remote teams.  It caught my attention, so I’ll give about the fastest turnaround time I’ve ever done on a question.

I recently stumbled upon this article: https://jeffknupp.com/blog/2014/04/15/how-devops-is-killing-the-developer/

Which seems to lump Full-Stack dev in with DevOps, and discards DevOps, on the premise that the full-stack dev is good-for-the-org-bad-for-the-dev. I know you’ve weighed in against the full-stack dev with preference for specialization. I wonder if you believe this also means DevOps is DOE, or if there’s still room for DevOps in your mind (or perhaps more broadly speaking, for startup-like, feature-teams so often found in Agile/Scrum orgs)?

If you don’t like DevOps, what do you recommend instead to manage the entire release automation process, and everything else it entails?

Alright.  There’s a lot for me to work through here, so let’s break things up a little.

DevOps (And Full Stack) is Killing “The Developer?”

First, let me recap briefly the article’s thesis.  And I’m really going to try to be gentle here and non-objectionable.  I trade in blog posts for a living these days, and slugging it out with random people on the internet has worn as thin as it can possibly wear to me.  I’d really rather not argue with this Jeff Knupp, and I can certainly empathize with waging a vigorous campaign to make your own job more fun.

The article’s thesis is, essentially, this, from the perspective of a salaried employee in the enterprise.

I hate the DevOps (and full stack) movements because I like writing code and they result in me writing less code.

The author might object to this thesis, but that’s really the message.  It asserts the superiority of the software developer as compared to other individual contributor roles, and then argues that DevOps and full stack (and forced skill diversification in general) are good for the employer, but bad for the employee.  (Although he then curiously argues that it’s also bad for the employer, since they’re “overpaying” for non-development labor.)

Read More


DaedTech Digest: Code Quality, CI, Agile for Remote Teams

Happy Friday, everybody.  Time for another installment of the DaedTech Digest.  For those of you that haven’t seen these, it’s a round-up of five or six posts that I’ve written for other blogs.  And, on top of those, I also do “picks” ala many podcasts.

It’s been a wild and crazy week for me.  I wrote last week’s digest post from a hotel in Little Rock, Arkansas.  This week’s I’m writing from an AirBNB in San Diego, about 1,600 miles away.  Now, going from one city to another over the span of a week isn’t generally especially impressive.  But the catch here is that I did it by driving, hauling luggage, my wife, and my cats on an expedition to relocate for the winter until things get more pleasant in Michigan.

So it’s been an eventful week of sightseeing and driving.  But I haven’t let that stop me from getting back on track with DaedTech posts.


  • I don’t think I’ve done it as a pick before, so I’m going to throw The Four Hour Work Week out there.  Given that this book was one of the main sources of inspiration for our “relocate whenever we feel like” lifestyle, it seems appropriate.
  • A few nights ago, we stopped in El Paso, Texas and had a flight and some cactus tacos at the El Paso Brewing Company.  It’s a small brewery, but if you like craft beers, I highly recommend it.  They had a double IPA that was unlike anything I’ve ever tasted.
  • Speaking of travel, I’ll pick Marriott hotels.  Each of the last 4 years, I’ve spent 100+ nights in them, so I’ve obviously got a bit of experience.  Hard to beat the consistency and nice perks that are universal to any of their properties.
  • Mazapan.  This stuff is delicious.  If you can find it, get yourself some.

DaedTech Post Digest


A Career Guide for the Recovering Software Generalist

Since I’m kind of an old man, in college, they taught me C and its shiny new cousin, C++.  This was a CS program, so they didn’t ultimately focus on the language.  Instead, they went on to focus on the theory of things: algorithms, data structures, reasoning, and, well, computer science.  But they had to teach us just enough language for us to make sense of and apply those concepts.

So C/C++ it was.

My first full time programming job was a dream come true for the software generalist.  They had C and C++ both for me to work on.  But they had plenty of other language besides, and not a ton of manpower to spare.  So I learned Visual Basic.  And also PHP.  Oh, and Java.  (There were actually a few other things besides, but I think you get the point).

By the time I was about 4 years into the workforce, I’d switched my focus as the world moved toward web apps.  I’d gone from working on Linux kernel programming in C to Java web apps with Spring and Ant.  Fast forward several years, and I’d switched it up heavily again.  Java web apps?  Pff, that was so 2006.  I went to work for a completely different company, making a completely different product, and became a C#/WPF developer of desktop applications.

I was the consummate software generalist.

The software generalist is like this guy, who wears a chef outfit while painting and shooting a basketball.

The Software Generalist Source of Pride

I was proud of this, too.  If you’d asked me what I specialized in, I’d have said something like this.

My specialty is that I’m a generalist.  I live and breathe code.  Don’t care about your domain or your particulars and I don’t care about your language or stack.  I’ll be good anywhere, as long as it’s code.

If you’d pressed me on the specialty point, I might have conceded a little.

Well, I guess my specialty is object oriented programming.  Yep, if you need inheritance, encapsulation or polymorphism, I’m your man!

These days, assuming you read this blog with any regularity, you probably know how ruefully I tell this story.  I’ve written how free agents can stop generalizing and about the idea of niching down.  I’ve given advice for free agents to specialize.  But today I’d like to double down on this advice by offering it to salaried folks and not just freelancers.  You should specialize.

Read More


The Resignation Counter Offer and the Danger It Presents

It’s been a bit since my last reader question Monday post.  But, hopefully you can forgive me.  The last two Mondays were Christmas and New Years Day, so I was a bit distracted.  Let’s get back to business today, though, with a reader question about the counter offer.

Buckle up, because this is a pretty infuriating tale.

I have a coworker who had an opportunity to go to a new company/job where he would have received a major promotion and raise. When he told his current boss about the opportunity, his boss countered by offering him an equally major promotion and raise.  So he decided to turn down the other offer and stay at his current job.

However, once he turned down the other offer and told his boss he would accept the counter offer, his boss came back and said that for “logistical reasons” he couldn’t do a major promotion and raise right now. His boss offered him a small raise and token promotion for staying and said that they would “re-evaluate the situation in 6 months”. Have you seen this type of bait-and-switch tactic before?

Okay, I can actually answer the question pretty simply.  While I’ve seen a lot of things in my travels, I’ve never actually directly seen this.

But I think the real question here is less whether I’ve seen it or not and more about my take on it.  So let’s take a look at that.

The Employment Counter Offer

First of all, let me set the stage a little just so we’re crystal clear on what’s going on.  This bit of back and forth between the person in question and his employer centers around the idea of a counter offer.

You go out and do some interviewing while gainfully employed.  One of these interviews bears fruit, and you find yourself with an offer in hand.  With that offer, you resign from your current post.  But your boss counters with, well, a counter offer.  “Tell you what — we don’t want to lose you, so we’ll match their offer to keep you here.”

Here be dragons, though.

Here be dragons, like this one, when you accept a counter offer.

I’ve offered my opinion on counter offers before, but I’ll recap here briefly.  You shouldn’t accept counter offers.  If you work with a recruiter, a recruiter will tell you this emphatically and cite tons of reasons.  This is because every time a developer accepts a counter offer, a recruiter loses his wings.  Or, wait, I mean his commission.

But it actually is a pretty bad idea for you, recruiters notwithstanding.  The counter offer comes from you having temporary leverage.  It’s generally the employer’s least bad short term option, but it doesn’t age well because you’re now in a role and earning an amount of money they don’t really think you deserve.  It’s probably the last promotion you’ll ever earn there.

So the first issue I have here is actually with the apparently aggrieved party.  Accept counter offers at your own peril.

Read More