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

Preview:

DESCRIPTION

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

Citation preview

A ROCKET INTERNET EXPERIENCE

AGENDA

1. Context2. Responsibilities

3. Building the team4. Get started

5. Adapt6. Mutate

7. Delegate8. BONUS

1. Context

1st April 2012

2. Responsibilities

Strive towards excellence

No

Make things work

TDD is useless

Automated tests are useless

Symfony2 is useless

PEOPLE, FFS!

3. Building the team

You can't make everyone you know relocate

You can't relocate your company

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

HIRE THE YOUNG

They forget about their watchesand are usually attracted to new technologies

Moreover, there is no big bias.

SPECIFIC TARGETS

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

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

IGNORE CVs

How many PHP indians companies are out there?

How many of them do you know?

We are biased

Ask for partial overtime

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

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

Means overtime forchanging labels it's useless,

of course

but OT is fine, get over it

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

Pyramid interview

Who is Frederick Brooks?

What is the second-system effect?

What does PEAA mean?

What is a data mapper?

Why is it cool?

Why is OOP better than procedural code?

What happens when you hit enter in the browser bar?

...and so on.

Surprise them

An interview is always a good opportunity for learning.

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

...wear shorts if you want.

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

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...

Gain authority on the field, not on paper

Remember people not to be judgemental

If you wear shorts...

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...

Offer fair packages

At the end of it...

4. Get started

"It takes 3 months to be effectively productive"

Why?

"Because the developers can't understand the code"

Solution #1

Fire them all

Solution #1

Fire them all

Why don't they understand the code?

"Because the code is not that domain driven"

Solution #2

Replace the software

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

of the architecture with NodeJS...

...if I was that dumb.

COST / BENEFIT

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.

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

"Not everyone knows how decoupled DDD works"

And that's perfectly fine.

Imagine Fabien as your bosswhen you were a Rookie?

We're all born n00bs

Socratic approach

Socratic approach

Question something

Socratic approach

Question something

Raise your thoughts

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Drown together

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Drown together

Accept evidences

Socratic approach

Question something

Raise your thoughts

Let them elaborate

Drown together

Accept evidences

Ready to move on

The BIB approach

"BECAUSE IT'S BETTER!"

Do not change people becauseyou want things to get better.

Change things becauseyou want people to feel better.

Do not change people becauseyou want things to get better.

Change things becauseyou want people to feel better.

5. Adapt

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

while I'm on vacation"

In Your Dreams

Or maybe not?

Different people,different environment,

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

Don't give anything for granted

6. Mutate

In ~3 months

In ~6 months

In ~9 months

In ~1 year

Recap

All of this besides day-to-day development

~3 months: 1 deployment a week

~6 months: 1 deployment a day

~9 months: 2/3 deployment a week

~1 year: ?

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

layers and work on each of those layers."

SOA

Refactoring your architecture understanding SOA

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

A service exists...

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

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

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

And monitor if there is a problem...

The paradigm changes

No one is designing Web Services for you anymore

Interfaces are crucial

Software design is crucial

7. Delegate

A team of 12

A company of ~150

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

Code review

Latter code review

Handling pull requests

Handling pull requests

master / develop / release

master / develop / release

Deployments

Request deployments

Release notes

Advise on release notes

Maintenance

First contact

First contact

Verification

Verification

Escalation

Reduced escalation

Product management

Prioritization

Advise on prioritization

Handle deadlines

Handle Manage critical deadlines

Delegation means...

Faster cycles

More time to pair and teach

Committed team members

Alessandro Nadalin

Alessandro Nadalin

odino.org

Alessandro Nadalin

odino.org

@_odino_

Alessandro Nadalin

odino.org

@_odino_

BONUS

YOU?

10. Join us!

Lead Developer

PHP Developer

In Dubai.

Recommended