Stories about Software


Defining The Corporate Hierarchy

Rites of Passage

Think back to being a kid, and you can probably remember a rather dubious rite of passage that occurred when you figured out that you weren’t going to be a sports player, lead singer, or Hollywood star.  You probably felt sad, but your parents and older siblings likely breathed sighs of relief that you’d never be explaining to people that a manual labor gig was your “day job.”  State lotteries notwithstanding, giving up on improbable dreams is considered by adults to be a sign of maturity in budding adults.

If you think about this, the easy message to hear is “you’re not going to be great, so give up.”  It’s depressing and oft-lamented by college kids having mini crises of identity, but it’s actually a more nuanced and pragmatic message, if a poorly communicated one.  It’s that the expected value of these vocations is horrendous.  For baseball players, actresses, and rock stars, there’s a one in a million chance that you’ll make ridiculous sums of money and a 999,999 in a million chance that you’ll make $4,000 per year and have half of it paid to you in beer nuts.  So the expected value of going into these positions is about a $4,200 per year salary and a handful of beer nuts.  So the message isn’t really “give up because you’ll never make it” but rather “steer clear because anything but meteoric success is impoverishing.”

The better play, we tell our children, is to head for the corporate world where the salaries range from minimum wage in the mailroom to tens of millions per year for CEOs of companies that create stock market volatility. Most importantly, you can find every salary in between.   So if you aim for the heights of CEO and fall short, mid-level manager making $140K per year isn’t a bad consolation prize. And so a funny thing happens. We consider it to be a rite of passage to abandon the delusion that you’ll be Michael Jordan, but we encourage the delusion that you’ll be Bill Gates until people are well into middle age.

That’s right, “the delusion that you’ll be Bill Gates.” You won’t be him. You won’t be a CEO, either, unless you pop for your state’s incorporation fee and give yourself that title. You’re about as likely to “work your way up” to the CEO’s office over the course of your career as any given child is to luck into being the next multi-platinum pop star. So, it’s a rather strange thing that we tsk-tsk children for indulging pie-in-the-sky fantasies past a certain age while we use nearly identical fantasies as the blueprint for modern industry. Kid wants to be Justin Bieber? Pff. Thirty-year-old wants to be Mark Zuckerburg? Keep working hard, kicking butt, and acing those performance reviews, and someday you’ll get there!

Pff. Read More


Please Direct all Inquiries to My Agent

I got an email from a recruiter not too long ago.  I suppose that’s not a surprise, given how I’ve made my living, but what might surprise you is that I usually respond to recruiters, and politely at that.  They’re human beings, trying to earn a living in a way that I don’t envy.  These days, my relatively stock reply is to thank them for reaching out, tell them that I’m pretty happy and thus pretty picky, and to offer to chat anyway, if they just want to network.  As a developer with some community presence, a serial freelancer, a consultant, and general entrepreneur, it never hurts to talk for a few minutes and make a connection.  This recruiter persisted, and said that, even if it wasn’t a current fit, something might make sense later.  Sure, why not?

Come Hear about this Depressing Opportunity!

When she called, we exchanged pleasantries and she asked what I’d been doing lately in a professional capacity.  I explained that the last 2 years had seen me as the CIO of a company, running an IT department, and then going off on my own to do freelance development, consulting, coaching, and a cadre of other activities.  At this point, she began to explain what life was like for line level devs at her company and asking what tech stack I preferred.  I sighed inwardly and answered that I’d been engaged in coaching/mentoring activities in Java and .NET recently, but that I didn’t care too much about language or framework specifics.  She then asked about my career goals, and I scratched my head and explained, honestly, that I was looking to generate enough passive income to work on passion projects.  She became a little skeptical and asked if I had recent development experience, clearly now concerned that whatever it was that I’d been doing might not qualify me to crank out reams of line-o-business code or whatever fate she had in mind for me.

The conversation had become deeply tiring to me at this point, and I steered it to a close relatively quickly by telling her I had no interest in line-level development positions unless they were freelance, B2B, part time sorts of engagements that weren’t very long in duration (and not bothering to mention that I’d probably sub-contract something like that since I don’t have an abundance of time).  She assured me that all of the positions she was hiring for were W2, full time positions but I should give her a call if I changed my mind and felt like being an architect or something, and that was that.

I hung up the phone, sort of depressed.  Honestly, I wished I’d never taken the call more profoundly than if I’d interviewed for some plum gig and been rejected.  This just felt so… pointless.  I couldn’t really put my finger on why, and indeed, it took my subconscious some time to kick into useful mode and deposit it coherently into my active brain.DevOpportunityCost

Read More


Clean Communication

Do you remember your early days of software development in a team setting? If you do, and you’re anything like me, you’ll have awkward memories of trying too hard. Eager to show that you were ready for a seat at the big kids’ table, you’d dive into new assignments with the sort of over-eager attitude that made the grizzled veterans around you roll their eyes knowingly and, perhaps, smile faintly indulgent smiles.

It was time for you to shine. Adding a new radio button option to an existing series of options was the perfect chance for you to show that you knew what the Composite Pattern was. And, why use any of the collection types in the standard library when you could roll your own and use a method header comment to prove, mathematically, that it sorted itself in O(n log n)? Any unimaginative clod could write code that did what the users needed it to do, but it took a visionary, like you or me from days past, to write code that mostly did what users needed it to do while showcasing lessons from all 4 years of your undergraduate programs. Each feature that you delivered was a chance to add to your own personal portfolio at the company.


Read More


The Tech Lead Role: Lessons from Ancient Rome


Julius Caesar, Mark Antony, and Cassius walk into a bar, and the bartender asks them what they’ll have. “3 beers!” Caesar proclaims. “2 beers,” whispers Cassius.


Because I’m not a historian, I have the luxury of making spurious historical arguments that suit my purpose. I can even bring in Star Wars if I want to. For those of you only passingly familiar with the story of Caesar, he was the pivotal, popular, and controversial figure around which the Roman Republic became the Roman Empire. He was also the obvious inspiration for the scene in which Chancellor Palpatine becomes Emperor Palpatine, causing Padme to remark, “so this is how liberty dies… with thunderous applause.” Caesar was a popular and extraordinary general that imposed his will on the increasingly ineffectual Roman Republic, essentially replacing it with a more unified and centralized imperial government. That is, until his friends in the bar assassinated him in the name of “liberty.”

Caligula Read More


Salary Negotiations: Win by Losing

I’ve been reading a book called, “The Four Hour Work Week” lately, and the timing is pretty interesting. In the book, Ferris outlines a positively cold-blooded plan to seize control of your life and career using an approach that he calls “Lifestyle Design.” For me, the timing is interesting because “lifestyle design” is a good way to describe the way that I’ve been re-shaping my life over the last several years, thinking in terms of things that I want to be true about my life (e.g. “I should be able to go where I want when I feel like it and work from wherever”) rather than my career (e.g. “I wanna be a SENIOR Architect”). It also reinforces and then some my desire to focus increasingly on passive income. So, basically, reading this book for me is sort of like a gigantic pat on the back: “you’re on the right track, Erik, but you should double down!”

You should buy and read this book. Seriously. It’s, at times, audacious to the point of discomfort, and it can feel a little Amyway-this-is-too-good-to-be-true-ish (though it probably isn’t), but he makes some incisive observations that will rattle you and alter the way you think of the corporate world… like I’m about to do (I hope). Some of the inspiration for this post is derived from my experience (particularly the focus on programmers, which he doesn’t do), and some of it from the book. So, without further ado…

The Hard Truth

Salaried, exempt employment is an atrocious economic deal, especially for programmers. Weird as it sounds to say now, I’m not saying that your employer is screwing you nor that you shouldn’t be a salaried, exempt employee. I actually rewrote that first sentence several times, trying to be a little less blunt, but it is what it is. It’s not a value judgment and it’s not intended to be click bait or offensive — it’s just the stark truth. Let’s go through some numbers, to put an exclamation point on it.
Read More


Lifting the Curse of Knowledge

As most of you know, one of the biggest anti-patterns when you’re instantiating program slots is to forget to set CanRemoveOverride to true. But what you probably didn’t know was that the SlotConfig is — Just kidding. I lifted this from a post I wrote almost 3 years ago about legacy code I was working with then. I have little more idea than you do what any of that means.

Read More


Performance Reviews Simplified

If you were to ask people in the corporate world about the most significant moments of their careers, a lot of them would probably talk about annual performance reviews. That’s a curious thing. Anyone who talks about performance reviews when asked this question is not talking about an idea they had that saved the company hundreds of thousands of dollars or about rescuing a project that had gone sideways. Instead, their careers were defined sitting in a room with their managers, going through a worksheet that purports to address how well they’ve matched up against the company’s ‘values.’


Read More


10x Developer, Reconsidered

Unless my memory and a quick search of my blog are both mistaken, I’ve never tackled the controversial concept of a “10x developer.” For those who aren’t aware, this is the idea that some programmers are order(s) of magnitude more productive than others, with the exact figure varying. I believe that studies of varying statistical rigor have been suggestive of this possibility for decades and that Steve McConnell wrote about it in the iconic book, “Code Complete.” But wherever, exactly, it came from, the sound byte that dominates our industry is the “10x Developer” — the outlier developer archetype so productive as to be called a “rock star.” This seems to drive an endless debate cycle in the community as to whether or not it’s a myth that some of us are 10 or more times as awesome as others. You can read some salient points and a whole ton of interesting links from this jumping off stack exchange question.

Read More


The Retreat of the Introvert

If you’ve ever been nervous at a cocktail party or similar event and spilled a drink, you have an acute understanding of how time can elongate. There’s the second your hand brushes the glass and the second the glass offers its liquid to the expensive carpet, and while the seconds are right next to one another, it seems as though minutes or even hours pass in between them. In periods of duress, time spreads out, like (to borrow the words of T.S. Eliot) a patient etherized upon a table.

When you’re an introvert, this happens when social situations become volatile. And, by “social situations,” I don’t mean cocktail parties exclusively, but really any sort of interaction with others. It could be that you’re put on the spot at a meeting in which you weren’t expected to talk. It could happen at a night out when some friend volunteers you for karaoke at the bar. It could happen from something as simple and apparently routine as your girlfriend saying “we need to talk” when the two of you are eating Chinese at home. There’s a trigger and then the elongation occurs and it seizes you, demanding action that you know to be socially impossible. But if you gave in, it would be oh so sweet…

Read More


Aggregation of Indignities

I’m about to head off for a small vacation, so I’ll leave you with a relatively short post until I pick things up, probably a week from now.

If one were to track the small indignities of life that add up to serious grievances, it’s temping to think that these would be expressed in terms of, “things I have to do but don’t want to.” If you listen to someone talk about quitting a job, you’d hear about the rolled up grievances and imagine the small indignities. “I can’t stand my boss” would really be a series of things like, “have to go to his status meeting” and “have to respond to emails at all hours of the night.” You can imagine the exercise with other things that fill up the occasional exit interview that’s honest.

But at its core, I don’t think it’s “things we don’t want to do but have to do anyway” that create the important grievances, but rather, “things we think are stupid but have to do anyway.” There are plenty of things that I don’t really want to do, but know make sense, and so I do them anyway. Going to the dentist, working out for the most part, getting up in time to go to a meeting even after sleeping for only 4 hours come to mind. I make the best of the situation because I know these things make sense, and any resultant unhappiness is fleeting.

It’s the things that I think are stupid that result in unhappiness that is more than fleeting. If I have to get up to go to the dentist to have my teeth cleaned, I suffer through and then, after, think, “well, my teeth feel great, and I don’t have to do that again for six months, so, alright, onto the rest of my day.” If I have to go to the DMV because Illinois randomly decided that I owe them $200 for some new tax and the ‘convenience fee’ for online payment is $45, I’ll be in a seriously bad mood while I do it and then still residually salty for the rest of the day.

Back in the exit interview, “I can’t stand my boss” doesn’t actually expand do “I didn’t like being in the status meeting” but rather, “I hate attending those pointless status meetings.” It doesn’t expand to “have to respond to emails at all hours of the night” but rather “have to respond to emails at all hours of the night when there’s no reason it couldn’t wait until morning.” Most people are basically diligent and will do the unpleasant stuff… if they feel it carries forward some purpose.

When it comes to sources of perceived stupidity or pointlessness, I can think of three loose categories:

  1. Institutional/Bureaucratic
  2. Inadvertent/Earnest Disagreement
  3. Posturing/Malicious


The first category exists at most institutions to varying degrees and is straightforward enough: it’s your TPS reports and other infantilizing things that you have to do because someone, somewhere once got sued for something.  The second category boils down to “team lead pulls rank on you about a course of action and you have to go along with what she says, even though you think it’s stupid.”  The third category is “mid level manager shows up 10 minutes late to meeting because he can’t bother to be on time and then dispatches someone to get coffee for him, even though that person is a professional engineer.”  It’s a uniquely aggressive action in that both parties are completely aware that the aggressor is manufacturing stupidity, but the message is essentially, “I have the power to make you do stupid things, and I enjoy using it.”

These things aggregate and fester over the course of time, probably roughly in the numbered ordered above.  People will usually tolerate a maze of bureaucracy more easily than semi-regular demeaning interactions, all other things being equal.  But everyone has some kind of aggregated stupidity score that, when hit, triggers them to quit.  Actual ‘scores’ will vary widely depending on situation and individual personality.

The moral of the story is this.  By and large, people aren’t going to burn out and be driven away by hard or unpleasant work alone.  They’ll burn out and be driven away by work that they think is stupid.  So if you’re focused on retention and morale, pay specific attention not so much to whether people are doing grunt work but rather the value (or lack thereof) they perceive in the work.

Acknowledgements | Contact | About | Social Media