Last month I spent in Singapore pair programming with team from pivotal labs, successfully pass the trial and Coderbunker joins pool of trusted vendors of our client. We continue work on the project from Shanghai.

Tech stack and process

Android native, JavaRx, Junit, Mockito, Espresso, dagger, git, TDD, Scrum

What makes this project interesting?

500k lines of code. 100+ Android engineers in Europe, North America and Asia deliver it for 5 markets. 2 years of ongoing development and the highest code quality of codebase I saw so far in mobile development.

Client is under NDA.

Who is the team?

Pivotal labs and our client team. Pivotal labs prefer rock bands over rock stars to deliver high quality software. Instead of hunting to hire rare famous 10x developers they focus to build teams and processes which helps them sustainably deliver lasting customer value in long run.

What is the recipe of their success?

Good corporate culture, pair programming, daily rotation, TDD, estimate complexity over time, strict work-life balance and multiple time-breaks during the day.

Pair programming.

In many industries professionals works in pairs to reduce risk of error, e.g. jet pilots. Software engineers also can do this which increase collaboration, helps to cover a big variety of edge cases that increase quality of architecture decisions and gives benefits of permanent code review

Daily rotation.

Each day they rotate pair: one of the members from pair goes to another pair so everyone stay on the same stream no more than 2 days. It gives everyone a whole codebase knowledge which again increase quality of their architectural decisions.

TDD

They practice test-driven development. They really do this. The big advantage of TDD is each new changes in codebase might broke something in some place and tests helps you spot this place immediately.

Complexity over time estimates.

They don’t estimate how long would it take to deliver this feature. Instead they estimate it’s complexity in traditional story points. It helps to focus on development of high quality code rather than deliver features to the date with compromised quality under needs of current moment. (*)

Work-life balance and multiple breaks during work day.

Researches shows knowledge workers can not work efficiently more 6 hours per day. That's why it is important to find time for rest each day to be productive tomorrow. With level of engagement required by pair programming work-life balance become even more important.

The question that takes my thoughts is does it only payoff in product companies?

* there is no information about how much features would be delivered at the end of the month, there is no deadline - nightmare for management! - but that's how it removes fear and stress from work and focus on results. They mitigate risks by makes stories small as much as possible to help management with planning.

Originally published in 2017-07 http://www.coderbunker.com/blog/coderbunker-a-new-client