Slashdot Mirror


Ask Slashdot: How Can You Manage Developers Distributed Across Multiple Projects?

An anonymous Slashdot reader asks whether it's possible to manage a "distributed" team of software developers in different locations who are all assigned to different projects, each with their own independent project managers: All embedded software engineers from multiple offices in different countries are now being reorganized into this new distributed team [with] better control of its own development practices, processes and tools, since everyone is working in embedded software...

While there's extensive material throughout the Internet on best practices for managing distributed teams, it seems to either take an agile perspective, the project manager's perspective or be otherwise based on the assumption that everyone in the team are working in the same project. In my case, I'd be managing a distributed team of developers all assigned to different projects. How can I build cohesion, alignment and trust for my team of embedded software developers in this new three-dimensional distributed matrix organization?

Anyone have any relevant experiences to share with distributed teams or "matrix" organizations? Leave your answers in the comments. How can you manage developers who are all distributed across multiple projects?

65 of 112 comments (clear)

  1. One approach by jetkust · · Score: 4, Interesting

    Whoever mentions the word "Agile", do the opposite of what they say.

    1. Re:One approach by fintux · · Score: 5, Funny

      Whoever mentions the word "Agile", do the opposite of what they say.

      So... Should this advice be followed or not? The A-word was mentioned, after all...

    2. Re:One approach by Anonymous Coward · · Score: 1

      Ah yes, the strategy of listing all strategies as Agile or not-Agile, in which list do we put such as strategy?

    3. Re:One approach by MightyYar · · Score: 5, Insightful

      You probably have a management team who actually understands the intent of agile and crafted a system which embraces the spirit while working well with your particular needs. Many just rename their round-robin micromanagement meetings as "scrums" (only they force everyone to stand the whole time) and re-badge their glacial feature planning process as "stories". Basically, they read the books, adopt the terminology, and ignore the parts that don't mesh with the practice they already like. So, agile in name only and of course all the staff hate it.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    4. Re:One approach by Junta · · Score: 2

      Experience can vary greatly, and overwhelmingly whatever the 'trendy' words used in conjunction with an alleged process approach will be overwhelmingly found in crappy projects, because the majority of projects are crappy, and the majority of project management likes to follow trends.

      At the end of the day, any group will distort whatever stated 'brand name' methodology for project management to describe the way they were going to do things anyway. Over my career I've learned that it's about futile to gauge how a process is going to work based on what branding they use to describe it. I have learned that eagerness to use a popular set of terminology *frequently* indicates project management that doesn't really understand what they are doing (not always). As such, my first reaction to someone saying 'Agile' (big A) is skepticism. Not because of the qualities of it in theory, but because of human behavior in practice.

      So just because someone clearly rolls their eyes at media mention of Agile or project management mention of Agile, do not presume they are some backwards person avoiding SCM (who the hell avoids SCM anyway?) who doesn't document code, who wants to hide behind another process (Waterfall) because they are not doing work. It's far more likely they are a bit jaded from years of real-world experience. Note that the same criticisms of how Waterfall worked in practice, I see happening in nominally 'Agile' projects, slipping dates, misunderstanding the requirements, losing perspective, generally failing to deliver usable projects. Some folks think some magical way of describing a process will fix people, the problem is that the people will on average do things poorly and interpret guidance on process as they see it fitting their personal ideas of how things should get done.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    5. Re: One approach by tysonedwards · · Score: 1

      What about the odd time of double references? I feel like we're going to need a flowchart before too long defining who said what, when, and the dependency trees of their arguments.

      --
      Thirty four characters live here.
    6. Re:One approach by Junta · · Score: 2

      Agreed. Agile is the victim of it's own popularity. It sounds good to say 'Agile' so *everyone* will call their crap Agile. When there came into being 'Agile' seminars, certifications and specific tools, the whole point was lost as it transitioned to mainstream usage.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    7. Re: One approach by plopez · · Score: 1

      I think we need a video conference on this. WHat itme is good for half a dozen teams located across 6 time zones?

      --
      putting the 'B' in LGBTQ+
    8. Re:One approach by superwiz · · Score: 2

      Holy shit... so this is what it's like if you mix Mad Men with Mean Girls. The war of passive aggressive project managers.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    9. Re:One approach by luis_a_espinal · · Score: 1

      Whoever mentions the word "Agile", do the opposite of what they say.

      In other words, don't do unit testing.

    10. Re: One approach by Darinbob · · Score: 1

      You think we should jump straight into this? Why not have a planning meeting for the video conference meeting?

    11. Re:One approach by Darinbob · · Score: 1

      When there are professional Agile trainers then that should have served as a warning sign to everyone that it's a potential scam.

    12. Re:One approach by Gr8Apes · · Score: 1

      I'm in a 100+ person project with people in two countries. Agile works for us.

      Then you're doing it wrong.

      --
      The cesspool just got a check and balance.
    13. Re: One approach by plopez · · Score: 1

      Whoa! not so fast. Don't you think we a pre-planning agenda framing conference call?

      --
      putting the 'B' in LGBTQ+
    14. Re: One approach by gzuckier · · Score: 1

      Whoa! not so fast. Don't you think we a pre-planning agenda framing conference call?

      somebody needs to document an agenda for the meeting to establish the goals of the pre-planning agenda framing conference call, that we can have a meeting to discuss. probably need to meet in person to ensure we get it right, rather than start off on the wrong foot.

      --
      Star Trek transporters are just 3d printers.
    15. Re:One approach by gzuckier · · Score: 1

      Holy shit... so this is what it's like if you mix Mad Men with Mean Girls. The war of passive aggressive project managers.

      Girly Men!

      --
      Star Trek transporters are just 3d printers.
  2. Please state the nature of your emergency. by Barryke · · Score: 2

    "Please state the nature of your emergency." (EMH mark 2, Startrek Voyager)

    Hello AC, welcome to slashoverflow.

    The question as formulated now is vague. There is a proposed solution (managing) but no problem stated that needs solving.
    And what you have tried to resolve this problem.

    --
    Hivemind harvest in progress..
    1. Re:Please state the nature of your emergency. by Barryke · · Score: 1

      After reading the article again i see:

      > build cohesion, alignment and trust for my team of embedded software developers in this new three-dimensional distributed matrix organization

      I say create a common enemy for those people, and then use that to steer them away from certain things. Fear and anger can accomplish great things together. So any kind of management would do, i guess. As for the three-dimensional distributed matrix organization, i have no idea. Perhaps look into the Borg.

      --
      Hivemind harvest in progress..
    2. Re:Please state the nature of your emergency. by gzuckier · · Score: 1

      After reading the article again i see:

      > build cohesion, alignment and trust for my team of embedded software developers in this new three-dimensional distributed matrix organization

      I say create a common enemy for those people, and then use that to steer them away from certain things. Fear and anger can accomplish great things together. So any kind of management would do, i guess. As for the three-dimensional distributed matrix organization, i have no idea. Perhaps look into the Borg.

      i for one welcome the new three-dimensional masters of Flatland.

      --
      Star Trek transporters are just 3d printers.
  3. You don't even know 'em yet. Quit handwringing. by Anonymous Coward · · Score: 1

    Once they're working for you and you understand your developers, either you'll figure out something, or you won't.

    Quit trying to stuff them into boxes before you even know what makes them tick.

    1. Re:You don't even know 'em yet. Quit handwringing. by gzuckier · · Score: 1

      Once they're working for you and you understand your developers, either you'll figure out something, or you won't.

      Quit trying to stuff them into boxes before you even know what makes them tick.

      management technique most popular; stuff them into boxes before you even know what makes them tick; then when you find out what makes them tick, nail the box shut.

      --
      Star Trek transporters are just 3d printers.
  4. You can't by undulato · · Score: 3, Interesting

    Trust only comes through stability. Developers with nothing in common and different project managers sounds like a recipe for disaster and your role sounds like a potential nightmare.

    1. Re:You can't by TheBogBrushZone · · Score: 1

      As someone who works in such a team, I generally agree. We have a hierarchical reviewer/reviewee structure that allows us to manage performance reviews in a reasonable (if enormously time-consuming) way and enough communication methods to create a sense of community for those willing to get involved but trying to impose common tooling, processes and standards across close to 100 developers working in different locations on different projects for different customers with different attitudes and requirements is like trying to herd cats by standing still and asking them nicely to get in the corner, please. We have a team "ethos" but anything less abstract is defined by each project.

      --
      And behold, a command prompt and he who sat upon it, his name was shutdown and -h 3:11 followed with him
    2. Re:You can't by Anonymous Coward · · Score: 1

      Trust only comes through stability. Developers with nothing in common and different project managers sounds like a recipe for disaster and your role sounds like a potential nightmare.

      What you are assuming is that the Matrix manager is key in the role of these people's work. In fact the key leaders will remain the project managers because they have the money and customers and they are delivering the real results to real people. What is the point then you ask?

      Well, what this guy has to do is to find something useful. The basic expectation is that there will be


      • money saving because projects won't have to keep people idle
      • happier employees because they won't feel that their work is dependent on only one project
        more work done because projects can use spare time from people who would otherwise be sitting idle

      So the most important thing is to eat humble pie and go along to each of the project managers and say something like "hi there - I know you might feel you lost your people, but I'm here to make sure that doesn't happen. I'll make sure that if you need them and reserve them (you might not want to say this directly, but it has to be true: and agree to pay for them even if you don't use them when you reserved them) the people you need will be available. Then ask the project managers what you can do for them to help.

      Once people trust you to deliver then what they had already, then you can start to improve things.


      • save project managers time by always knowing who is has free time and how good they are
      • arrange for people to learn from each other. Know which technologies each team is thinking about and who already has it.
        work out which projects are interesting and work well and reward people by getting them a chance to work with those projects

      Any job is a "potential nightmare". Done right, a job like this can be a great fun, a real opportunity to travel the world at your pleasure and something which makes almost eveyone happy.

      N.B. Remember project managers are always hopelessly overoptimistic with their projection of how many people they need if they don't have to pay for it (which means you end up with people sitting idle) and hopelessly underoptimistic if they do have to pay for it (which means they end up screaming for people). You have to arrange this somehow so it doesn't come back and bite you. Good / "you scratch my back and I'll scratch yours" / relations with the PMs will help. As will sensible senior management who understand the difference between risk and reality, but in the end it's about balancing and finding things for people to do when work disappears or is delayed and finding work to cancel or emergency contractors when everything suddenly becomes ultra-urgent. Don't get caught out too badly and don't let the PMs dump the blame on you for problems.

    3. Re:You can't by TheSunborn · · Score: 2

      What is the reason that this is organised as one team instead of multiple teams?

      Developers working in different locations on different projects for different customers sounds like the definition of multiple teams to me.
       

    4. Re:You can't by TheBogBrushZone · · Score: 1

      People are members of more than one team at any given time. We have project teams and we have discipline/community teams (e.g. a .NET developer team, a JVM developer team, an architect team, a BA team etc.) and each is used for the purposes that make sense such as managing training, pay and performance across all of the comparable developers instead of a single project team.

      --
      And behold, a command prompt and he who sat upon it, his name was shutdown and -h 3:11 followed with him
    5. Re:You can't by gzuckier · · Score: 1

      What is the reason that this is organised as one team instead of multiple teams?

      Developers working in different locations on different projects for different customers sounds like the definition of multiple teams to me.

      i was thinking the other day..... about dogsled racing. you know like the iditarod. that started me wondering whether there was a top speed record for dogsleds, that started me thinking about designing a world land speed record dogsled.
      first think i thought of in the design: hook up a hundred dogs.

      --
      Star Trek transporters are just 3d printers.
  5. Suicide by Dog-Cow · · Score: 2, Interesting

    With the number of buzzwords you've spewed into the summary, you should just drown yourself in a nearby body of water.

    If each team is doing something different, why the fuck do you need to "build cohesion"? Are you going to glue them together?

  6. No team by WPIDalamar · · Score: 4, Insightful

    You don't have a team of developers. You have a bunch of single-person teams. Don't try to manage it as a team.

    1. Re:No team by swillden · · Score: 1

      You don't have a team of developers. You have a bunch of single-person teams. Don't try to manage it as a team.

      I disagree. Even if they're working on different projects, if they're working on similar sorts of things -- similar platforms, tools, problems, etc. -- there's value in collaboration. Cross-pollination of design ideas, factoring out of common, reusable code components, sharing of ideas about what makes code better and more maintainable, collaborative problem solving -- there's a lot of value to be found in applying multiple brains and viewpoints.

      There's also significant strategic value in ensuring that each of those one-person projects isn't known only by one person. Sharing knowledge around enables you to shift resources when it's useful, and helps to ensure that if something bad happens to one of your people someone else has a chance of picking the project up in a reasonable time frame.

      In addition, most (not all, mind you) people like a little camaraderie at work. Building a sense of teamwork is good for morale. Even people who are pretty strongly introverted like a little interaction with like-minded people during their day.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    2. Re:No team by oneiros27 · · Score: 1

      I worked on a project that was similar to what was described -- four of us all at different institutions, working on a single project.

      The management mostly left us alone, and we got the project done. As we're in a more 'maintenance' phase now, we just have annual face-to-face meetings to hash out what we think needs to be done and how long it'd take to do it, and then we present it to the 'steering committee' (management / scientists who use the software) who decide what we should or shouldn't focus on for the next year.

      For the most part, the software works because we figured out how to break it down into parts, what the APIs needed to be between the different parts, and then we coordinated between the programmers who was responsible for each parts.

      After we were a couple of years into the project, we finally got it cleared through all of the institutions (some of us work for the government) to use IM ... so we just hang out in a channel to chat & let people know if we're seeing problems, making changes, etc.

      Unfortunately, the project got a bit derailed a few years back, when the same group plus a few other people got stuck with maintenance of another project that was written by an outside group. (and we're not allowed to fork it) ... and we've wasted so much time on that second project that we don't have the time (or remaining brain cells) left to get much work done on the first one.

      Anyway ... my point is -- if you have a good group of developers, you should be able to just point them in the right direction, and let them work ... don't try to 'manage' them any more than you have to.

      --
      Build it, and they will come^Hplain.
  7. Hands off and let them do their job. by Lumpy · · Score: 4, Insightful

    Honestly, let them do their job. if you want to be a good mid manager above the other managers. you let them do their job and you act as a "what do you need" guy that simply get them what they need and keep the fuck out of the way 99% of the time.

    --
    Do not look at laser with remaining good eye.
    1. Re:Hands off and let them do their job. by Lumpy · · Score: 2

      Tell upper management to fuck themselves. AS long as you can show a net positive they can STFU.
      The problem today is people refuse to stand up for their work and listen to these gasbags that really are only trying to justify their position. Executives need to stay on their floor and talk to customers. and let the people that do actual work do their job.

      --
      Do not look at laser with remaining good eye.
    2. Re:Hands off and let them do their job. by clodney · · Score: 1

      Honestly, let them do their job. if you want to be a good mid manager above the other managers. you let them do their job and you act as a "what do you need" guy that simply get them what they need and keep the fuck out of the way 99% of the time.

      Totally agree. The role as you defined it is pure staff management. So the sort of thing you do:
      * make sure that your developers have what they need in terms of equipment, tools, software, etc.
      * ensure that they have the necessary training and opportunity to get training when required (or slack time for self study)
      * don't let the PMs bully them into false estimates, or put them in death march mode
      * work with the PMs to find out if some of your team members aren't getting it done, and take action
      * make sure the team members are reasonably happy with their assignments, and when they are not, intervene before you lose people.
      * listen to your team members when they tell you that their project teams are dysfunctional, and work with the PMs to try and fix it, or at worst get your people out of a toxic environment.

      This is not a simple job. Most engineering managers come from a project mentality, where you focus on completing the project, and devote your energies to troubleshooting that. But here you are divorced from the project side, so you have to focus on more of the people management aspects of the job.

  8. Three-dimensional? Huh? by tomhath · · Score: 2

    How can I build cohesion, alignment and trust for my team of embedded software developers in this new three-dimensional distributed matrix organization?

    It's a traditional matrix, nothing special about it. Manage each team individually the same as any other development team;, the fact that they're matrixed is irrelevant. Occasionally (maybe once per quarter) have an all-hands meeting and have each team give a 3 minute presentation on what it's doing so people have an idea what else is going on, same as any other large development organization.

    1. Re:Three-dimensional? Huh? by LordWabbit2 · · Score: 2

      Occasionally (maybe once per quarter) have an all-hands meeting and have each team give a 3 minute presentation on what it's doing so people have an idea what else is going on, same as any other large development organization.

      I could not agree more!!!
      Lots of companies I have worked in seem to treat everything as a secret, or just have really bad communication at any rate. You find out about things happening through the grapevine, and all the broken telephone crap that comes with that.

      --
      There are three kinds of falsehood: the first is a 'fib,' the second is a downright lie, and the third is statistics.
  9. Some advice from experience by Anonymous Coward · · Score: 5, Informative

    I've been in this situation before, and in some ways still am. Here are a couple tips:
    - This matrixed team structure was likely put in place because the company thought there would be advantages to having these developers interacting even if they're not working on the same project. Get together, maybe once a month, and have people present on the project they're working on. It'll help give everyone visibility into everyone else's work, give some practice presenting, and provide a great opportunity to share best practices.
    - More tactically, provide some social platform for the team interact and ask each other questions. We use Yammer, but a Slack channel would probably be effective too.
    - You're probably responsible for some level of coaching/mentoring for your team even though you're not directly working with them. Meet with them individually and regularly to find out how they're doing and how you can help them. You'll also want to set up some regular check-ins with their project managers to get their perspective.
    - Finally, you may he responsible for setting technical direction and standards for the team. Unless you're highly revered and have already earned a ton of respect for this capacity, you'll need to build some consensus rather than ruling by decree. Seek advice and feedback from your senior team members before presenting your approaches.

    Best of luck!

  10. Encourage more Autonomy by krotscheck · · Score: 2

    I work on a very similar team, about 25 people, distributed globally, all contributing to various Open Source projects, all with different processes, governance, etc. Our managers focus on handling the management and human resources bits, ensuring that I have what I need to do my job. Most everything else; time management, development process, tooling, location... even travel, etc - is left up to me.

    I personally feel that the key to the team is the core belief that everyone's an adult, and can manage themselves and their own work. Managers aren't authoritarian, they're coaches. We're all encouraged to be strategically minded, though a lot of that is taught and socialized in the team's always-on IRC channel. The team was founded by adapting the Valve handbook, throwing out all the things that require people to be colocated. Other than that, the unique dynamic of autonomy, mutual respect, support, and the freedom to ask any question - no matter how dumb it may seem at the time - isn't something I've ever seen reproduced elsewhere.

    --
    This signature can save you $400 on your car insurance!
    1. Re:Encourage more Autonomy by Cytotoxic · · Score: 1

      This matches my experience.

      One of the big things we worked on to make disparate parts work together was facilitating communication. We encouraged senior guys to coach-up more junior guys - offering suggestions and such - but we also encouraged just general communication. So if they felt like having chat sessions about last night's episode and wasting a couple of minutes, nobody said anything. This helps turn "a bunch of guys" into a team.

      The team part is important when the crap hits the fan. There's always a deadline, or a critical bug, or something that can put stress on the team and lead to finger pointing. But with team cohesion you have a better chance of everyone pulling together and fixing the problem. We rarely had bugs go unstomped for more than a couple of hours because junior guys felt comfortable asking for help and senior guys didn't feel it was necessary to kick someone who was struggling.

      Of course the other big part of the formula is hiring the right sort of people. Hire a jackass and he's gonna be a jackass in the middle of your team.

  11. Three Dimensions? by Carcass666 · · Score: 4, Interesting

    "I'd be managing a distributed team of developers all assigned to different projects." This isn't necessarily a three dimensions challenge, and you should keep things as simple as possible. People with multiple bosses will often please none of them. If there are not clear lines of accountability and definitions of success, your only hope of this thing not devolving in a complete fustercluck will be the coders who find your projects interesting and don't have families to raise.

    You mentioned you "independent project managers". If you are thinking about the Scrum flavor of Agile specifically but have project managers you are likely doing something wrong. More important is product ownership. "Agile" development success largely depends upon decisions being made on a daily basis. If your product owners are not engaged on a daily basis directly with the developers (even when cross-timezone meetings are painful) you're doomed.

    Find your local leaders, the people who get things done. You need people on the ground who understand the culture and trust you enough to let you know what is really going on. It will be far easier to build these relationships if you regularly travel and engage with them. Do not delegate this part of your job, you are not going to be able to cultivate your leaders over video conferencing. People behave very differently in-person.

    Oh, and keep your staff off of The Register, which has devolved into a DevOps cheerleading site - nothing good will come of it

  12. communication by Necroloth · · Score: 1

    I work in a matrix team where we look after functions but across multiple projects. Certain people in the team focus on specific projects but what try to maintain is the communication within our team for issues across the various projects as more often than not, we have common or similar issues and if someone has a resolution, it may help on other projects too. It's also useful as a lessons-learned sharing so that if others face something similar in the future, they have documents to refer back to. So make sure that even if you have people working on multiple projects, they talk to each other and share best practices etc

  13. Two masters by MrKaos · · Score: 1

    You cannot serve.

    --
    My ism, it's full of beliefs.
  14. Re:Plenty of experience by sh00z · · Score: 5, Insightful

    Here's a clue: you're not managing them. You might be their "supervisor," assigning them to projects, signing their timesheets, etc., but this is a simple matrix structure, and the Project Managers are managing them. You should be working with these PM's to hear about performance issues or praise, training requirements, vacation plans, etc.

  15. Be a good project manager by Anonymous Coward · · Score: 1

    How can I build cohesion, alignment and trust for my team of embedded software developers in this new three-dimensional distributed matrix organization?

    - Build plenty of slack into the project plan for when (not if - when) things go wrong.
    - Don't put forth unrealistic commitments.
    - Allocate their time accordingly.

    each with their own independent project managers

    Good project managers are worth their weight in gold. Crappy ones are worth their weight in lead drowning out a project. Really crappy ones will drag down other projects as well as their own. That is going to be your biggest risk - not the developers. Make sure you have a handle on your project managers and mitigate that risk first. Then focus on your developers.

  16. What are your goals? by ClayDowling · · Score: 1

    As a manager for multiple developers all working on different projects, for different product owners, what is the benefit that you're trying to bring to these developers? If you can answer that, we can probably come up with some things you can do to reach your goals.

    1. Re: What are your goals? by felixrising · · Score: 1

      I think there is a world of difference between a manager and a team leader, and in most organisations there is only really one manager, the CEO, everyone else is leading teams and taking resistibility for various roles in support of the manager. As a team leader you should be supporting your team in the first order to be the best they can, not crushing their spirits or micromanaging their every action. People respond better to trust, autonomy and knowledge that what they're doing is valuable and necessary. Care about your team, ask them what they need and give it to them so they can get on with the job at hand.

    2. Re:What are your goals? by raymorris · · Score: 1

      Indeed it sounds like OP's job isn't defined enough that solutions can be proposed, first problems / obstacles need to be identified. Talk to the people and find out what issues there are, what makes their job more difficult. Then look at how you can help the situation.

      Others have mentioned avoid micro-managing, treat people as adults. That's important.

      One thing the OP can look at is the maturity of development process and provide resources and training to improve it, preferably resources and training that apply to more than one group. By maturity I mean things like:
      Is source control used consistently?
      Are the development and deployment processes well documented?
      Are testing good procedures in place before a product goes to production?
      Do each team even HAVE devel, test, and production systems?
      Is code review / peer review used?
      Are there WORTHWHILE metrics to measure progress?

      If documentation of processes is lacking, you can set up a wiki or some other resource that makes it easy to create and use documentation. If source control is chaotic you can set up a robust, easy-to-use source control system. For example, we use Kiln to provide a searchable web based GUI which helps explore git and Mercurial repos.

  17. Some suggestions by swillden · · Score: 4, Insightful

    First, if you truly have a bunch of single-person projects, you have an additional problem that you don't appear to have recognized: You have multiple single points of failure. I often use the notion of a "bus metric" which is "the number of people who have to be hit by a bus to cause serious problems for the organization". Your bus metric is 1, but it's a little worse than that, because you have several single individuals whose unavailability would cause problems.

    This second problem actually points to part of my recommended solution: If you want to build team cohesion, you need to break down the silos between the projects and get your engineers working together more. At the same time, you don't want to impose a lot of process that will slow them down.

    Some concrete suggestions (in no particular order):

    1. Do code reviews. In fact, make them mandatory. In general, I'm against mandating much of anything but this is an exception because it is so extremely valuable. Mandate that every piece of code checked into the source repository must have been reviewed by someone other than the author. To make this effective and not an obstacle to getting work done, though, you need tool support. Something akin to Gerrit. Do not attempt to require code reviews until the infrastructure is in place, and once it is, ease into it and make sure everything is working well and everyone is comfortable with the tools before you mandate the reviews. However, be clear that the intention is to mandate them.

    2. Do design reviews. Similar story to code reviews, except that design reviews should be attended by the entire team, or at least a largish subset. Again, good tooling is helpful. In this case using something like Google Docs or Office 360 for the design docs and then a good teleconference or, better yet, video conference solution for the review meeting. In terms of breaking down silos, cross-project design reviews will be hugely valuable.

    3. Do standups via teleconference or (better yet) video conference. They don't need to be daily, and if your team is all working on different things they probably shouldn't be daily. Once a week for 15 minutes is a good place to start, just go around the "room" and have everyone briefly describe what they're working on and what challenges they're having. It's the discussion of challenges that make this valuable, because others will pipe up with their suggestions. Again, before you do this make sure that your infrastructure is in place and working *well*. Also, keep a close eye on how this is scaling. Beyond a certain number of participants it breaks down and you need to split it up.

    4. Encourage lots of random, ad-hoc communication among the team. Again, good tools -- VC and shared docs, mostly, but you also need good chat and email systems -- are important for effective remote collaboration. As for how to encourage it, one good way is for you to get a solid understanding of what everyone is good at and when you have one-on-one meetings with them (which you should be doing regularly) look for opportunities to suggest collaborations.

    5. Set up face-to-face get-togethers as frequently as you can, within the constraints of time and budget. Ensure that these contain equal parts business-related discussion of goals, plans, challenges, etc., and chances for people to do fun stuff together -- but make sure that you find activities that everyone can participate in and enjoy. IMO, you should avoid those obnoxious "team-building" programs.

    6. If you can, consider getting budget for an additional engineer to focus on common tooling. The goal isn't to force all of your engineers into a common toolset against their will, but to build up some useful common tooling that all of them find valuable. Source control, code review system, continuous integration, automated testing, etc. This tool engineer will become another central point that everyone communicates with regularly (in addition to you).

    7

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  18. Don't by flink · · Score: 1

    If you've hired people who need management into that situation, you've hired the wrong people. You need smart people with good time management skills who are not assholes and can work together like grownups without any oversight despite whatever personal differences they may have. They should also be humble enough to ask their peers for help when they are in over their head on something.

    Good luck!

  19. Employ AI by einar.petersen · · Score: 1

    Hello there, may I suggest looking seriously at using systems like Watson or other AI systems to learn project management concepts and project tracking, this way you will be freeing yourself from the hassle, you can automate virtually every aspect of your project management processes and make it possible for a decision maker like yourself, to make informed decisions regarding team member, different development methods and other project and business related matters based on best practise methodology for each project type and real world learning regarding the dynamics of project types and each individual project....

    --
    MS, ALS, Aphasia ? http://globability.org - Me http://einarpetersen.com
  20. Re:Easy solution by bickerdyke · · Score: 1

    Oh, hi Mervin!
    Nice to see you here. How are things in your new job?

    --
    bickerdyke
  21. Re:Use git by plopez · · Score: 1

    And MongoDB, Agile, Ruby, Python, and Python.

    --
    putting the 'B' in LGBTQ+
  22. Re:Don't. by plopez · · Score: 1

    How?

    --
    putting the 'B' in LGBTQ+
  23. Sounds like a "coding factory" by ErichTheRed · · Score: 1

    I work for a medium sized multinational, and the development teams I work with are exactly as you describe. (I'm in systems integration, so I get to make their output work in the real world.) Many of the senior managers in our company have a professional services background, so development is run like a typical offshore body shop, even when the developers are local. Developers are plugged into a project and disconnected when done like they're working for one of the outsourcing code factories.

    The short answer is that it's very difficult to manage developers pulled in a million different directions. Agile is definitely in use here, but the reality is that the nature of our work means that developers actually need to understand a little more than a code specification to do the work. They also need to stay involved after writing their code for that reason, but are often pulled off projects because someone shouts loudly enough or is politically connected. As a result, my experience talking with them is that no one ever feels they can get anything done to a reasonable degree before getting unplugged and reconnected to something else. Project management isn't the best around here as a rule, so there's constant emergencies.

    When you're "matrix managed," the actual manager is pretty much responsible for your performance review. The rest of the management direction comes from project managers that range from good to extraordinarily bad. I know I wouldn't want to do dev work in that environment, nor would I ever in a million years want a PM job. But, with DevOps being a thing now, I imagine it's just around the corner for us too.

  24. don't manage the devs manage the PMs by trybywrench · · Score: 1

    Manage the PMs, let them manage the devs.

    --
    I came to the datacenter drunk with a fake ID, don't you want to be just like me?
  25. Re:Plenty of experience by plopez · · Score: 1

    Agile doesn't work for us; 7 teams time zones 12 hours out in some cases (i.e' half way across the globe), 300 employees (developers, testers, managers, support teams, architects etc.). A couple of the teams were part of other companies which were acquaired and their companies networks were pasted into ours and so we have large numbers of hops and so lags which makes downloads across teams of artifacts difficult at times (1.5. day sofr a standard completely provision and integrated application).

    Due to time zone differences communications is hard and constant close communication is the lynch pin of Agile. I don't think Agile scales well or works well with large projects. A water fall with a 3 month release schedule and restricted scope works better, IMO.

    --
    putting the 'B' in LGBTQ+
  26. suggestions that work by RaginPM · · Score: 1

    Managing such this type of team is no different than any other complex distributed virtual team. 1) Governance: get all the teams working from a single sheet of strategic music (HOW them implement is their decision) otherwise you will continue to experience too much organizational (team-to-team entropy). 2) Program/cross-team Trust: Trust is built through face-to-face meetings (early on) and takes time - scheduling either face-to-face meetings or conferences on some regular basis (the more distant the teams the fewer you'll be able to do physically), can also leverage video meeting technologies (i.e. vidyo, netmeeting, skype for business, skype, etc.) on a more frequent basis. To ensure folks are all working on same plan, the lead PM should implement the "Master Kanban" board from which all sub-teams driver their Kanbans/Sprints. RRP's should be frequent, regular and scheduled so there are no surprises. 3) Accountability: hold folks accountable, whether it's good stuff or bad... communicates that no one is special. Definitely cheer the good and definitely help those who aren't cutting it to improve but if they continue to not deliver you GOT to deal with it. 4) Master repo: maintain a master repo (used by testing & deployment) that pulls from all development repo's (sub repo's constructed by what makes most sense). Ensure you have rules set accordingly for pushes such that ALL pushes are tested prior to allowing that push to be integrated onto the master trunk version. 5) Continuous Build/Test: gospel!!! must have or else!!! 6) Design review whenever possible (doesn't have to be crazy, stickies on the wall, take a picture, quick document the workflow/etc.) just so everyone understands the goal, the intent and the initial roadmap. 7) Code reviews: must do prior to any push to master repo 8) Code base: be smart, be practical, this isn't supposed to be a death march but have a test(s) for each capability/function to verify it works as intended/designed 9) Management/PM's quiet in development team's RRP 10) Management/PM's have their own separate planning cycle and stand-ups that don't involve developers 11) Owners/Product Managers: push back on management but ALSO on development teams to challenge the initial response... Management always wants more than can be delivered and developers always cry that too much too soon.... Truth is in the middle. 12) If this is a long-term gig; have regular large conferences/team meetings where folks get to show-off their deliverables and how they were successful. Good work deserves recognition. Others can learn and improve. 13) Roles & Responsibilities: ensure that everyone assigned to the project/program understands their role & responsibility (foundational for accountability). For developers, there should be a common Developer's Agreement (deal with IP, etc.) for the overall project but there should/could be a similar agreement for each company/contractor if you have multiple teams working a single company/contractor's code. 14) Agreements: have your NDA's and IP management agreements in place before the work starts

  27. one approach by superwiz · · Score: 1

    And, to be honest, I don't recommend it, but it doesn't sound like you have any good options, so it you may as well try a better bad option. Base it on internal billing. Since the project managers will prioritize based on their projects, the priorities will be inherently heterogeneous. You need a homogenizing metric and that's the purpose which money serves.

    --
    Any guest worker system is indistinguishable from indentured servitude.
  28. Highly Inefficient by Rob+Riggs · · Score: 1

    First off, this is a good question, since I see this happening more and more.

    It can be done, it is just highly inefficient from a management perspective. More of the manager's time will be spent soliciting and providing feedback. Without being there in person, if there is a performance problem, it may be hard to tell what the political situation on the ground is like, and whether the team dynamics, developer or PM is at fault for any project-related issues that come up. And there is no substitute for in-person meetings when it comes to providing reviews, feedback and coaching.

    If you are a manager in this situation expect to travel quite a bit in order to meet with your team members (at least quarterly) and their local co-workers and PMs. If, by chance, your company does not permit that sort of travel or you do not want to travel, I recommend finding new employment. It is not likely to work well.

    I would not want to manage in that sort of environment unless I understood what problems they are trying to solve and was convinced that it was the most efficient way to solve it. The real key question for me has always been "are they paying me enough to put up with this shit?" It's going to be a lot more shit to deal with. You should expect to be compensated for it.

    --
    the growth in cynicism and rebellion has not been without cause
  29. Are you managing the people or the project? by spatley · · Score: 1

    If you are a Project Manager, sure Agile, Kanban, Scrum, lots of good ways to make sure that people can say they are going to do something, say they did it, and show it to somebody else.

    If you are a Development Manager, your first questions should be: Do I know what I expect out of my people? Do my people know what I expect out of them. Do I know how to look at their work and tell if it is any good?

    I have managed people across geography and timezones on matrixed work. We did it with weekly 1 on 1 meetings over videoconference, Devs would tell me what they have been doing, show me code in screen sharing, and talk about expected results of that code.

    If you are a Dev Manager, think like a developer and stay close to the technology, make sure your staff knows you expect to see results. Have meaningful, helpful things to say about their work.

    If you are a Dev manager and you can't look at their work and tell if it is any good, get a job as a Project Manager.

  30. Re:Use git by Z00L00K · · Score: 1

    Well, git is a tool, but it's for source control, not managing users.

    The problem of managing multi-project multi-site development seems to be very much like what we do at work. A lot of overhead and processes that not really fits anyone. Nobody has a really good picture and the system team that shall hold this together have some crazy notion about that Enterprise Architect shall be used to structure the requirement perspective.

    The only reason that we do get something that works is that some people works their asses off and other people stands as gatekeepers and quenches the wildest requests.

    --
    If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  31. Re:Duh by Darinbob · · Score: 1

    Don't need managers, get team leads instead. The whole reason there's one manager for so many teams is that upper management is saving money: workers are dirt cheap, managers are precious resources. Workers keep their heads down, managers have to attend a thousand meetings a week (all on corporate time not foreign time).

  32. It doesn't have to be terribly complicated by ibexdata.com · · Score: 1

    I've been managing teams of developers for well over 15 years, periodically assigning smaller teams from project to project. There are quite a few moving parts but it can be managed by one or more managers. It's not unusual that I'm both manager and co- developer on a given project, a DBA for another, and solely admin for yet another. Some components must be common across all projects, namely task management and time tracking (where applicable). It's wildly helpful if code versioning is also centrally managed and integrated into task management. Messaging between individual team members should be consistent across teams but groups isolated by project so as not to create cross-project noise. Reporting and accountability tracking are crucial, as well as monitoring of individual performance (from commits) vs time and customer budgets. That's probably the most complex system I had to build to manage my teams: staying within customer budgets, developer available bandwidth and accountability. I built everything based on mostly open sourced components and tied them together with my own code based on rapidly evolving needs as customers arrived and left over the years. There are purchased apps and services out there that provide comprehensive albeit expensive solutions.

  33. Be the enabler by stikves · · Score: 1

    Do not try to "manage" them, but try to help them achieve their goals. Be the enabler, ask them what they need to complete their tasks, and make it a priority everyone is able to function at their peak.

    This of course setting up shared calendars, VC software/hardware, DVCS, and so on on the techinical side. People should be able to see what they are supposed to do, reach their peers for information, and gather together to talk about updates, and have ideas (on the VC).

    On the personal side, try spending some time with each member every week. Communicate what is expected of them, and let them tell you their worries.

    As long as you have competent developers, they should be able to handle the job. If you do you job well, they will not even realize you're there.

  34. Coordinate by cwsumner · · Score: 1

    The developers must be sufficiently experienced that they can manage themselves. You can coordinate and advise, but you can't do classical "management" if you are not there. If they are good, you are good. But if someone hired the cheapest that could be found, then you are "up the preverbial polluted waterway without a means of propulsion".

    In most big companies, matrix management does not work. But if you have good people, almost anything can work. 8-)