running efficient distributed teams

46
Running Efficient Distributed Teams Ricardo J. Méndez [email protected]

Upload: ricardo-j-mendez

Post on 12-Apr-2017

196 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Running efficient distributed teams

Running Efficient Distributed TeamsRicardo J. Méndez

[email protected]

Page 2: Running efficient distributed teams

@ArgesRic

About me• Software engineer, run Numergent.• Work mostly with data-oriented projects, on media, health

care information management, and financial companies.• Run project-specific, distributed development teams.• Six years of working exclusively with distributed teams.• I’d rather take the right expertise where I find it.

Page 3: Running efficient distributed teams
Page 4: Running efficient distributed teams

@ArgesRic

Coordination has a cost

Page 5: Running efficient distributed teams
Page 6: Running efficient distributed teams
Page 7: Running efficient distributed teams

@ArgesRic

When you have a question,your answer may not arrive

even on the same day.

Page 8: Running efficient distributed teams

@ArgesRic

Autonomy is fundamental

Page 9: Running efficient distributed teams

@ArgesRic

Late-binding of tasks to owners

Fred George, “Implementing programmer Anarchy”https://www.youtube.com/watch?v=tIxHmsWCd7g

Page 10: Running efficient distributed teams

@ArgesRic

Having lots tasks assigned early can overwhelm a

developer.

Page 11: Running efficient distributed teams

@ArgesRic

Never force people to ask for permission to work more.

Page 12: Running efficient distributed teams

@ArgesRic

Instead, let people continually ask themselves “what's

next?”

Page 13: Running efficient distributed teams

@ArgesRic

Assign early only very specialized tasks, with specific

deadlines.

Page 14: Running efficient distributed teams

@ArgesRic

Conventions are important

Page 15: Running efficient distributed teams

@ArgesRic

Fundamental for issues and tasks.

Come up with a clear nomenclature from the start.

Page 16: Running efficient distributed teams

@ArgesRic

Mis-assigned or mis-interpreted severities and

priorities will slow you down.

Page 17: Running efficient distributed teams

@ArgesRic

Conventions: Issue severity• Enhancement: Self-explanatory.• Minor: Deal with it as time allows.• Major: You don’t want to launch without it, not having it

requires a scope negotiation.• Critical: Fundamental to system’s concept and integrity.• Blocker: Stopping at least one person from working. For bugs

only.

Page 18: Running efficient distributed teams

@ArgesRic

Do not let P1 Blockers become a prioritization hack.

Page 19: Running efficient distributed teams

@ArgesRic

There’s a difference between urgent

and important

Page 20: Running efficient distributed teams

@ArgesRic

Write everything down

Page 21: Running efficient distributed teams

@ArgesRic

Yes, writing things down takes time.

Page 22: Running efficient distributed teams

@ArgesRic

Guess what?

You should be doing it anyway.

Page 23: Running efficient distributed teams

@ArgesRic

Do not abide an oral history, Chinese whispers

approach to project management.

Page 24: Running efficient distributed teams

@ArgesRic

If it’s worth answering, it’s worth writing the answer

down.

Page 25: Running efficient distributed teams

@ArgesRic

Issue-specific answers go on the issue.

General questions go on the wiki.

Page 26: Running efficient distributed teams

@ArgesRic

Chances are people will ask the same question twice.

You only pay the cost once.

Page 27: Running efficient distributed teams

@ArgesRic

Your team will talk less, and write more.

This is not a bug, it’s a feature.

Page 28: Running efficient distributed teams

@ArgesRic

Cross-reference and increase visibility

Page 29: Running efficient distributed teams

@ArgesRic

Tag feature branches with the task code.

Link to issue discussion on commit logs.

Page 30: Running efficient distributed teams

@ArgesRic

git-flow is your friend(or something like it)

http://nvie.com/posts/a-successful-git-branching-model/

Page 31: Running efficient distributed teams

@ArgesRic

Developers own their feature branches.

Never assume they are set in stone.

Page 32: Running efficient distributed teams

@ArgesRic

Do small, independent commits

Page 33: Running efficient distributed teams

@ArgesRic

Push your feature branches, even if you’re not done.

Page 34: Running efficient distributed teams

@ArgesRic

Make intermediate commits, even if you’ll amend later.

Page 35: Running efficient distributed teams

@ArgesRic

When all you have is Scrum,

everything looks like a stand-up

Page 36: Running efficient distributed teams

@ArgesRic

Daily meetings, however short,

will be an issue.

Page 37: Running efficient distributed teams

@ArgesRic

Assumptions change.

You will need to touch base daily.

Do it asynchronously.

Page 38: Running efficient distributed teams

@ArgesRic

Keep a good idea of people’s availability.

Page 39: Running efficient distributed teams

@ArgesRic

Agree on team member availability beforehand.

It’s not about synchrony. It’s about timing.

Page 40: Running efficient distributed teams

@ArgesRic

Mind the human factor

Page 41: Running efficient distributed teams

@ArgesRic

You won’t have the usual visual cues.

Page 42: Running efficient distributed teams

@ArgesRic

Be extra aware of cultural fit, or personal differences.

Page 43: Running efficient distributed teams

@ArgesRic

There are exceptions

Page 44: Running efficient distributed teams

@ArgesRic

You may need to have a few people meet.

Plan ahead and budget.

Page 45: Running efficient distributed teams

@ArgesRic

Questions?

Page 46: Running efficient distributed teams

@ArgesRic

Thank you!Ricardo J. Méndez

[email protected]