Slide 1

Slide 1 text

Communication problems within complex projects lessons learned from real life Eugene Pirogov 2014

Slide 2

Slide 2 text

I SUCK! AT COMMUNICATING

Slide 3

Slide 3 text

The Story

Slide 4

Slide 4 text

Input data Computation Output data Project scheme… …was dead simple.

Slide 5

Slide 5 text

Computation! ! = lot of details

Slide 6

Slide 6 text

PROGRAMMING! IS HARD?! ! GO READ THE! DAMN BOOK.

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

COMMUNICATION! IS HARD.! ! YOU ONLY LEARN! EMPIRICALLY.

Slide 9

Slide 9 text

“We need a new big feature!” – every client in the world.

Slide 10

Slide 10 text

Input data Computation Output data 1 Project scheme Output data 2

Slide 11

Slide 11 text

Input data Computation Output data Project scheme

Slide 12

Slide 12 text

Input data — Computation — Output data Project scheme = throuple —

Slide 13

Slide 13 text

“We need a time to refactor first.” – every programmer in the world.

Slide 14

Slide 14 text

After a day or two of thinking it through, I begin to work.

Slide 15

Slide 15 text

During the two period month, it’s Skype, me and client. Summary

Slide 16

Slide 16 text

Summary • 1 man • ~2 months • 3 pull requests • 2/3 pull requests reviewed/merged to master • zero of code is running on prod (waiting for 3rd PR)

Slide 17

Slide 17 text

The 3rd PR is somewhat “tough” to review. ! Hmm…

Slide 18

Slide 18 text

Let’s split it in reviewable parts.

Slide 19

Slide 19 text

Summary • entire team is working • +1 month • 3rd PR is split into 10 smaller PRs • 8/10 smaller PRs are merged • the team is insanely stressed out • zero of code is running on prod

Slide 20

Slide 20 text

“Time’s up!” – every client in the world (probably).

Slide 21

Slide 21 text

The NOT happy ending

Slide 22

Slide 22 text

Summary • the deadline wasn't met – the feature wasn't delivered • all new code was deployed on production, but no new code was actually used • the codebase is a mess • me – super stressed, almost quit • the project is being put on "no new features mode"

Slide 23

Slide 23 text

The Reasons

Slide 24

Slide 24 text

Ridiculous pull requests Reason #1

Slide 25

Slide 25 text

REVIEWS! ARE BLOCKED

Slide 26

Slide 26 text

EVERYONE! GET IRRITATED

Slide 27

Slide 27 text

epicpullrequests.tumblr.com

Slide 28

Slide 28 text

Lack of understanding Reason #2

Slide 29

Slide 29 text

IT’S HARD TO! FOLLOW! WHAT WE ARE! BUILDING

Slide 30

Slide 30 text

No record Reason #3

Slide 31

Slide 31 text

COMMUNICATION! IS! BROKEN

Slide 32

Slide 32 text

NO! DESIGN! DOCS

Slide 33

Slide 33 text

SKYPE! IS! NOT! A WAY! TO DO IT

Slide 34

Slide 34 text

Lack of seniority Reason #4

Slide 35

Slide 35 text

I has the dumb™ Reason #5

Slide 36

Slide 36 text

The Lessons

Slide 37

Slide 37 text

You can’t do everything yourself Lesson #1

Slide 38

Slide 38 text

YOU! ARE! A MEMBER! OF! A TEAM

Slide 39

Slide 39 text

HERO! MODE! OFF

Slide 40

Slide 40 text

IT’S! A STRESS.! ! DO! YOU! WANT! THAT?

Slide 41

Slide 41 text

Always remain on the damn record! Lesson #2

Slide 42

Slide 42 text

COMMUNICATE! IN A! SHARED SPACE.

Slide 43

Slide 43 text

GITHUB.! COMMIT MESSAGES.! PIVOTAL TRACKER.! CAMPFIRE.! ! EMAILS ARE GOOD! BUT NOT GREAT.! ! FUCK SKYPE.

Slide 44

Slide 44 text

Take a step back Lesson #3

Slide 45

Slide 45 text

DO NOT! BLINDLY GO! AFTER CLIENT’S! REQUESTS

Slide 46

Slide 46 text

ONLY! FOOLS! WRITE! CODE! FIRST™

Slide 47

Slide 47 text

blog.reemer.com/why- only-fools-write-code-first

Slide 48

Slide 48 text

Learn to ask & accept feedback Lesson #4

Slide 49

Slide 49 text

TAKE IT GENTLY.! ! TAKE IT WISELY.

Slide 50

Slide 50 text

YOU! ALL ! STRUGGLE! TO MAKE! A BETTER! PRODUCT.

Slide 51

Slide 51 text

OTHER PEOPLE! DISAGREE?! ! IT ONLY MEANS! THEY CARE.

Slide 52

Slide 52 text

You are not your code Lesson #5

Slide 53

Slide 53 text

DO NOT GET! DRIFTED AWAY! BY ASSOCIATING! YOURSELF! TO THE CODE! YOUR PRODUCE.

Slide 54

Slide 54 text

Provide the information Lesson #6

Slide 55

Slide 55 text

IT WILL! SECURE YOU

Slide 56

Slide 56 text

LET! EVERYONE! DO THEIR BEST! TO HELP! YOU

Slide 57

Slide 57 text

GISTs! AND! GOOGLE DOCS! ARE AWESOME

Slide 58

Slide 58 text

WRITE! DOWN! THE STUFF.! ! THEN! SHARE IT.

Slide 59

Slide 59 text

Do not let other people down Lesson #7

Slide 60

Slide 60 text

YOU WILL PAY! BY STRESSING OUT

Slide 61

Slide 61 text

THE TEAM! WILL PAY BY TURNING! INTO A CRUNCH MODE

Slide 62

Slide 62 text

THE CLIENT! WILL PAY,! LITERALLY

Slide 63

Slide 63 text

Talk today and not tomorrow Lesson #8

Slide 64

Slide 64 text

LIFE! IS SHORT! TO WAIT UNTIL! TOMORROW.

Slide 65

Slide 65 text

It’s all my fault Lesson #9

Slide 66

Slide 66 text

ALWAYS! DO! THE! BEST! OF YOU.

Slide 67

Slide 67 text

sivers.org/my-fault

Slide 68

Slide 68 text

Do not fear to do mistakes Lesson #10

Slide 69

Slide 69 text

LIFE! IS! A JOURNEY.! ! WHY FEAR IT?

Slide 70

Slide 70 text

REPEATING! MISTAKES
 IS NOT! PROFESSIONAL

Slide 71

Slide 71 text

EXPERIENCE! IS! PRICELESS.! ! EVEN IF A BAD ONE.

Slide 72

Slide 72 text

STOP! DIGGING! YOURSELF! A HOLE! AND! LEARN! TO! COMMUNICATE

Slide 73

Slide 73 text

The Clean Coder: A Code of Conduct for Professional Programmers @unclebobmartin

Slide 74

Slide 74 text

Thanks! Questions? @gmile