DaedTech

Stories about Software

By

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.’

FriendlyBoss

Read More

By

Programmer IS A Career Path, Thank You

If you’re a programmer, think back for a moment to the first time you hear the career question. You know the one I mean, even if you don’t recognize it as the question: “do you see yourself on the architect track or the management track?”

Caught off guard, you panic momentarily as you feel that you have about 5 seconds to decide whether your long term future involves lots of UML diagrams and flow charts or whether it involves lots of Power Point presentations and demanding TPS reports from underlings. If you’re like most, and you were to answer honestly, you’d probably say, “neither, really, because I kind of like writing code.” But you don’t give that answer (I never did) because you’d effectively be responding to a career development question with, “I have no interest in career development.” But let’s put a pin in that for a moment.

Why is the Programmer Career Path Different?

Imagine a kid going to law school and graduating to go work at a law firm somewhere as an associate, doing whatever it is that associates do. Now imagine a conversation where a partner at the firm pulls this associate aside and says, “so, have you thought about your future? Do you see yourself as more of a partner in the firm, continuing to practice law, or do you see yourself as more of a lawyer-manager?” I imagine the response would be, “what on Earth are you talking about? I’m a lawyer. I want to practice law and be a partner. What else is there?”

Why is it okay (or would it be okay, since this conversation would never actually take place) for an ambitious lawyer to say, “I just want to be a lawyer” and not for an ambitious programmer to say, “I just want to be a programmer?” For the purposes of this post, I’m going to leave that question as rhetorical one. I’m actually going to answer it at length in the book that I’m starting to write, but until the publication date, I’ll leave the why as an exercise for the reader and just posit that it should also be okay for a programmer to say this.

Changing the Culture

I’d like to see a culture change, and I think it starts with our current generation of programmers. We need to make it okay to say, “I just want to be a programmer.”

Right now, the only option is to ‘graduate’ from programming because failure to do so is widely construed as failure to advance in your career. If you become a line manager (or the diet version, project manager), you stop writing code and become the boss. If you become an architect, you kinda-sort-usually-mostly stop writing code and kinda-sort-sometimes-maybe become sorta like a boss. But however you slice it, organizational power and writing code have historically been mutually exclusive.

You can play around with teh codez early in your career, but sooner or later, you have to grow up, take your hands off the keyboard, and become a boss. You have to graduate or risk being the metaphorical ‘drop-out’ with the title “Super Principal Fellow Engineer,” who looks great on paper but is generally ignored or smiled at indulgently.

ProgrammerGraduation

The Effect of Rising Wages

That’s going to change sooner or later. As someone who has looked for work and looked to hire pretty steadily for a number of years, I’ve witnessed an increase in developer salary that is both sharp and sustained.

As the average software developer’s wage starts to creep into 6 figure territory, it’s simply not possible to keep the pecking order intact by paying overhead personnel more and more ungodly sums of money. Just as it makes no sense for a law firm billing out at $500/hour to hire a “lawyer manager” as a 1 mil/year cost center, it eventually won’t make sense to pay a quarter million a year to a pointy-hair, when Scrum and basic market forces both offer the allure of a self-managed team. In both cases, overhead work still happens, but it reports to the talent rather than ordering it around and demanding status reports.

How quickly it changes is up to us, though. We can change this culture, and we can change it pretty quickly, I think. The first thing you can do is fix it in your mind that being an “architect” or “project manager” or “manager” isn’t a graduation and it isn’t a rite of passage. It’s an agreement to do something different than what you’re doing now. Nothing more, nothing less. The second thing you can do is vote with your feet.

Look to Good Examples

I’m not advising that you do anything drastic, but rather that you take stock of your circumstances. Are you at an organization where programming is clearly viewed as how you bide time until you get promoted to a boss’s chair?

If so, consider adding a new criterion to your next job search. Look for organizations that feature prominent industry figures, such as conference speakers, authors, or people with some “tech celebrity.” These are the organizations that are the “early adopters” of the lawyer/partner dynamic of “best at the trade calls the shots.”

If you hook up with these organizations, nobody is going to ask you what “track” you see taking you out of programming. They’ll assume that you’re there because you’re deadly serious about programming as a profession, interested in learning from the best, and interested in subsequently becoming the best.

Sooner or later, we’ll hit some kind of critical mass with this approach. My hope for all of our sake is that it’s sooner. Because the sooner we hit critical mass, the sooner you’ll stop having to explain that doing what you love wasn’t a backup plan for failing to rise in the ranks.

Want to read more about this?  Since writing this post, I finished my book, Developer Hegemony.

By

Be the We

There’s a moment at a job that you’ve probably never thought about specifically, but it’s a knee point of sorts. Think of arriving at a new gig that you take somewhere, fresh out of the interview process, pumped about the new opportunity and the 10% pay bump you’ve negotiated for yourself, and generally rarin’ to go. You’ve come out of an interview process in which you’ve presented a pretty rosy picture of yourself and so have they, so everything’s awesome.

Then you arrive for your first day with your passport to prove citizenship and your lofty expectations and, after a period of getting settled, you get down to work and see what’s going on. Maybe it’s a walk through the code base or your first standup meeting where it happens. Maybe it’s a department meeting. I don’t know. But somewhere, it happens. You see something pretty crazy that calls into question all of the awesome things you thought about your new Shangri La. Maybe the company is using Visual Source Safe for source control. Maybe “daily standup” is a manager sitting while 30 direct reports spend 2 hours furnishing status updates. If you think hard, I’m sure you can remember the first “these people are insane” moment that you had at any given company. But that’s not the moment that I’m posting about; that’s just a baseline moment to which we’ll return shortly.

That first WTF moment probably isn’t the last and, to some degree, this is inevitable since not everyone will do things in quite the same way. You respond to these early moments by asking questions of the people there: “so, what’s the backstory behind that 12,000 line singleton class” or maybe “why do you guys put up with code commits taking 3 hours?” And, what’s more, you probably make the case to remedy some of these things and, perhaps even have some success. You fight strategic battles but you don’t (and can’t) win them all, and at some point you and the company adapt to each other like an ice cube in a warm glass of water becoming coolish water. You change some things and get used to others.

And then the moment in question comes. It sneaks up on you when a new hire comes on board, looks at the code commit process you’ve trimmed from 3 hours to 2 hours and says, “what’s wrong with you guys that commits take 2 hours?” The moment happens when you say, “that’s not me, man — you should have seen what these goofballs were doing before I got here. Don’t lump me in with them.” Tell me this has never happened to you, I dare you. You wince and say, “it was like that when I got here!”

As one of my favorite movie characters (I make the distinction because I have no idea if the actual man said things like this) Doc Holliday said in Tombstone, “apparently, my hypocrisy knows no bounds.” I mention this because I’m about to advise against this in a “do as I say and not as I’ve done” sense. Over the course of my career, I’ve tended to disengage (and eventually leave) from situations that I found to be degenerate, rather than battling endlessly to correct them. This led to a tendency to keep myself at arm’s length from a group if I didn’t like things that were happening.

DocHolliday

What I’ve come to understand is that there is no “me and them” except in the realm of your (and my) hollow excuses. As soon as you sign on with that company, there’s only “we.” I’ve learned the hard way that accepting this immediately results in better outcomes in the same way as the “fail fast” mantra. The best outcome is that you get there, ask questions about “why does our build take so long and how can we fix it,” and you start chipping away, making real progress that you can take pride in. Your investment of your own reputation in the endeavor provides strong motivation. Another decent outcome is that you can’t make progress and are forced more quickly to ask yourself, “do I want to be part of a ‘we’ that operates this way — do I want my name on this?” If the answer to that is “no” and there’s no sign of improvement, it’s better to exit stage left as soon as you can than to sit around, making sure everyone knows that you don’t actually think much of your group.

Really, that’s a terrible outcome for as long as it continues. You’re unhappy and you look like an excuse-offering malcontent. Your peers resent you because they perceive (probably correctly) that you’re bashing their previous work or throwing them under the bus. It’s a bad situation all the way around, and it can be avoided, I’ve learned over time, by getting to “we” as quickly as possible.

So when transitioning to a new job, assignment, team, or whatever, start talking immediately about what “we” do. It will align you with your group, generate earlier feedback for you on whether it’s a good fit or not, and probably bias you over the long haul to evaluating mutual compatibility more carefully up front.

By

Help, My Boss Sucks!

I might be accused of link bait for a title like this, but I actually get a decent amount of questions that, when you distill them down to their bare essence, amount to this title. The questions are often packaged in narrative (possibly rant) form and almost invariably summed up with an apology for all of the detail. Please don’t apologize for that level of detail. It’s not that I enjoy hearing about your miseries, but I think that there’s definitely a shared catharsis that occurs when recounting or listening to tales of corporate stupidity with a narrator that’s powerless to stop it.

My Expert Beginner series and eventual E-Book resonated with a lot of people largely, I think, because of this dynamic. The experience of dealing with an entrenched incompetent is so common in our industry that thousands and thousands of people read these posts and, thought, “hey, yeah, I had to deal with a guy just like that!” And I’m small potatoes — the DailyWTF is an entire, vibrant site with tens of thousands of subscribers and a number of authors and editors dedicated to this kind of thing. If you want to go even bigger, think of Dilbert and his pointy haired boss or the Peter Principle.

Assuming, however, that commiseration with others isn’t enough to bring the joy back into your life (or at least to remove the angst from it), the question then follows, “what should I do?” It’s at this point that one might expect to stumble across some kind of insipid faux-answer on LinkedIn or something. It’d probably go something like this:

Top Ten Tips to Tame a Terrible Tyrant

  1. Take up meditation or yoga and learn to take deep breaths when your stress level is getting high so that you can react calmly even in the face of irrational behavior.
  2. Ask yourself if you’re not part of the problem too and do some serious introspection.
  3. You don’t have to like someone to respect them.
  4. Talk to human resources and ask for discretion.
  5. Have a heart to heart and explain your concerns, being courteous but firm.
  6. Enlist the help of a mentor or respected person in the group to make things more livable.
  7. Empathize with their motivations and learn why they do what they do so that you can avoid their triggers.
  8. Heap praise on the boss when he or she avoids behaviors you don’t like in favor of ones that you do.
  9. Seek out a project that puts you on loan to another group or, perhaps, minimizes the direct interaction with your boss.
  10. If all else fails and you’re at wits’ end, perhaps, maybe, possibly, you might want to consider some kind of change in, you know, jobs — but do a ton of research before you do anything and make lots of idea webs and charts and make really, really sure that this is what you want to do because it’s a huge decision.

Honestly, go out and google something like, “what to do about a bad boss” and this is the sort of platitudinous, enumerated non-answer to which you’ll be treated.  It’s manicured, politically correct, carefully considered, diplomatic, and a load of crap.

Let’s get real.

What To Do When Your Boss Sucks

  1. Form an exit strategy.  That’s it.  There is no 2.

AngryArch

Wait, Wat?

Yes, you read that correctly.

I don’t advocate that you take up yoga or work it out on the heavy bag or recite “calm blue ocean” or empathize or anything else.  If you find yourself miserable at work day after day because of a boss with whom you are fundamentally incompatible or if you find yourself googling “what to do about a bad boss” or if you find yourself writing to someone like me to ask for advice on what to do about your bad boss, you’re in a fundamentally awful position that’s probably shaving hours and days off of your life.

Whatever appeasement strategy upon which you may choose to embark is only going to mitigate that — it won’t alter it.  You need to take control of your destiny and that requires an executable, measurable, and tangible plan of action.

I’m not advising you to rage quit or do anything rash — that’s an awful plan (or perhaps a non-plan).  What I’m suggesting that you do is start laying out a sequence of events that removes this person from your life.

There are a lot of ways that this could happen.

Obviously, you could quit and work elsewhere, but you could also plan to stick it out until the boss retires in 18 months.  Perhaps you start taking classes at night so that you can transfer into a different group or maybe you find some team-lead type that acts as a buffer between you and Mr Spacely.

It could be that you do something as unusual as becoming a huge advocate for your boss to upper management so that he’ll get that promotion that will take him to another division or, at least, away from dealing with you directly.  Maybe you initiate controlled explosions inside of your own ears so that you never have to hear his terrible voice again and he can’t deal with you unless he learns sign language.

Go make yourself a brainstorming list — no idea short of criminal malfeasance too farfetched — and capture every imaginable path to your emancipation.  Once you’ve got that list in hand, start narrowing it down and firming it up until you have several strategies that you can work simultaneously, all timeboxed and with contingency plans.

You need to have measurable goals against which you can measure progress and you need to understand when to pivot.  A good plan would be something like:

“I’m going to get that certification that will make me a bit more cross functional and then I’ll start volunteering for work over in Bill’s group in my spare time.  Within 3 months of that, I’ll casually broach the subject of spending some time in that group and within 4 months, I’ll make it official.  While that’s going on, I’ll talk to HR within the next month about the idea of a potential transfer.  If after 4 months, none of that is going well, I’ll start interviewing for other positions.”

Now when you’re looking at your life, you’re not seeing an unending string of misery to be mitigated only with non-actionable platitudes like, “be more understanding” and “ask yourself if you aren’t partially responsible.”  Instead, you have a plan of action that you believe, if followed, will lead you to being happier.  Because here’s the thing — if you’re fundamentally incompatible with a boss then “who is responsible” is a non-starter and being more understanding isn’t really going to help.

There’s a Protestant Work Ethic, “Pain is Gain” underpinning to all of this that’s really not appropriate.  Is it an inappropriate sense of entitlement that must drive you to say, “I shouldn’t have to work somewhere that my boss makes me miserable?”  Many would argue yes, but I’m not one of them, and I think that’s silly.

If you’re overly picky or sensitive, you’ll wind up job hopping, getting stuck somewhere or, perhaps, have trouble finding work.  That’s how you pay the piper for being too picky or sensitive and, if those things start happening, maybe you should embark on a course of introspection.

But if you’re miserable under a boss, that’s real and there’s no way it’s entirely your fault.  It’s not your sole responsibility to figure out a way to prevent someone from making you miserable and you ought to view this as a no-fault problem to set about solving.  That’s where the plan comes in.

A boss is someone who should be removing impediments from your path to allow you to be as productive and awesome as possible.

That’s not feel-good BS — it’s the way to get the most value and productivity out of knowledge workers.  No boss that truly embraces this mandate should be making your life miserable, even if you are an over-sensitive, uber-picky prima donna.

If the boss is making you miserable on a daily basis then he’s an impediment and not an impediment remover.  Since you’re then responsible for removing your own impediments, there’s only one thing to be done with this boss: remove him from your life.

That’s All Well and Good…

I realize that this all probably sounds rash and maybe you think, “easy for you to say,” but it didn’t just happen to become easy for me to say.  I planned for it.

I’ve spent a lifetime optimizing for my own happiness and satisfaction with what I do and, when that temporarily wanes, due to a boss or anything else, I form a plan, follow it, and fix the problem.  And I do this by thinking in terms of diversification and dependency.

If you take a job at Acme Inc, settle in for a 10+ year stay, and let your resume gather dust, then you’re largely dependent on Acme Inc for your well being via income — you’re putting all of your eggs in that basket.  If Acme then burps out a bad manager and puts him above you in the org chart, you find yourself in the same position as a cable company customer: “yeah, we’re awful, but good luck doing anything else.”

If it seems daunting or hard to plan at this point, it’s because you’re pretty coupled to Acme.  You still can and should make a plan, by all means, but that’s why my advice might seem cavalier.

I have contingency plans all the time, and they range from W2 opportunities to 1099/B2B work to royalty streams to oddball, go-for-broke schemes like moving to the country to be a hermit and try my hand at writing novels.

Some of them are clearly more realistic or feasible than others, but they all exist and I’m in a constant state of assessing my happiness and weighing my options.

Don’t confuse this with fickleness or disloyalty in me and I’m not advocating those things in you.  If I could find something that made me consistently happy, work-wise, for the next 2 decades, I’d happily take the consistency and stability, and I cheerfully advise you to do the same.

But when life or companies throw crap situations at you don’t hesitate to start executing contingency plans to bring your happiness level back to where you want it.  Your happiness is something that you can’t count on anyone but you to monitor and it’s not just important to your quality of life — it’s important to your quality of output as a knowledge worker.  You and your reputation can’t afford for you not to be happy.

By

A Study in Mistrust

I witnessed a rather surreal series of events some time ago. A software group lost its line manager to the proverbial greener pastures and was sort of temporarily adrift in a leadership vacuum. The organization didn’t immediately backfill the role and the team sort of lurched on for a little while, unsure of who would be transferred in. During the course of a search for a replacement, an interim manager was appointed, and the team promptly quit. Yes, you read that correctly. The team quit. I don’t mean they quit on him the way a sports team “quits on a coach” by tuning him out. I mean that the entire development team, within an incredibly short period of time, resigned from their positions. The world of software people is a strange one where they can often have new jobs within days or certainly weeks of deciding to look. But, I digress.

I’ve been watching the British take on Sherlock Holmes of late, and that has inspired me to spend a little bit of time thinking of a name for this case. After discarding such inanity as “The Case of the Missing Team” and such drollery as “The Adventure of the Vanishing Devs,” I settled on “A Study in Mistrust.”

Sherlock

The game’s afoot! (But first some backstory)

To solve the case, and lacking the formidable powers of deduction that Sherlock Holmes brought to bear, I’m going to rely instead on history. Labor has a rather rich history of mistrust once societies grow beyond the level of “tribe” where things tend to operate democratically or communally. The reason for this is that the origin of the corporate labor model involves foremen whipping indentured servants, slaves, and laborers who were failing to construct pyramids and the like quickly enough. You probably wouldn’t trust people either if the proposition they offered you was, “do this or I’ll injure you.”

Of course, we’ve come a long way since antiquity (though not without regressions). Feudalism replaced “do this or I’ll injure you” with “do this or I’ll let others injure you” and “do this or you’ll starve.” It’s not exactly a meteoric rise up Maslow’s hierarchy, but one supposes that hunger and possibly realized threats are a little better than immediate threats. Serfdom eventually gave way to the Industrial Revolution, which by and large replaced “do this or I’ll injure you” with “do this or you’ll go hungry and possibly end up in debtor’s prison.” And so, another relatively unremarkable step was realized. But then labor laws came about, removing Gilded Age practices like sharecropping and tenant farming from the equation. Actual gains were made and social safety nets created, resulting in a situation where not laboring in employ wasn’t necessarily as bad as it had been, historically. The unemployed still don’t have a particularly great life, but walking away from a job no longer constitutes a visceral, immediate threat to your well-being.

If you go all the way back to the labor of antiquity that was not cooperative (e.g. hunter/gatherer societies) and consider what caused the original power imbalance, you’ll find a lot of things like hereditary station in life. Your dad was a laborer and whip-wielder’s dad was a foreman, so whip-wielder gets to whip you while you labor. This doesn’t exactly engender a lot of mutual trust in the first place, and the nature of the situation makes things worse. Stacking pyramid stones sucks, and no one would want to do that, so you have to whip people to make it happen (or invent some religious story like telling laborers it’s worth it because even though their lives suck, they’ll totally get a better seat on the ferry to the afterlife for their troubles). The whip-cracker doesn’t trust the workers to work and, not surprisingly, the workers don’t trust the dude that’s whipping them.

That (lack of) trust story didn’t change a whole lot as the workforce gradually shifted from slave-oriented to feudal to early capitalist societies (not that this was a linear journey, as evidenced by the African Slave Trade). By the late 1800’s there wasn’t any (much) whipping going on, but your boss, who was also your landlord, might evict you if you didn’t work to his satisfaction or might fire you if you didn’t pay rent. Boss doesn’t trust the peons, and the peons don’t trust boss. This brings to mind classic and iconic factory imagery of someone strolling around with the clipboard, making notes, and taking laborers to task for failing to sew buttons properly or assemble widgets quickly enough. The lazy workers don’t trust the overbearing foremen and vice-versa, and all parties are aware that the work sucks.

Interestingly (and absurdly), the factory/foreman model (along with a masochistic, heaping helping of Protestant Work Ethic) is largely what informs the operation of modern corporations. Think of some kind of garden variety, generic office satirized by works like The Office and Office Space, and what do you picture? I bet you quickly form images of employees finding ways to linger at the water cooler while mid-level managers say, “so, what’s happening…. yeah, so I’m going to need you to go ahead and limit your breaks to 10 minutes every 3 hours and punch in and out of the break room each time you enter so that I can check… yeah.” No doubt they monitor employee Facebook usage to ensure that the lazy louts aren’t misappropriating company time.

Over the years, the outfits have changed and the cruelty (at least in the corporate world) has been mitigated and moved away from physical, but the basic lack of trust between the two parties has withstood the test of time. “Do this stuff that sucks or I’ll do bad things to you.” We accept this as a pretty standard way to operate and shrug it off with inane banalities like “welp, they wouldn’t call it work if you liked doing it,” and “I work to live; I don’t live to work.” In a world of mutual mistrust, the employed and the employer have a sort of festering but peaceful cold war of equilibrium.

This approach tends to work well enough for jobs done by rote and other types of labor, but, not surprisingly, it sucks pretty hard when it comes to knowledge work (loosely defined as people who “think for a living”). That is, yelling at doctors to “doctor faster and with fewer mistakes” doesn’t seem to lead to better health outcomes. The main barrier to accomplishing knowledge work isn’t the same as the main barrier to stacking pyramid stones. It’s hard to get people to stack pyramid stones because it’s boring, back-breaking labor that’s simultaneously not worth much from a market perspective (it requires no skill) and not worth doing from an individual perspective (who needs the hernias and slipped discs) — the ideal solution is to automate. But with knowledge work, the main barrier to accomplishing things tends to be some kind of creative block, which is ideally addressed by stimulating environments conducive to creative thought.

There’s a new norm emerging, and it’s driving things like the Agile movement, startup, “perk” culture, casual/flexible office environments, remote work, etc. The new norm of which I’m speaking is the idea that you get the most productivity out of knowledge workers by making them comfortable, relaxed and happy. And the element at the core of all of this is trust. Gone is the “do this stuff or I’ll do bad things to you” contract and in its place we find a new employer-employee contract: “if you deliver value and get things done, we’ll make it worth your while and try not to bother you more than we have to.”

Whodunnit

And so, Watson, only one piece remains missing after all of this background. Why would a team of knowledge workers in this brave, new paradigm just up and quit? (I’m resisting the urge to start this next sentence with “elementary.” You’re welcome). They’d quit if they were forced back into the old style of contract when they’d been used to the new; going from being trusted to being guilty of laziness until proven innocent would do the trick. And fast. And that’s exactly what happened.

I’ve written previously about how ridiculous it would seem to go from a well implemented agile process to waterfall. This is a similar concept. Going from a situation with the trust contract to a situation with the threat contract would be worse because it doesn’t just seem inefficient and weird — it would feel dehumanizing. And, in an industry where the demand for knowledge workers is through the roof, a knowledge worker in this position would quit and quit fast. And that is what the whole team did “A Study in Mistrust.” They reacted predictably to a whip-cracking newbie manager that wanted to “set the tone” from the start.

It’s worth considering your own situation and, if you have people reporting to you or you’re a non-org-chart thought leader, it’s especially worth considering the situations of those you lead. The ideal situation is one in which the employee and employer benefit mutually from an arrangement of trust, but if your situation is less than ideal, take care with how you handle it. Bravado and shows of force are not going to lead you to new outcomes. Both players in the relationship and signatories to the implied contract have a vested interest in finding a way to create or repair the trust.