Upload
alessandro-nadalin
View
7.355
Download
0
Embed Size (px)
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.