Scaling R&D While Maintaining Quality - ILTeckTalks
Case study of how Wix supports rapid growth while maintaining quality by company structure, Games of Gangs - a game like activity that promotes knowledge sharing and more
• Sta5c storage is >1PB of data • 3 Data centers + 2 Clouds (Google, Amazon) • 1.5B HTTP requests/day • ~800 people work at Wix • Of which ~ 300 in R&D
hard • Resource and work duplica5on • Architecture alignment is hard • Technology knowledge sharing is hard • Limited opportunity for professional development
depends on the company’s current challenges, life cycle phase and culture • Every model should be tuned constantly and evolve with the company Our Assump/ons
exper5se, knowledge, tools, code, and prac5ces • Gang – a group of people that work in a related products • Compose of all required resources from the different disciplines (Guild) Wix’s Gangs & Guilds Model Guild Gang Guild Gang Gang
of the Guild • Independence of the Gang • Healthy balance between product and tech • Product features and technical equal in priority Guild Leader What How Guild Leader How Team member Team member
on produc5on • Present the service to all Guild members • What the service does • Excep5ons thrown in produc5on • Performance matrix • Build warnings • Get a list of AI from group feedback (some5mes for dependent services)
• Teach developers about services they don’t own • Understand how services behave on produc5on • Open discussion and ideas from group members • Discover unexpected use pajerns • Find bugs on produc5on • Lessons learned from other teams experience
/ dilemmas, they are encouraged to post them on a board (pulse) for public discussion • Topics posted on the board during the week cons5tute the agenda of the retrospec5ve
• Share lesson learned. • Solve problems • Sugges5ons on how to improve: • Our team • Quality of products • Process • Effec5veness of the R&D organiza5on.
• People from other departments in the company • Guest speakers • Open to anyone from Wix • Using Meetup hjp://www.meetup.com/at-‐wix/ to invite outsiders to our internal talks (if appropriate) • Talks videos hjp://goo.gl/IDqXTi
• Enhance plalorm / framework • Pay technical (legacy) debt (refactor, etc’) • Improve tests • Research something new for your “company” • Work on a task for a different “company” • Open source a project • 1 on 1 mentoring
• Improve developer produc5vity • Find repea5ng pajerns across projects -‐ generalize a solu5on or improve the infrastructure • Learn other projects (easier to step in if necessary) • Unbiased review of other projects • Learn about problems and solu5ons other teams faced and solved that you may also encounter. • It fun and breaks the day to day rou5ne
pushed to Git without being fully tested • We currently have around 10,000 automated tests • Before fixing a bug first write a test to reproduce the bug • Cover legacy (untested) systems with Integra5on tests 15:57
Separa5on of client (UI) and server projects • Dedicated data stores for each service • Stateless services Lesson learned: System architecture that decouples concerns
prac5ce dev-‐ centric culture from the Guild • Build new teams with at least one dev-‐centric ambassador to assimilate new teams into the culture. • Beware of hiring more people than you can train / assimilate successfully