Slashdot Mirror


On Managing Developers

An anonymous reader writes: A columnist at TechCrunch takes a crack at advice on how to manage developers. He has some decent starting points. For example, "Basically a manager's job is to make other people more productive. What's one really good way to do that? Do the work that is getting in their way. Which means: find out what kind of important work your developers dislike the most, and do it for them." Also: "[D]on't bull$%^& anyone, ever. ... Speak the truth as you see it. Speak it diplomatically, don't get me wrong; but be trustworthy. Only then will you be able to trust others." But some of his statements are open enough to be nearly devoid of meaning: "Any particular process artifact is probably irrelevant. The finest tech team I ever worked on began every day with a daily standup; so did one of the worst, most dysfunctional teams I ever encountered. ... [T]he systems and processes you choose for any given project should be fluid, and flexible, and depend in large part on the team and the context." If you are or have been a developer, what qualities have made your managers good or poor? If you've been in position to do the managing, does you experience jive with this guy's?

10 of 146 comments (clear)

  1. If it were easy by Crashmarik · · Score: 5, Insightful

    Everyone would be great at it. Anyone that thinks you can find the secrets to being a good anything in a couple of paragraphs, just doesn't know very much about the topic.

    1. Re:If it were easy by Anonymous Coward · · Score: 5, Insightful

      Pretty much this.

      I've been a first-line development manager for twenty years (one of the reasons I am still "first line," is because I have zero desire to lose my tech edge, which would be a requirement for moving up the food chain. I loves coding).

      In that time, I've learned a lot; much of it by screwing up.

      "Good judgment comes from experience. Experience comes from bad judgment."

      Honesty is a biggie. That's probably one thing that makes the difference. I'm dead solid honest with my team; including up front about how my first duty is to the corporation, but part of my duty to that corporation is to maintain a cohesive, productive team. That sometimes means that I'm honest to my supervisors when they make dumbass decisions or impose bad process.

      That also means courage, personal integrity and a good self-knowledge. Insecure managers are a blight.

      We need to manage ourselves first. An unpopular opinion that doesn't sell many books.

    2. Re:If it were easy by Ol+Olsoc · · Score: 5, Funny

      Honesty is a biggie.

      And once you can fake that, you got it made.

      --
      The shepherds did so well protecting the flock that the sheep no longer believed that wolves existed.
    3. Re:If it were easy by Livius · · Score: 4, Insightful

      But very few people can fake that for their entire career.

      Actually being honest is less work. It just takes a minimum of courage.

    4. Re:If it were easy by Kjella · · Score: 4, Informative

      Everyone would be great at it. Anyone that thinks you can find the secrets to being a good anything in a couple of paragraphs, just doesn't know very much about the topic.

      I don't think you can learn the how in a few paragraphs, but sometimes you can learn about what developers expect from a manager. Let's face it, a lot of managers just ended up there by being put in charge and is learning by doing whatever they think a manager should be doing. And sometimes not even that because they're still techs at heart and want to dive into problems, not manage them. Others have just gone the management 101 school and don't have anything but generic theory.

      In particular, there's a massive difference between production work and creative work when it comes to estimates. If I need to get my car repaired or order catering, I expect a rather good time and cost estimate because it's standardized inputs and known quantities of work, at least for the most part. And you can fairly easily scale production with overtime, extra shifts, rush orders etc. to meet deadlines. And if a part is not in stock or you burn the cake there's a fairly standard and known fix.

      Most time I've wasted with management is discussing timelines or estimates that are as good as it gets and they're not going to get better by repeating the question. In the end you just fudge it up by a factor of x you hope is big enough and give them a number, because that's what they wanted. This is particularly true when there's bugs or problems that I really don't know where is, what the root cause is, how long it'll take to fix or even if I can fix it since it's in third party code/systems/tools.

      The best managers understand enough about computers to know this variation is natural and are pragmatic about working with it and working around issues when they arise. Those who come from a production industry seem to think you can beat a square peg into a round hole and act like I'm in the one being intentionally obtuse. "Can you do it man, yes or no?" which makes sense if you got a painter with three walls left to paint. It does fuck all when you got a developer who has no idea what to fix, but it's probably a one-liner when he finds it.

      Furthermore, those who don't understand that you want me out of that meeting and working on plan A - getting it done - while you work on a plan B, what to do if it doesn't get done on time or fixed in a reasonable time. I've had to sit through rescheduling sessions which were almost as pointless as the original scheduling sessions, the problem is that you don't have good data on how long it'll take. And rather than accept that you just double down on the developers and their poor estimating ability and demand that this time, you need correct estimates. In their eyes, we're the hopeless ones...

      --
      Live today, because you never know what tomorrow brings
  2. My approach by CaptainJeff · · Score: 4, Insightful

    Here is my approach to managing engineers.

    1. Get the right people.
    2. Get the right work.
    3. Get obstacles out of the people's way.
    4. Get myself our of the people's way.

  3. I'd make at least one change by Registered+Coward+v2 · · Score: 4, Interesting

    I would disagree with "Which means: find out what kind of important work your developers dislike the most, and do it for them." I would say:

    "Find out what non-essential stuff is interfering with real work and protect them from it."

    There often is work that is important that must be done but is not exactly fun, such as documenting code, helping tech writers prepare user manuals, listening to users and getting feedback on the UI, etc. Developers may dislike that work but they are the ones that need to be involved with it or do it. Sometimes it's the manager's job to point out stuff that needs to be done and find a way to get it done; even if it isn't what they want to do.

    --
    I'm a consultant - I convert gibberish into cash-flow.
  4. My best manager by Lorens · · Score: 4, Interesting

    told me that his job was only partially to tell me what to do (because I should know most of it) and mostly to shield me from the bureaucrap so that I could concentrate on doing it. I try to emulate that.

    Two other nuggets I aim for:

    - a good manager tells his people what *his* objectives are, and explains to them how that translates into the objectives he's giving them.

    - there are different kinds of management for different people, and a good manager must adapt. A newbie or an incompetent *needs* micromanaging (but beware of giving the impression of thinking either one is incompetent). As they get older/wiser/more experienced the manager can go more and more hands-off, until with a senior engineer/whatever the manager should be able to just discuss strategy and budget and priorities and such.

  5. Advice by Anonymous Coward · · Score: 5, Insightful

    Two of the SDEs I manage told me in their last review I was the best boss they've ever had. Here is my advice:

    1) Do not judge anyone on anything except on whether they get their job done. If someone quickly does a good job, I don't give a shit whether they take the rest of the day off.
    2) Lead by example. Do the things you want your guys to do. That means the hard things.
    3) Imagine your team as a machine. You're the oil. Be where there is the most friction and smooth it out.
    4) Sacrifice yourself for your team. If you can't get a reward from the company for someone who deserves it, buy it yourself.
    5) Understand the perspective of your boss's boss, and explain it often to the team.
    6) Say you don't know when you don't know.
    7) Fight for raises and bonuses.
    8) Don't talk as a boss most of the time, but when you do, have a good reason to.

    These guys worked on the project that won us a nomination by a government agency for Small Business of the Year. The morale earned from being a good boss repays itself in improved productivity and reduced turnover. Plus you make friends for life. It pays to be a good boss.

  6. Re:...and SHOW GRATITUDE! by jblues · · Score: 4, Funny

    Reminds me of the time years ago, I wound up in a bank. We got this company-wide email from someone in senior management, I don't remember who. Maybe the CEO or CTO. I read something like: "We've had a management consultancy in this week, and and their advice was that productivity could improve if staff were recognized and shown gratitude for their contributions. So thankyou!". . . . And that was the end of that.

    --
    If it acquires resources on instantiation like a duck, then its a shared_ptr<Duck>