a rocket internet experience @ forumphp paris 2013

150
A ROCKET INTERNET EXPERIENCE Alessandro Nadalin, 22nd November 2013

Upload: alessandro-nadalin

Post on 08-May-2015

14.851 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: A Rocket Internet experience @ ForumPHP Paris 2013

A ROCKET INTERNET EXPERIENCE

Alessandro Nadalin, 22nd November 2013

Page 2: A Rocket Internet experience @ ForumPHP Paris 2013

AGENDA

1. Context2. Responsibilities

3. Building the team4. Get started

5. Mutate6. Delegate

7. BONUS

Page 3: A Rocket Internet experience @ ForumPHP Paris 2013

1. Context

Page 4: A Rocket Internet experience @ ForumPHP Paris 2013

1st April 2012

Page 5: A Rocket Internet experience @ ForumPHP Paris 2013

2. Responsibilities

Page 6: A Rocket Internet experience @ ForumPHP Paris 2013

Strive towards excellence

Page 7: A Rocket Internet experience @ ForumPHP Paris 2013

NO

Page 8: A Rocket Internet experience @ ForumPHP Paris 2013

Make things work

Page 9: A Rocket Internet experience @ ForumPHP Paris 2013

TDD is useless

Page 10: A Rocket Internet experience @ ForumPHP Paris 2013

Automated tests are useless

Page 11: A Rocket Internet experience @ ForumPHP Paris 2013

Symfony2 is useless

Page 12: A Rocket Internet experience @ ForumPHP Paris 2013

PEOPLE, FFS!

Page 13: A Rocket Internet experience @ ForumPHP Paris 2013

3. Building the team

Page 14: A Rocket Internet experience @ ForumPHP Paris 2013

You can't make everyone you know relocate

Page 15: A Rocket Internet experience @ ForumPHP Paris 2013

You can't relocate your company

Page 16: A Rocket Internet experience @ ForumPHP Paris 2013

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

Page 17: A Rocket Internet experience @ ForumPHP Paris 2013

HIRE THE YOUNG

Page 18: A Rocket Internet experience @ ForumPHP Paris 2013

They forget about the clock and areusually attracted to new technologies

Page 19: A Rocket Internet experience @ ForumPHP Paris 2013

Moreover, there is no big bias.

Page 20: A Rocket Internet experience @ ForumPHP Paris 2013

IGNORE CVs

Page 21: A Rocket Internet experience @ ForumPHP Paris 2013

How many PHP indians companies are out there?

Page 22: A Rocket Internet experience @ ForumPHP Paris 2013

How many of them do you know?

Page 23: A Rocket Internet experience @ ForumPHP Paris 2013

We are biased

Page 24: A Rocket Internet experience @ ForumPHP Paris 2013

Ask for partial overtime

Page 25: A Rocket Internet experience @ ForumPHP Paris 2013

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

Page 26: A Rocket Internet experience @ ForumPHP Paris 2013

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

Page 27: A Rocket Internet experience @ ForumPHP Paris 2013

Means overtime forchanging labels it's useless,

of course

Page 28: A Rocket Internet experience @ ForumPHP Paris 2013

but OT is fine, get over it

Page 29: A Rocket Internet experience @ ForumPHP Paris 2013

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

Page 30: A Rocket Internet experience @ ForumPHP Paris 2013

Pyramid interview

Page 31: A Rocket Internet experience @ ForumPHP Paris 2013

Who is Frederick Brooks?

Page 32: A Rocket Internet experience @ ForumPHP Paris 2013

What is the second-system effect?

Page 33: A Rocket Internet experience @ ForumPHP Paris 2013

What does PEAA mean?

Page 34: A Rocket Internet experience @ ForumPHP Paris 2013

What is a data mapper?

Page 35: A Rocket Internet experience @ ForumPHP Paris 2013

Why is it cool?

Page 36: A Rocket Internet experience @ ForumPHP Paris 2013

Why is OOP better than procedural code?

Page 37: A Rocket Internet experience @ ForumPHP Paris 2013

What happens when you hit enter in the browser bar?

Page 38: A Rocket Internet experience @ ForumPHP Paris 2013

...and so on.

Page 39: A Rocket Internet experience @ ForumPHP Paris 2013

Surprise them

Page 40: A Rocket Internet experience @ ForumPHP Paris 2013

An interview is always a good opportunity for learning.

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

Page 41: A Rocket Internet experience @ ForumPHP Paris 2013

...wear shorts if you want.

Page 42: A Rocket Internet experience @ ForumPHP Paris 2013

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

Page 43: A Rocket Internet experience @ ForumPHP Paris 2013

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 44: A Rocket Internet experience @ ForumPHP Paris 2013

Gain authority on the field, not on paper

If you wear shorts...

Page 45: A Rocket Internet experience @ ForumPHP Paris 2013

Gain authority on the field, not on paper

Remember people not to be judgemental

If you wear shorts...

Page 46: A Rocket Internet experience @ ForumPHP Paris 2013

Beach after Work!

If you wear shorts...

Page 47: A Rocket Internet experience @ ForumPHP Paris 2013

Offer fair packages

Page 48: A Rocket Internet experience @ ForumPHP Paris 2013

At the end of it...

Page 49: A Rocket Internet experience @ ForumPHP Paris 2013
Page 50: A Rocket Internet experience @ ForumPHP Paris 2013

4. Get started

Page 51: A Rocket Internet experience @ ForumPHP Paris 2013

"It takes 3 months to be effectively productive"

Page 52: A Rocket Internet experience @ ForumPHP Paris 2013

Why?

Page 53: A Rocket Internet experience @ ForumPHP Paris 2013

"Because the developers can't understand the code"

Page 54: A Rocket Internet experience @ ForumPHP Paris 2013

Solution #1

Fire them all

Page 55: A Rocket Internet experience @ ForumPHP Paris 2013

Solution #1

Fire them all

Page 56: A Rocket Internet experience @ ForumPHP Paris 2013

Why don't they understand the code?

Page 57: A Rocket Internet experience @ ForumPHP Paris 2013

"Because the code is not that domain driven"

Page 58: A Rocket Internet experience @ ForumPHP Paris 2013

Solution #2

Replace the software

Page 59: A Rocket Internet experience @ ForumPHP Paris 2013

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

of the architecture with NodeJS...

Page 60: A Rocket Internet experience @ ForumPHP Paris 2013

...if I was that dumb.

Page 61: A Rocket Internet experience @ ForumPHP Paris 2013

COST / BENEFIT

Page 62: A Rocket Internet experience @ ForumPHP Paris 2013

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 63: A Rocket Internet experience @ ForumPHP Paris 2013

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

Page 64: A Rocket Internet experience @ ForumPHP Paris 2013

"Not everyone knows how decoupled DDD works"

Page 65: A Rocket Internet experience @ ForumPHP Paris 2013

And that's perfectly fine.

Page 66: A Rocket Internet experience @ ForumPHP Paris 2013

Imagine Fabien as your bosswhen you were a Rookie?

Page 67: A Rocket Internet experience @ ForumPHP Paris 2013

We're all born n00bs

Page 68: A Rocket Internet experience @ ForumPHP Paris 2013

Socratic approach

Page 69: A Rocket Internet experience @ ForumPHP Paris 2013

Socratic approach

Question something

Page 70: A Rocket Internet experience @ ForumPHP Paris 2013

Socratic approach

Question something

Raise your thoughts

Page 71: A Rocket Internet experience @ ForumPHP Paris 2013

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Page 72: A Rocket Internet experience @ ForumPHP Paris 2013

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Drown together

Page 73: A Rocket Internet experience @ ForumPHP Paris 2013

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Drown together

Accept evidences

Page 74: A Rocket Internet experience @ ForumPHP Paris 2013

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Drown together

Accept evidences

Ready to move on

Page 75: A Rocket Internet experience @ ForumPHP Paris 2013

The BIB approach

Page 76: A Rocket Internet experience @ ForumPHP Paris 2013

"BECAUSE IT'S BETTER!"

Page 77: A Rocket Internet experience @ ForumPHP Paris 2013

Do not change people becauseyou want things to get better.

Change things becauseyou want people to feel better.

Page 78: A Rocket Internet experience @ ForumPHP Paris 2013

Do not change people becauseyou want things to get better.

Change things becauseyou want people to feel better.

Page 79: A Rocket Internet experience @ ForumPHP Paris 2013

5. Mutate

Page 80: A Rocket Internet experience @ ForumPHP Paris 2013

In ~3 months

Page 81: A Rocket Internet experience @ ForumPHP Paris 2013

In ~6 months

Page 82: A Rocket Internet experience @ ForumPHP Paris 2013

In ~9 months

Page 83: A Rocket Internet experience @ ForumPHP Paris 2013

In ~1 year

Page 84: A Rocket Internet experience @ ForumPHP Paris 2013

In ~1.5 years

Page 85: A Rocket Internet experience @ ForumPHP Paris 2013

Recap

Page 86: A Rocket Internet experience @ ForumPHP Paris 2013

All of this besides day-to-day development

Page 87: A Rocket Internet experience @ ForumPHP Paris 2013

~3 months: 1 deployment a week

Page 88: A Rocket Internet experience @ ForumPHP Paris 2013

~6 months: 1 deployment a day

Page 89: A Rocket Internet experience @ ForumPHP Paris 2013

~9 months: 2/3 deployment a week

Page 90: A Rocket Internet experience @ ForumPHP Paris 2013

~1 year: ½ deployments per week

Page 91: A Rocket Internet experience @ ForumPHP Paris 2013

~1.5 years: whenever s**t is ready

Page 92: A Rocket Internet experience @ ForumPHP Paris 2013

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

layers and work on each of those layers."

Page 93: A Rocket Internet experience @ ForumPHP Paris 2013

SOA

Page 94: A Rocket Internet experience @ ForumPHP Paris 2013

The paradigm changes

Page 95: A Rocket Internet experience @ ForumPHP Paris 2013

A software design based on discrete software components, "services", that collectively provide the functionalities of the larger

software application

Page 96: A Rocket Internet experience @ ForumPHP Paris 2013

You typically start with theinfamous web application

which does everything on its own

Page 97: A Rocket Internet experience @ ForumPHP Paris 2013
Page 98: A Rocket Internet experience @ ForumPHP Paris 2013

Then you realize that to providea chat system to your users

PHP might not be the best...

Page 99: A Rocket Internet experience @ ForumPHP Paris 2013
Page 100: A Rocket Internet experience @ ForumPHP Paris 2013

And soon you also decide,to improve performances,

that your frontend should have its ownin-memory persistence, to be faster

and you put it into another service

Page 101: A Rocket Internet experience @ ForumPHP Paris 2013
Page 102: A Rocket Internet experience @ ForumPHP Paris 2013

Then, as always...

Page 103: A Rocket Internet experience @ ForumPHP Paris 2013

SCALE.

Page 104: A Rocket Internet experience @ ForumPHP Paris 2013
Page 105: A Rocket Internet experience @ ForumPHP Paris 2013

And eventually, your lead architectwill come up and tell youthat your Java-based chat

sucks and should bereplaced with...

Page 106: A Rocket Internet experience @ ForumPHP Paris 2013

NODEJS

Page 107: A Rocket Internet experience @ ForumPHP Paris 2013
Page 108: A Rocket Internet experience @ ForumPHP Paris 2013

In human-understandable words, SOA is a software design which embraces splitting a monolithic, totalitarian software

architecture into smaller pieces, thus making them independent, loosely coupled and more maintainable

Page 109: A Rocket Internet experience @ ForumPHP Paris 2013

A backend service exists...

Page 110: A Rocket Internet experience @ ForumPHP Paris 2013
Page 111: A Rocket Internet experience @ ForumPHP Paris 2013

...and a new frontend pops out

Page 112: A Rocket Internet experience @ ForumPHP Paris 2013
Page 113: A Rocket Internet experience @ ForumPHP Paris 2013

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

Page 114: A Rocket Internet experience @ ForumPHP Paris 2013
Page 115: A Rocket Internet experience @ ForumPHP Paris 2013

And ask the first one to compute some data...

Page 116: A Rocket Internet experience @ ForumPHP Paris 2013
Page 117: A Rocket Internet experience @ ForumPHP Paris 2013

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

Page 118: A Rocket Internet experience @ ForumPHP Paris 2013
Page 119: A Rocket Internet experience @ ForumPHP Paris 2013

And monitor if there is a problem...

Page 120: A Rocket Internet experience @ ForumPHP Paris 2013
Page 121: A Rocket Internet experience @ ForumPHP Paris 2013

WARNING

Page 122: A Rocket Internet experience @ ForumPHP Paris 2013

No one is designing Web Services for you anymore

Page 123: A Rocket Internet experience @ ForumPHP Paris 2013

Interfaces are crucial

Page 124: A Rocket Internet experience @ ForumPHP Paris 2013

Software design is crucial

Page 125: A Rocket Internet experience @ ForumPHP Paris 2013

Don’t limit yourself to develop stuff

Page 126: A Rocket Internet experience @ ForumPHP Paris 2013

ENGINEER THINGS

Page 127: A Rocket Internet experience @ ForumPHP Paris 2013

6. Delegate

Page 128: A Rocket Internet experience @ ForumPHP Paris 2013

A team of 12

Page 129: A Rocket Internet experience @ ForumPHP Paris 2013

A company of ~200

Page 130: A Rocket Internet experience @ ForumPHP Paris 2013

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

Page 131: A Rocket Internet experience @ ForumPHP Paris 2013

Maintenance

Page 132: A Rocket Internet experience @ ForumPHP Paris 2013

Product management

Page 133: A Rocket Internet experience @ ForumPHP Paris 2013

Delegation means...

Page 134: A Rocket Internet experience @ ForumPHP Paris 2013

Faster cycles

Page 135: A Rocket Internet experience @ ForumPHP Paris 2013

More time to pair and teach

Page 136: A Rocket Internet experience @ ForumPHP Paris 2013

Committed team members

Page 137: A Rocket Internet experience @ ForumPHP Paris 2013

...yawn...

Page 138: A Rocket Internet experience @ ForumPHP Paris 2013

Alessandro Nadalin

Page 139: A Rocket Internet experience @ ForumPHP Paris 2013

Alessandro Nadalin

@_odino_

Page 140: A Rocket Internet experience @ ForumPHP Paris 2013

Alessandro Nadalin

@_odino_

Namshi | Rocket Internet

Page 141: A Rocket Internet experience @ ForumPHP Paris 2013

Alessandro Nadalin

@_odino_

Namshi | Rocket Internet

VP Technology

Page 142: A Rocket Internet experience @ ForumPHP Paris 2013

Alessandro Nadalin

@_odino_

Namshi | Rocket Internet

VP Technology

odino.org

Page 143: A Rocket Internet experience @ ForumPHP Paris 2013

Thanks!Alessandro Nadalin

@_odino_

Namshi | Rocket Internet

VP Technology

odino.org

Page 144: A Rocket Internet experience @ ForumPHP Paris 2013

7. BONUS

Page 145: A Rocket Internet experience @ ForumPHP Paris 2013

YOU?

Page 146: A Rocket Internet experience @ ForumPHP Paris 2013

Join us!

Page 147: A Rocket Internet experience @ ForumPHP Paris 2013

Sr. Software Engineer

Page 148: A Rocket Internet experience @ ForumPHP Paris 2013

In Dubai.

Page 150: A Rocket Internet experience @ ForumPHP Paris 2013

Thanks!Alessandro Nadalin

@_odino_

Namshi | Rocket Internet

VP Technology

odino.org