Why? In a distributed team, meetings can become a severe time sink. A lot of people hold meetings to feel busy and important, and even less people put in effort to keep the conversation focused so that the meeting ends on time.
Some basic things are:
- Determine an agenda in advance. The agenda must be part of the meeting invite. An agenda is more than "Talk about XXX." You should have a list of 3-6 topics that will be discussed in the meeting.
- Make sure that everyone on the invite list needs to be there. Explain why you're inviting people in the meeting invite.
- During the meeting, make sure that, as time progresses, the topics on the agenda are discussed. If one topic is discussed too long, there's different techniques for moving to another topic. (Binning it, declaring it a rathole, ect.)
- Decline poorly planned meetings.
And, I shouldn't need to say this, but meetings begin on time and end on time. Don't make everyone wait 45 minutes to start what's supposed to be a 30 minute meeting, but then it really drags out to 90 minutes.
Furthermore, have a 0-tolerance policy for latecomers and people who always need 15 minutes to figure out the teleconference software. Hold your interviews in the teleconference software you use with your team as a way to filter out the idiots.
We just Skype for Business and Zoom at work. Both are just one click. Webex is also good. It's little confusing though (too many options). My partners use it so I have to also use it.
Maybe, you need to evaluate your teleconf s\w.
There are idiots who constantly take 15 minutes to figure out those teleconference software. Each and every time. I can understand taking 3-5 minutes extra the first time using something like that, and I can understand occasional technical difficulties.
What's not acceptable is after 2 calls still having technical difficulties.
For example, A year ago I started working with a driver developer who would constantly drop out of the teleconference after 7 minutes, without a polite "technical difficulties" IM or email. Turns out he was always calling in from within some kind of VM and always needed to reboot in the middle of the meeting. We had to get the manager to tell him to stop it.
Another example is that, a few days ago, I interviewed someone through WebEx. She took 10 minutes to figure out how to get her microphone to work. After 5 minutes I made up my mind that, unless she was spectacular, I wasn't going to hire her. (She interviewed very poorly.) What's extremely frustrating is that she didn't have the decency to just have WebEx call her phone, and instead kept me waiting for 10 minutes. That's just plain rude.
For example, if developers using Linux are asked to teleconference using tools built solely with Windows in mind, sometimes it will work with a VM, but often it randomly doesn't.
If I remember right, Intel used Skype for Business which as a teleconferencing tool was just rubbish. (Maybe it still is?)
Don’t blame the people when all you give them are shite tools.
Our IT team has sent out a bunch of surveys trying to triage the cause of the intermittent issues, but haven't been able to result the problems yet. It drives us nuts though. And that's with the resources of a Fortune 100 trying to deal with it.
Glad it's working well for you, though. That gives me hope they can't get it working more smoothly for us eventually.
Switching to Teams has made life a whole lot better.
Skype within the app is good, but if you use their dial-in numbers, it takes a minimum of 30 seconds to get into a conference.
So, yeah - keep weeding out those idiots?
Professionally, I might recommend staying with Linux as your daily driver, but also branching out just to say you know the key differences between the OSes and how to be productive within them. This could help to prevent a situation where your dependence on Linux becomes a liability or roadblock in your career ("I prefer Linux" vs having to say "I can only use Linux").
From a development standpoint, Windows has been doing some cool stuff too - Windows Server Core for example. All my servers are of course running Linux, but my work desktop is running Windows, which I happen to prefer for productivity. Many of my SWE colleagues develop on Mac laptops, and leading UI design tools like Sketch only work on MacOS, so it looks like we're not getting any closer to a single-OS landscape in our industry.
I've been working on a distributed team for 4 years now. I product manage an open-source online retrospective and meeting app and went _way_ deep on researching other distributed teams last year. What I learned about sharing updates is it's as much dictated by culture and ritual as much as it is by a tool.
Zapier is almost 1,000 people now. Here's what I learned they do:
- Every Friday non-managers write a short update of what's changed that week
- Managers read them, extract a few highlights, and roll them up to leaders
- Leaders do the same and roll it up to the CEO
- The CEO writes a blog post and sends it to the entire company
- That post is commented on and questions are asked by everybody
Some folks within Spotify write a daily update answering the same prompts:
- This is what I did today I think you should know about
- This is what I learned and I think you'd find useful
- This is what I need from you
- This is what I am doing next
For our company, we prefer weekly updates to daily updates (we value time autonomy vs. having an always-on culture). Our fully-remote team foes something similar to Zapier and end up posting our company updates publicly at https://focus.parabol.co (if you want to see an example)
I don't think a separate tool is really necessary. Pick your poison between a stand-up bot or something more flexible like missions.ai (at time X create doc, share doc, prompt people to get started...)
One more tip: if you find yourself writing an answer to the prompt "this is what I need from you..." you probably have an item to add to the team's meeting agenda. Full disclosure, we started our company to make capturing items for meetings easy, so, I have a dog in the hunt.
EDIT: formatting
For this, I use a weekly update that's sent to the team and also the "periphery" of the team -- all those who care about and influence the team's success. Each weekly update is prepended to a Google doc, and I send an email out (just with a link to the doc) when I update it.
The update has three sections: "Last Week" (everything I experienced last week that I think is relevant) "This Week" (a list of my priorities for the upcoming week with a cut line) and "Biggest Mistakes and Missed Opportunities" (just what it sounds like). It's intended to be comprehensive and often runs more than one page.
To make sure "people don't actually miss things," there are two parts: 1) I make sure the update contains all the things I don't want people to miss 2) I make sure the weekly update is valuable enough to everyone so that they read it.
On occasions where I've been late in updating it, I've found that I'm repeating the same information to multiple people more often and also having to say, "Sorry, you'd have known that already if I'd gotten my update out on time."
Have your most important values written down. Technical and non-technical. Ask new joiners read them and refer to them when discussing short and long term plans.
Don't believe that a fully flat hierarchy is the solution for all problems. A distributed team makes communication harder, so you might need more process than usual -- for 40 people you almost certainly need other managers to help you.
Have a strategy for the corporation that everyone understands. Team leads will then understand what their team has to contribute, and individuals will understand how to contribute to the team. If the company strategy is not well-known, your remote team is doomed.
Focus on alignment to values and vision, not to what you tell people directly. You're doing your job well if people and teams become autonomous.
Find and remove anything that blocks lateral communication (i.e. that goes outside of the hierarchy chain).
Be skilled in people management. Recognize isolation, burnout, depression, tension early enough and be able to solve them. If you are not skilled, learn from professionals, not from blog posts.
If needed, break rules. An important rule in a distributed team is that people don't meet often. If necessary, break this rule.
Email. Email is perfect for this. If you use GSuite, groups with the email gateway is ideal for this. You can have threaded discussions with a long history.
Stripe was(maybe still is?) really good at this. They made a policy very early on that every email had to CC a mailing list (unless it was truly a personal one on one communication). The lists has a structure were some were designated as archival only. Even if no one read the list, at least the archive was there for the new employees. Or for an employee who was on vacation to read and catch up when they came back.
> How can you be sure people don't actually miss things in the noise of Slack/Email?
For Slack, make sure it's truly just for real time discussion. If something looks like it's going to be a long discussion, move it to email.
For email, if you're using groups/lists for everything, then there shouldn't be a lot of noise. You should be able to just go to the groups interface or filter on the group the message was sent to.
Then author the email in the google doc, paste it into gmail and send - along with a link at the bottom to previous notes.
Is there an unseen advantage to not including the actual text in the email?
Looking for a tool to do this is wishful thinking
Split communication in small teams/groups and design just one person per group to deliver periodic status. Meeting with the whole team are absolutely inefficient and costly for the company.
Create a policy where any change must be documented and informed to all stakeholders.
Tools vary depending on your business, but sites like Trello can be really usefull.
I have been in consulting for a while -- and while I don't mind it, that brings in its own set of rules (with regards to non-billable time) and challenges (Fixed price contracts usually mean low salaried workers to maximize profits).
- Short team-based standups. There's no reason for your US team to meet with Offshore unless there's a blocking reason to do so.
- Bi-weekly team meetings with both groups. I tried to alternate between the On-Shore and the Off Shore's lunch period, but, regardless, one team is staying up late. Don't be a dick and make that team come in at their same time the next day if you're holding a 2AM meeting that lasts an hour.
- If you are sending important, team-wide, communications, let them know in stand up.
- I have no problem waking up early (or staying up late) to have 1:1's with my team, even if they are offshore. Keep them simple (What have been your big challenges this week? Are you blocked or do you forsee any roadblocks down the horizon? Do you have anything for me?)
Sadly, most companies that we've been in have frowned upon Slack, but, I don't have any issues in using it on a daily basis.
If your team members are burned out, isolated, depressed -- work on them. Give them time away from the project or lighter work (to a point). If they are consistently burned out and depressed, try to figure out if this is a company/project/management issue (hey -- I'm far from perfect, maybe they don't like my management style!), or, if this is something that can be resolved by a placement to a different project/team.
Encourage them to use the 'free' resources available to them -- be it cloud services, books, education, mental health, physical health, etc. The company provides those for a reason.
It took me a long time to realize that my initial management style doesn't work with everyone...so, I changed. Don't be afraid to look in the mirror and change your operating style when you think it's not working.
(edited for formatting)
[1] https://gist.github.com/cowpig/8d8194ac55e3789d9a3c4136d1e1a...
From a people perspective, clearly defining goals and constantly asking clarity questions to gauge if there is alignment is the only real way. Also if you notice people are not aligned but they think they are, declare that you're not sure they're aligned. They'll hash it out themselves.
It also helps for people to declare when they're unavailable in something like a slack channel. Finding out someone is not there when you expect the to be is very jarring/frustrating.
With distributed teams, I don't think communicating big vision ideas are all that difficult. They can usually be solved with a monthly all-hands.
The problem with distributed teams is the lack of informal interactions. When you come up with a seed of an idea, that may well be a bad idea or isn't thoroughly formulated, it's an immense help to walk over to someone's desk and run it by them.
Slack and email are poor tools for this type of early innovation because they require you to write your idea down. At the very early stages of innovation, you may not even have a clear enough vision of the solution (or the problem it's trying to solve), to commit it to writing.
Most of these early ideas are originally flawed or down-right incorrect, but low-risk informal chats with co-workers can help crystalize or disprove the idea far more efficiently than any written medium.
An idea that has navigated through the internal dialogue I have to engage in to put it to paper is much less a waste of your time.
And, if you want me to provide well thought-out feedback on your idea, don't ask me to respond to it in real time or in the timeframe of a meeting.
The ideal process for ideation may be informal and low-risk, but it is also asynchronous and via the written word (possibly with pictures).
Write down whatever you can about your problem or your idea and then send it to me, saying "what do you think?". I will read it at the time when I am most able to give it my full attention, cogitate for as long as I think necessary, and then reply with the best possible feedback.
Maybe some cases benefit from the rapid iteration that can happen in an oral conversation. But in my experience, most or all of those work just about as well with a rubber duck.
Unfortunately, that delay imposes pretty serious transaction costs on innovation. Because most ideas are not worthwhile, it's often more productive to discard them quickly and move on to the next idea than to dwell on them for longer periods of time.
Put analytically, assume there are 2 developers at a company each with plenty of ideas, but 9 out of 10 of them are garbage. Further assume that determining a bad idea is actually a bad idea with another person takes 0.5 hours, but doing it on your own takes 1.5 hours. The two devs will generate far more good ideas (those 1 out of 10), if they talk to each other than if they dwell on them without speaking to each other.
We have 12 teams and 150 people and prob 50+ channels.
Office space - millennial edition
Each of your leads should probably be sending out a weekly email detailing the work that their team has been doing. You should be working closely with your leads so that they are distributing the right information downwards. You need to empower the managers below you rather than trying to take this all on yourself.
I ran a team of about 25 in the past and followed the following agile principles to help with alignment: - retrospectives - "sprints" (preference on the 3-4 week range) - Sprint Review
Alignment, while tricky, isn't all that hard so long as processes are evolving from retrospectives and you have a single source of truth for long form documentation.
If anyone here feels passionately about this area and is a remote manager, I’d love to talk to you 1:1. My email is in my profile.
I’m part of a team launching a manager training program this fall, and our emphasis is on managers that have to deal with distributed teams. We’re looking for guest speakers across a wide range of topics, including alignment, and I’m pre-screening potential guest speakers right now.
I’d love to connect and learn more about your practical experiences!
For longer term alignment we always post "decisions" that are made during these meetings in a slack channel so that others can keep up to date if they weren't in the meeting. We can also go back in time to see the context of why a decision was made.
Then, daily and weekly calls. Whatever we do is more or less connected to goals in V2MOM. It helps from being distracted.
[1]: https://www.businessinsider.com/salesforce-v2mom-process-201...
Is there an advantage to documenting and setting methods in stone ahead of time? Curious about your experiences with it.
Have you found it effective to discuss the actual method of how you'll accomplish something months before you're working on it?
It seems like it would almost always change for development - maybe in other areas it's more useful.
Couple ways you could do it: 1. a webcam recording of yourself, using quicktime (only on mac) or similar webcam recording tool 2. a screen recording where you talk through a slide deck of news, roadmap, etc. Again, using quicktime or chrome extensions such as the one I built: https://outklip.com. Outklip's advantage is you can record webcam along with screen, annotate during recording, do post-editing and upload to YouTube with a click.
I interiewed Sid Sijbrandij, the GitLab CEO (GitLab has 500+ members and is all remote) on running a distributed company. He said this about alignment: "I think it’s really important to write things down. People are very efficient at reading things. So, if you wrote it down you can refer to it, so you don’t have to say everything again, you can just drop a link. So, we write down a lot, in our handbook, on our OKRs page, you’ll find all our goals and strategy, etc. And at some point you keep repeating that, keep dropping those links and you keep answering questions. So, repetition is still needed, repetition is easier if you have one writeup and most people have already found it even during onboarding.". Interview video and notes here: https://outklip.com/blog/gitlab-building-a-distributed-compa...
Another interview with Sid about how GitLab uses video for remote work: https://outklip.com/blog/using-video-for-remote-work/.
face to face is always best, zoom is great, wiki pages, etc.
The Effective Executive
Making of a Manager
ReWork
Start with your own mindset around this topic first, then roll out a system and/or tool to make it happen.
There's a lot of good advice in this thread, but one more thing that I need to add:
Your tickets need to be well-written, and actively groomed. This means things like:
- Clear ticket title
- Clear steps to reproduce
- Process followed (Varies based on product, in our case this means attaching logs and documenting filenames.)
- When someone clarifies things, they must update the actual ticket title / description instead of clarifying in an email / comment
- Management must not expect engineers to handhold ticket writers through things like this, and must expect that testers and support own clearly communicating what the issue is
- Do not combine multiple bugs into the same ticket
- Do not "fail verification" when finding a new bug
- Relate similar tickets, don't identify new bugs / issues in a comment
Some examples of "bad" tickets:
- Giving a title that's basically "It's not working." Every product has an analogy of "It's not working." In our case, novices who don't take the time to explain a problem will just create a lot of tickets titled "It's not syncing."
- I had a ticket today where the steps to reproduce said, "Take a screenshot." There's MANY ways to take a screenshot. The steps to reproduce must say which tool / button combination were used.
- Constantly needing to ask for things that are expected in the process. All products have different needs. In our case, all tickets need logs and a sample filename to look for in the log. When I need to constantly ask testers for this information, it's a problem that management must address quickly
- "Oh you fixed it but now it does this." What this creates is a situation where many bugs are part of the same ticket, and someone needs to spend hours reading through all comments to understand what the bug is. If the bug is fixed and a new bug is found, verify the first bug, file a new ticket, and relate them.
Edit: Actively grooming means:
- The bugs assigned to someone must be realistic. Don't leave 100 bugs assigned to someone for a release when there's no chance that they can do them all.
- Don't let your ticket submitters triage their tickets. QE shouldn't assign a ticket to anyone. That just results in the 100 bugs assigned to someone situation.
- Dumb feature requests should be closed immediately. Someone using your ticketing system to make dumb feature requests (and assign them to people) should be stopped immediately. (An example is a tester requesting lots of automation or helper tools from developers via the ticketing system.)
- Out-of-scope bugs should not be assigned to a release
- Major projects are not bugs, don't leave "bugs" that require major refactoring assigned to someone when you aren't going to dedicate the time to do it
- Establish a feedback loop so that QE can better steer tickets on submitting them. (IE, if there is a clear server error in a log, it's not a client bug.) QE should be smart enough to do enough diagnostics to direct the bug before it hits triage.
- Don't constantly assign tickets to the wrong team. If someone keeps saying, "this kind of ticket goes to this team," listen, otherwise they will go to your upper management, CTO, architect, ect or and make you look like a fool for not knowing the difference.
A better approach would be to have distributed teams where the teams are cohesive unit with co-located members. Each team has local autonomy and a central mandate. The teams could be located anywhere but the team members would be in the same office.
Aliging distributed teams is easier as they can agree on coarse details , have few or limited dependencies and they execute on their own. Otherwise you are just shepherding cats.
> Such teams will be always outperformed by co-located teams.
Could you share data to back this assertion up?
For me, I've been fully remote for many years and was primarily remote for a few years prior to that.
Companies I've been at where there is no flexibility whatsoever typically suffer from poor management or are the type of work place where there are pieces of hardware or other resources one can not really work on remotely.
One of the primary benefits for me when initially working remotely was the time saving that resulted not having to spend 1.5-2.5 hours a day in the car.
Provide examples/data for this or I cant take this comment seriously.
As someone who has worked on successful fully remote teams for 6.5 years I couldnt disagree more. My current team is mostly remote and moves Billions of dollars, delivers features at a rapid pace. It comes down to select the right team members, having centralized places of communication and empowering each member with the autonomy and ability to contribute no matter where they sit.
The "butt in seats mentality" is very outdated imo. How many hours are wasted commuting?
That said, if you have someone in leadership (especially high up the chain like a VPE) who is all about "butts in seats," your distributed team is designed to fail. And I'd argue that that leader is probably doing their part to ensure it fails to prove themselves right about co-located being better.