DaedTech

Stories about Software

By

Mistakes Dev Managers Make

Editorial note: I originally wrote this post for the NDepend blog.  You can check out the original here, at the site.  If you like this post, head on over, and check out more at the site.

Managing a team of software developers is a tall order. This is doubly true when the line management includes both org chart duties (career development, HR administrivia, etc) and responsibility for the team’s performance when it comes to shipping. In this case, you’re being asked to understand their day to day performance well enough to evaluate their performance and drive improvement, in spite of the fact that what they do is utterly opaque to you. It’s like being asked to simultaneously coach a team and referee the game for a sport whose rules you don’t know. As I said, a tall order.

I’ll grant that, if you’re a manager, you may have been technical at some point, perhaps even recently. Or maybe not, but you’ve been around it long enough to pick up a lot of concepts, at least in the abstract. But in neither case, if you were asked what, exactly, Alice coded up yesterday, would you be able to answer. Whether it’s due to total lack of experience, being “rusty” from not having programmed in a number of years, or simply being unable to keep up with what 8 other people are doing, their work is opaque to you.

As with coaching/refereeing the game that you don’t understand, you can pick up on their body language and gestures. If all members of the team appear disgusted with one of their mates, that one probably did something bad. You’re not totally without context clues and levers to pull, but it wouldn’t be hard at all for them to put one over on you, if they were so inclined. You’re navigating a pretty tough obstacle course.

And so it becomes pretty easy to make mistakes. It’s also pretty understandable, given the lay of the land. I’ll take you through a few of the more common ones that I tend to see, and offer some thoughts on what you can do instead.

Micromanagement

The opacity of the development team’s labor creates a situation in which it’s easy to feel as though you don’t have control.  And a perfectly natural impulse in such a situation is to overcompensate and try to exert as much control as possible.  The overwhelming majority of folks that micromanage don’t think to themselves, “I want to be an insufferable control freak,” but rather something along the lines of, “I just need to get really involved for now while we’re facing this deadline, and then I’ll back off when things settle down.”

GrabbingTheWheel

Read More

By

Encouraging Creative Conflict: Form, Storm, Top Gun

If you have any designs on management, it’ll help your cause to learn some of the more iconic bits of that problem domain’s lore.  Software people would be more impressive at cocktail hour by being able to speak intelligently about object oriented vs structured vs functional programming or about relational vs document databases.  Management people would be more impressive at their own cocktail hours being able to bandy about Drucker, lean principles, and Maslow’s Hierarchy of Needs.  And if you hang out at enough of these cocktail hours, you will be unable to avoid Tuckman’s stages of group development.

The short version of these stages is the catchy rhyme, “form, storm, norm, perform.”  The groups starts off being polite and feeling one another out, but they’re more or less too deferential to make serious progress.  After a bit, egos and tempers flare, people jockey for influence and rivalries emerge — the group ‘storms.’  Only once the team has duked it out and subsequently hugged it out can they move on to ‘norming,’ wherein they gruffly put up with one another’s peccadilloes in pursuit of a common goal.  And, finally, in the end, they all live happily ever after, humming along as a well-oiled machine.

Of course, this not only applies to feel-good stories of organizational politics, but also to about 90% of action movies in the history of the planet.  Whether it’s erstwhile enemies Maverick and Iceman agreeing to wingman each other at the end of Top Gun or the romance plot between Han, Leia and Luke eventually sorting itself out, we all get warm fuzzies when the former stormers become performers.  (Sorry, I couldn’t resist.)  Everyone likes a good tale of “form, storm, norm, perform.”

TopGunStorm

We like it so much, in fact, that I commonly hear variants of the idea that teams should be encouraged to ‘storm.’  It’s something like, “we want a team full of people that engage in fierce, angry debate to surface the best ideas, then, when 5:00 rolls around, they let it all go and happily go out to dinner.”  I’ve heard this described as “harnessing creative conflict,” or some such, and it echoes the management (Hollywood) narrative that through challenging one another and letting emotions run high, a catharsis of sorts occurs and all participants come out more creative and more closely bonded for their ordeal.  It’s an appealing notion, and it’s also the epitome of the “extrovert ideal.”

The extrovert ideal was a term coined (I think) in Susan Cain’s, “Quiet: The Power of Introverts in a World that Can’t Stop Talking.”  It refers to the notion that society has deemed extroversion the ‘correct’ choice between introversion and extroversion.  “Storm to perform” is very much an extrovert thing.  But I’ll return to that later.

Read More

By

Getting That New Tool Past The Gate Keeper

Editorial Note: this post was originally written for the SmartBear blog.  You can read the original here, at their site.  Check out the rest of the content while you’re there.

Let me tell you a tale, and stop me if it sounds familiar.  Well, I suppose the medium of blogging will prevent you from actually stopping me, but you get the idea.

You’re part of a software development group, and you’re surrounded by techies like yourself – people that get excited about new ideas, approaches, tools, frameworks, and languages.  But then there’s the guy on your team with the seniority.  Let’s call him Crusty.

Crusty is not your boss. He’s probably the team’s architect or even just a senior developer who is somehow, implicitly, more senior than the other developers.  Most significantly, he’s who management looks to for advice about whether to adopt things – the very things about which you and your teammates tend to get excited.

His answer is usually “no.”

Lifer

Management loves a guy like Crusty because he’s reassuring to them.  If you’re a dev team manager, the developers are constantly clamoring for new things, and you begin to wonder, “Is all of this really necessary?”  A good manager trusts her people to make recommendations, so she’ll tend to go along with it and hope that the spending is not wasteful.  But if there is a go-to guy on her team saying, “nah, we don’t need that,” she’s going to be grateful.  She has someone to reign in the spending, and she’s provided with the (potentially false) sense of security that, when something is actually needed, this guy will speak up.

This leaves you facing a conundrum if you’re part of such a group and want to propose a tool for adoption.  I talked previously about how to sell management on a tool, but Crusty effectively acts as a gatekeeper between you and making your case to management.  If you approach your manager directly, she might say something like, “Run it by Crusty first and get his buy-in.”

So, how do you get past this gatekeeper?  You need to understand his motivation and act accordingly.

Read More

By

Relax, Everyone’s Code Rots

Editorial note: I originally wrote this post for the NDepend blog.  Go on over and check out the original.  If you’re interested in topics like software department strategy, static analysis, and code metrics, it’ll be up your alley.  

I earn my living, or part of it, anyway, doing something very awkward.  I get called in to assess and analyze codebases for health and maintainability.  As you can no doubt imagine, this tends not to make me particularly popular with the folks who have constructed and who maintain this code.  “Who is this guy, and what does he know, anyway?” is a question that they ask, particularly when confronted with the parts of the assessment that paint the code in a less than flattering light.  And, frankly, they’re right to ask it.

scan0002

But in reality, it’s not so much about who I am and what I know as it is about properties of code bases.  Are code elements, like types and methods, larger and more complex than those of the average code base?  Is there a high degree of coupling and a low degree of cohesion?  Are the portions of the code with the highest fan-in exercised by automated tests or are they extremely risky to change?  Are there volatile parts of the code base that are touched with every commit?  And, for all of these considerations and more, are they trending better or worse?

It’s this last question that is, perhaps, most important.  And it helps me answer the question, “who are you and what do you know?”  I’m a guy who has run these types of analyses on a lot of codebases and I can see how yours stacks up and where it’s going.  And where it’s going isn’t awesome — it’s rotting.

But I’ll come back to that point later.

Read More

By

Agile for Introverts: Re-Imagined Programmer Collaboration

As I mentioned in a recent post, I’ve been listening to Susan Cain’s, “Quiet: The Power of Introverts in a World that Can’t Stop Talking.” I also mentioned that I’d be saying more on the topic, and here comes some more.  Today it’s going to be the idea of Agile for introverts.

In recent weeks, I’ve spent some time running a bootcamp of sorts that covered, among other things, XP and Scrum principles. Personally, I find that I light up when talking about clean coding practices and that I’m a bit more tepid when it comes to explaining process particulars. Reflecting one evening, it struck me that a lot of the practices involved in Scrum ceremonies and some of the XP practices aim to draw people “out of their shells.” In other words, a lot of agile is the Extrovert Ideal brought to programming.

This made me wonder what some Scrum ceremonies and/or XP practices might look like if they were introvert-friendly. That is, how could one accomplish the goals of these activities in ways that didn’t assume “let’s all get together and collaborate always!” was the right way to think.

What is introvert-friendly?

Before I can offer thoughts on how to make something introvert-friendly, I want to define what I mean by that. I feel it’s important to do so because the definition most people would assign by default is “things that don’t require interaction with others,” and that’s not right.

I’m going to go out in a limb here a bit and assume that I’m a good representative of the introvert population as described by Cain. I don’t feel that this is too much of a reach, since I got a 20 out of 20 on the informal “are you an introvert” quiz. So, I’ll explain my own psyche and trust that you find it reasonably representative of how you feel if you are also an introvert.

I don’t seek to minimize social interaction, per se, but I do shy away from unpredictable situations with a large amount of stimulus.  I also have an intense preference for a sort of social order that is predicated upon minimized conflict and a world in which information and opinions aren’t generally shared unless solicited.  You can actually read back through my blog posts and see a lot of this described before I’d ever heard of Susan Cain’s book.

There are probably more, but these certainly capture some of the themes at play here.  And from this basis, I propose the following concepts as introvert-friendly.

  • Differences of opinion are resolved by folks having time to process different viewpoints and build a case rather than by extemporaneous argument/debate.
  • Meetings and gatherings are limited in size.
  • In professional situations, it’s better to remain silent unless you have something high value to say, especially in larger groups.
  • Interpersonal interaction is primarily for camaraderie and logistical resolution (e.g. knowledge transfer or merging code), rather than important work.
  • The most productive work happens in a state of flow when you can tune the world out and concentrate.
  • It’s worth letting a group make a sub-optimal choice to preserve social harmony.
  • It’s good to be able to opt out of groups that frequently make sub-optimal choices.

Notice that none of this is, “I want to be home, alone, always, with no interaction.”  That’s not introversion — that’s being a recluse.  Rather, this is “I prefer orderly interactions, a cap on external stimulus, and time and space to form my ideas.”

Read More