Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Communication problems within complex projects
Search
Eugene
May 31, 2014
Programming
0
270
Communication problems within complex projects
lessons learned from real life
Eugene
May 31, 2014
Tweet
Share
More Decks by Eugene
See All by Eugene
A year in Elixir. 2018 edition
gmile
0
98
Other Decks in Programming
See All in Programming
みんなでプロポーザルを書いてみた
yuriko1211
0
280
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
250
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
340
役立つログに取り組もう
irof
28
9.6k
Jakarta EE meets AI
ivargrimstad
0
670
as(型アサーション)を書く前にできること
marokanatani
10
2.7k
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
430
Arm移行タイムアタック
qnighy
0
330
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
340
Contemporary Test Cases
maaretp
0
140
EMになってからチームの成果を最大化するために取り組んだこと/ Maximize team performance as EM
nashiusagi
0
100
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
14
2.2k
Featured
See All Featured
Done Done
chrislema
181
16k
How STYLIGHT went responsive
nonsquared
95
5.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
We Have a Design System, Now What?
morganepeng
50
7.2k
Designing the Hi-DPI Web
ddemaree
280
34k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Bash Introduction
62gerente
608
210k
Scaling GitHub
holman
458
140k
Producing Creativity
orderedlist
PRO
341
39k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Transcript
Communication problems within complex projects lessons learned from real life
Eugene Pirogov 2014
I SUCK! AT COMMUNICATING
The Story
Input data Computation Output data Project scheme… …was dead simple.
Computation! ! = lot of details
PROGRAMMING! IS HARD?! ! GO READ THE! DAMN BOOK.
None
COMMUNICATION! IS HARD.! ! YOU ONLY LEARN! EMPIRICALLY.
“We need a new big feature!” – every client in
the world.
Input data Computation Output data 1 Project scheme Output data
2
Input data Computation Output data Project scheme
Input data — Computation — Output data Project scheme =
throuple —
“We need a time to refactor first.” – every programmer
in the world.
After a day or two of thinking it through, I
begin to work.
During the two period month, it’s Skype, me and client.
Summary
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)
The 3rd PR is somewhat “tough” to review. ! Hmm…
Let’s split it in reviewable parts.
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
“Time’s up!” – every client in the world (probably).
The NOT happy ending
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"
The Reasons
Ridiculous pull requests Reason #1
REVIEWS! ARE BLOCKED
EVERYONE! GET IRRITATED
epicpullrequests.tumblr.com
Lack of understanding Reason #2
IT’S HARD TO! FOLLOW! WHAT WE ARE! BUILDING
No record Reason #3
COMMUNICATION! IS! BROKEN
NO! DESIGN! DOCS
SKYPE! IS! NOT! A WAY! TO DO IT
Lack of seniority Reason #4
I has the dumb™ Reason #5
The Lessons
You can’t do everything yourself Lesson #1
YOU! ARE! A MEMBER! OF! A TEAM
HERO! MODE! OFF
IT’S! A STRESS.! ! DO! YOU! WANT! THAT?
Always remain on the damn record! Lesson #2
COMMUNICATE! IN A! SHARED SPACE.
GITHUB.! COMMIT MESSAGES.! PIVOTAL TRACKER.! CAMPFIRE.! ! EMAILS ARE GOOD!
BUT NOT GREAT.! ! FUCK SKYPE.
Take a step back Lesson #3
DO NOT! BLINDLY GO! AFTER CLIENT’S! REQUESTS
ONLY! FOOLS! WRITE! CODE! FIRST™
blog.reemer.com/why- only-fools-write-code-first
Learn to ask & accept feedback Lesson #4
TAKE IT GENTLY.! ! TAKE IT WISELY.
YOU! ALL ! STRUGGLE! TO MAKE! A BETTER! PRODUCT.
OTHER PEOPLE! DISAGREE?! ! IT ONLY MEANS! THEY CARE.
You are not your code Lesson #5
DO NOT GET! DRIFTED AWAY! BY ASSOCIATING! YOURSELF! TO THE
CODE! YOUR PRODUCE.
Provide the information Lesson #6
IT WILL! SECURE YOU
LET! EVERYONE! DO THEIR BEST! TO HELP! YOU
GISTs! AND! GOOGLE DOCS! ARE AWESOME
WRITE! DOWN! THE STUFF.! ! THEN! SHARE IT.
Do not let other people down Lesson #7
YOU WILL PAY! BY STRESSING OUT
THE TEAM! WILL PAY BY TURNING! INTO A CRUNCH MODE
THE CLIENT! WILL PAY,! LITERALLY
Talk today and not tomorrow Lesson #8
LIFE! IS SHORT! TO WAIT UNTIL! TOMORROW.
It’s all my fault Lesson #9
ALWAYS! DO! THE! BEST! OF YOU.
sivers.org/my-fault
Do not fear to do mistakes Lesson #10
LIFE! IS! A JOURNEY.! ! WHY FEAR IT?
REPEATING! MISTAKES IS NOT! PROFESSIONAL
EXPERIENCE! IS! PRICELESS.! ! EVEN IF A BAD ONE.
STOP! DIGGING! YOURSELF! A HOLE! AND! LEARN! TO! COMMUNICATE
The Clean Coder: A Code of Conduct for Professional Programmers
@unclebobmartin
Thanks! Questions? @gmile