165
A ROCKET INTERNET EXPERIENCE

The rocket internet experience @ PHP.TO.START 2013 in Turin

Embed Size (px)

DESCRIPTION

Tales from a development team working for one of Rocket Internet's venture in Dubai.

Citation preview

Page 1: The rocket internet experience @ PHP.TO.START 2013 in Turin

A ROCKET INTERNET EXPERIENCE

Page 2: The rocket internet experience @ PHP.TO.START 2013 in Turin

AGENDA

1. Context2. Responsibilities

3. Building the team4. Get started

5. Adapt6. Mutate

7. Delegate8. BONUS

Page 3: The rocket internet experience @ PHP.TO.START 2013 in Turin

1. Context

Page 4: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 5: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 6: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 7: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 8: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 9: The rocket internet experience @ PHP.TO.START 2013 in Turin

1st April 2012

Page 10: The rocket internet experience @ PHP.TO.START 2013 in Turin

2. Responsibilities

Page 11: The rocket internet experience @ PHP.TO.START 2013 in Turin

Strive towards excellence

Page 12: The rocket internet experience @ PHP.TO.START 2013 in Turin

No

Page 13: The rocket internet experience @ PHP.TO.START 2013 in Turin

Make things work

Page 14: The rocket internet experience @ PHP.TO.START 2013 in Turin

TDD is useless

Page 15: The rocket internet experience @ PHP.TO.START 2013 in Turin

Automated tests are useless

Page 16: The rocket internet experience @ PHP.TO.START 2013 in Turin

Symfony2 is useless

Page 17: The rocket internet experience @ PHP.TO.START 2013 in Turin

PEOPLE, FFS!

Page 18: The rocket internet experience @ PHP.TO.START 2013 in Turin

3. Building the team

Page 19: The rocket internet experience @ PHP.TO.START 2013 in Turin

You can't make everyone you know relocate

Page 20: The rocket internet experience @ PHP.TO.START 2013 in Turin

You can't relocate your company

Page 21: The rocket internet experience @ PHP.TO.START 2013 in Turin

How to hire a very good (middle-eastern) php team?

Page 22: The rocket internet experience @ PHP.TO.START 2013 in Turin

HIRE THE YOUNG

Page 23: The rocket internet experience @ PHP.TO.START 2013 in Turin

They forget about their watchesand are usually attracted to new technologies

Page 24: The rocket internet experience @ PHP.TO.START 2013 in Turin

Moreover, there is no big bias.

Page 25: The rocket internet experience @ PHP.TO.START 2013 in Turin

SPECIFIC TARGETS

Page 26: The rocket internet experience @ PHP.TO.START 2013 in Turin

"If our people can't use Symfony2 in one week, they're fired"

Page 27: The rocket internet experience @ PHP.TO.START 2013 in Turin

Test their goals and their approaches,as they will probablyunderstand and get to play with a lot of cool techs with you

Page 28: The rocket internet experience @ PHP.TO.START 2013 in Turin

IGNORE CVs

Page 29: The rocket internet experience @ PHP.TO.START 2013 in Turin

How many PHP indians companies are out there?

Page 30: The rocket internet experience @ PHP.TO.START 2013 in Turin

How many of them do you know?

Page 31: The rocket internet experience @ PHP.TO.START 2013 in Turin

We are biased

Page 32: The rocket internet experience @ PHP.TO.START 2013 in Turin

Ask for partial overtime

Page 33: The rocket internet experience @ PHP.TO.START 2013 in Turin

No one expects everyone to know about everything,that is why we hire people and train them

Page 34: The rocket internet experience @ PHP.TO.START 2013 in Turin

Training has a cost that both the employerand the employee have to split

Page 35: The rocket internet experience @ PHP.TO.START 2013 in Turin

Means overtime forchanging labels it's useless,

of course

Page 36: The rocket internet experience @ PHP.TO.START 2013 in Turin

but OT is fine, get over it

Page 37: The rocket internet experience @ PHP.TO.START 2013 in Turin

It's a matter of what both partsoffer for / in those extra-hours.

Page 38: The rocket internet experience @ PHP.TO.START 2013 in Turin

Pyramid interview

Page 39: The rocket internet experience @ PHP.TO.START 2013 in Turin

Who is Frederick Brooks?

Page 40: The rocket internet experience @ PHP.TO.START 2013 in Turin

What is the second-system effect?

Page 41: The rocket internet experience @ PHP.TO.START 2013 in Turin

What does PEAA mean?

Page 42: The rocket internet experience @ PHP.TO.START 2013 in Turin

What is a data mapper?

Page 43: The rocket internet experience @ PHP.TO.START 2013 in Turin

Why is it cool?

Page 44: The rocket internet experience @ PHP.TO.START 2013 in Turin

Why is OOP better than procedural code?

Page 45: The rocket internet experience @ PHP.TO.START 2013 in Turin

What happens when you hit enter in the browser bar?

Page 46: The rocket internet experience @ PHP.TO.START 2013 in Turin

...and so on.

Page 47: The rocket internet experience @ PHP.TO.START 2013 in Turin

Surprise them

Page 48: The rocket internet experience @ PHP.TO.START 2013 in Turin

An interview is always a good opportunity for learning.

Given that you can effectively teach stuff with the pyramid interview...

Page 49: The rocket internet experience @ PHP.TO.START 2013 in Turin

...wear shorts if you want.

Page 50: The rocket internet experience @ PHP.TO.START 2013 in Turin

...ask how many cabs are out there if you want.

Page 51: The rocket internet experience @ PHP.TO.START 2013 in Turin

Putting the candidate in a no-comfort zone will let you know how he or she reacts to variable

situations and unknown problems.

If you ask weird questions...

Page 52: The rocket internet experience @ PHP.TO.START 2013 in Turin

Gain authority on the field, not on paper

Remember people not to be judgemental

If you wear shorts...

Page 53: The rocket internet experience @ PHP.TO.START 2013 in Turin

Gain authority on the field, not on paper

Remember people not to be judgemental

You can directly go to the beach after work!

If you wear shorts...

Page 54: The rocket internet experience @ PHP.TO.START 2013 in Turin

Offer fair packages

Page 55: The rocket internet experience @ PHP.TO.START 2013 in Turin

At the end of it...

Page 56: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 57: The rocket internet experience @ PHP.TO.START 2013 in Turin

4. Get started

Page 58: The rocket internet experience @ PHP.TO.START 2013 in Turin

"It takes 3 months to be effectively productive"

Page 59: The rocket internet experience @ PHP.TO.START 2013 in Turin

Why?

Page 60: The rocket internet experience @ PHP.TO.START 2013 in Turin

"Because the developers can't understand the code"

Page 61: The rocket internet experience @ PHP.TO.START 2013 in Turin

Solution #1

Fire them all

Page 62: The rocket internet experience @ PHP.TO.START 2013 in Turin

Solution #1

Fire them all

Page 63: The rocket internet experience @ PHP.TO.START 2013 in Turin

Why don't they understand the code?

Page 64: The rocket internet experience @ PHP.TO.START 2013 in Turin

"Because the code is not that domain driven"

Page 65: The rocket internet experience @ PHP.TO.START 2013 in Turin

Solution #2

Replace the software

Page 66: The rocket internet experience @ PHP.TO.START 2013 in Turin

In the next 4 months, we would have replaced our entire architecture with a RoR application and parts

of the architecture with NodeJS...

Page 67: The rocket internet experience @ PHP.TO.START 2013 in Turin

...if I was that dumb.

Page 68: The rocket internet experience @ PHP.TO.START 2013 in Turin

COST / BENEFIT

Page 69: The rocket internet experience @ PHP.TO.START 2013 in Turin

Know-how and tools for free is something you can't easily drop.

Instead of replacing a monolithic approach with another monolithic approach, you split the system

in layers and work on each of those layers.

Page 70: The rocket internet experience @ PHP.TO.START 2013 in Turin

So, why isn't the code domain-driven?

Page 71: The rocket internet experience @ PHP.TO.START 2013 in Turin

"Not everyone knows how decoupled DDD works"

Page 72: The rocket internet experience @ PHP.TO.START 2013 in Turin

And that's perfectly fine.

Page 73: The rocket internet experience @ PHP.TO.START 2013 in Turin

Imagine Fabien as your bosswhen you were a Rookie?

Page 74: The rocket internet experience @ PHP.TO.START 2013 in Turin

We're all born n00bs

Page 75: The rocket internet experience @ PHP.TO.START 2013 in Turin

Socratic approach

Page 76: The rocket internet experience @ PHP.TO.START 2013 in Turin

Socratic approach

Question something

Page 77: The rocket internet experience @ PHP.TO.START 2013 in Turin

Socratic approach

Question something

Raise your thoughts

Page 78: The rocket internet experience @ PHP.TO.START 2013 in Turin

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Page 79: The rocket internet experience @ PHP.TO.START 2013 in Turin

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Drown together

Page 80: The rocket internet experience @ PHP.TO.START 2013 in Turin

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Drown together

Accept evidences

Page 81: The rocket internet experience @ PHP.TO.START 2013 in Turin

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Drown together

Accept evidences

Ready to move on

Page 82: The rocket internet experience @ PHP.TO.START 2013 in Turin

The BIB approach

Page 83: The rocket internet experience @ PHP.TO.START 2013 in Turin

"BECAUSE IT'S BETTER!"

Page 84: The rocket internet experience @ PHP.TO.START 2013 in Turin

Do not change people becauseyou want things to get better.

Change things becauseyou want people to feel better.

Page 85: The rocket internet experience @ PHP.TO.START 2013 in Turin

Do not change people becauseyou want things to get better.

Change things becauseyou want people to feel better.

Page 86: The rocket internet experience @ PHP.TO.START 2013 in Turin

5. Adapt

Page 87: The rocket internet experience @ PHP.TO.START 2013 in Turin

"I wanna take 2 weeks of vacation,but I might decided to take an additional week

while I'm on vacation"

Page 88: The rocket internet experience @ PHP.TO.START 2013 in Turin

In Your Dreams

Page 89: The rocket internet experience @ PHP.TO.START 2013 in Turin

Or maybe not?

Page 90: The rocket internet experience @ PHP.TO.START 2013 in Turin

Different people,different environment,

different problemshttp://geshan.blogspot.it/2012/01/load-shedding-schedule-kathmandu-nepal.html

Page 91: The rocket internet experience @ PHP.TO.START 2013 in Turin

Don't give anything for granted

Page 92: The rocket internet experience @ PHP.TO.START 2013 in Turin

6. Mutate

Page 93: The rocket internet experience @ PHP.TO.START 2013 in Turin

In ~3 months

Page 94: The rocket internet experience @ PHP.TO.START 2013 in Turin

In ~6 months

Page 95: The rocket internet experience @ PHP.TO.START 2013 in Turin

In ~9 months

Page 96: The rocket internet experience @ PHP.TO.START 2013 in Turin

In ~1 year

Page 97: The rocket internet experience @ PHP.TO.START 2013 in Turin

Recap

Page 98: The rocket internet experience @ PHP.TO.START 2013 in Turin

All of this besides day-to-day development

Page 99: The rocket internet experience @ PHP.TO.START 2013 in Turin

~3 months: 1 deployment a week

Page 100: The rocket internet experience @ PHP.TO.START 2013 in Turin

~6 months: 1 deployment a day

Page 101: The rocket internet experience @ PHP.TO.START 2013 in Turin

~9 months: 2/3 deployment a week

Page 102: The rocket internet experience @ PHP.TO.START 2013 in Turin

~1 year: ?

Page 103: The rocket internet experience @ PHP.TO.START 2013 in Turin

"Instead of replacing a monolithic approach with another monolithic approach, you split the system in

layers and work on each of those layers."

Page 104: The rocket internet experience @ PHP.TO.START 2013 in Turin

SOA

Page 105: The rocket internet experience @ PHP.TO.START 2013 in Turin

Refactoring your architecture understanding SOA

http://odino.org/refactoring-your-architecture-go-for-soa/

Page 106: The rocket internet experience @ PHP.TO.START 2013 in Turin

A service exists...

Page 107: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 108: The rocket internet experience @ PHP.TO.START 2013 in Turin

Another one might want to dealwith the same data...

Page 109: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 110: The rocket internet experience @ PHP.TO.START 2013 in Turin

And ask the first one to compute some datafor itself...

Page 111: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 112: The rocket internet experience @ PHP.TO.START 2013 in Turin

And once it's done, there might be the chancewe want to raise an event...

Page 113: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 114: The rocket internet experience @ PHP.TO.START 2013 in Turin

And monitor if there is a problem...

Page 115: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 116: The rocket internet experience @ PHP.TO.START 2013 in Turin

The paradigm changes

Page 117: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 118: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 119: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 120: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 121: The rocket internet experience @ PHP.TO.START 2013 in Turin
Page 122: The rocket internet experience @ PHP.TO.START 2013 in Turin

No one is designing Web Services for you anymore

Page 123: The rocket internet experience @ PHP.TO.START 2013 in Turin

Interfaces are crucial

Page 124: The rocket internet experience @ PHP.TO.START 2013 in Turin

Software design is crucial

Page 125: The rocket internet experience @ PHP.TO.START 2013 in Turin

7. Delegate

Page 126: The rocket internet experience @ PHP.TO.START 2013 in Turin

A team of 12

Page 127: The rocket internet experience @ PHP.TO.START 2013 in Turin

A company of ~150

Page 128: The rocket internet experience @ PHP.TO.START 2013 in Turin

Release managementhttp://odino.org/source-code-workflow-after-3-months-of-github/

Page 129: The rocket internet experience @ PHP.TO.START 2013 in Turin

Code review

Page 130: The rocket internet experience @ PHP.TO.START 2013 in Turin

Latter code review

Page 131: The rocket internet experience @ PHP.TO.START 2013 in Turin

Handling pull requests

Page 132: The rocket internet experience @ PHP.TO.START 2013 in Turin

Handling pull requests

Page 133: The rocket internet experience @ PHP.TO.START 2013 in Turin

master / develop / release

Page 134: The rocket internet experience @ PHP.TO.START 2013 in Turin

master / develop / release

Page 135: The rocket internet experience @ PHP.TO.START 2013 in Turin

Deployments

Page 136: The rocket internet experience @ PHP.TO.START 2013 in Turin

Request deployments

Page 137: The rocket internet experience @ PHP.TO.START 2013 in Turin

Release notes

Page 138: The rocket internet experience @ PHP.TO.START 2013 in Turin

Advise on release notes

Page 139: The rocket internet experience @ PHP.TO.START 2013 in Turin

Maintenance

Page 140: The rocket internet experience @ PHP.TO.START 2013 in Turin

First contact

Page 141: The rocket internet experience @ PHP.TO.START 2013 in Turin

First contact

Page 142: The rocket internet experience @ PHP.TO.START 2013 in Turin

Verification

Page 143: The rocket internet experience @ PHP.TO.START 2013 in Turin

Verification

Page 144: The rocket internet experience @ PHP.TO.START 2013 in Turin

Escalation

Page 145: The rocket internet experience @ PHP.TO.START 2013 in Turin

Reduced escalation

Page 146: The rocket internet experience @ PHP.TO.START 2013 in Turin

Product management

Page 147: The rocket internet experience @ PHP.TO.START 2013 in Turin

Prioritization

Page 148: The rocket internet experience @ PHP.TO.START 2013 in Turin

Advise on prioritization

Page 149: The rocket internet experience @ PHP.TO.START 2013 in Turin

Handle deadlines

Page 150: The rocket internet experience @ PHP.TO.START 2013 in Turin

Handle Manage critical deadlines

Page 151: The rocket internet experience @ PHP.TO.START 2013 in Turin

Delegation means...

Page 152: The rocket internet experience @ PHP.TO.START 2013 in Turin

Faster cycles

Page 153: The rocket internet experience @ PHP.TO.START 2013 in Turin

More time to pair and teach

Page 154: The rocket internet experience @ PHP.TO.START 2013 in Turin

Committed team members

Page 155: The rocket internet experience @ PHP.TO.START 2013 in Turin

Alessandro Nadalin

Page 156: The rocket internet experience @ PHP.TO.START 2013 in Turin

Alessandro Nadalin

odino.org

Page 157: The rocket internet experience @ PHP.TO.START 2013 in Turin

Alessandro Nadalin

odino.org

@_odino_

Page 158: The rocket internet experience @ PHP.TO.START 2013 in Turin

Alessandro Nadalin

odino.org

@_odino_

Page 159: The rocket internet experience @ PHP.TO.START 2013 in Turin

BONUS

Page 160: The rocket internet experience @ PHP.TO.START 2013 in Turin

YOU?

Page 161: The rocket internet experience @ PHP.TO.START 2013 in Turin

10. Join us!

Page 162: The rocket internet experience @ PHP.TO.START 2013 in Turin

Lead Developer

Page 163: The rocket internet experience @ PHP.TO.START 2013 in Turin

PHP Developer

Page 164: The rocket internet experience @ PHP.TO.START 2013 in Turin

In Dubai.