41
Back-end Guild Manifesto

Wix.com Back-end Engineering Guild Manifesto

Embed Size (px)

Citation preview

Page 1: Wix.com Back-end Engineering Guild Manifesto

Back-end Guild Manifesto

Page 2: Wix.com Back-end Engineering Guild Manifesto

Guild Objectives

• Dev velocity & developer productivity • Ensure products meet Wix production quality• Promote code quality and maintainability

• Be the glue between the different groups.• Teach and promote Wix culture• Promote transparency• Enabling the overall alignments• Knowledge share

• Provide professional guidelines & tool-set

• Responsible for the professional development of the guild members (training, workshops, conferences etc.)

Page 3: Wix.com Back-end Engineering Guild Manifesto
Page 4: Wix.com Back-end Engineering Guild Manifesto

esponsibility

wnership

uality

haring

Page 5: Wix.com Back-end Engineering Guild Manifesto
Page 6: Wix.com Back-end Engineering Guild Manifesto
Page 7: Wix.com Back-end Engineering Guild Manifesto

• Software architecture• Data architecture• Scalability• Performance• Availability• Fallbacks• Monitoring• Maintenance• Deployment• Networking• Recovery

Back-end engineer’s responsibilities

Page 8: Wix.com Back-end Engineering Guild Manifesto
Page 9: Wix.com Back-end Engineering Guild Manifesto

Help groups to be more efficient

Understand developer’s time wasters and solve them.

Provide feedback on infrastructure & devexperience.

Manage dependencies (system & organization).

Smart use of shared infrastructure and code base.

Page 10: Wix.com Back-end Engineering Guild Manifesto

Dev velocity

Build tools for developers

Development infrastructure improvements (build

tools, deployment system…)

Platform infrastructure & framework

Page 11: Wix.com Back-end Engineering Guild Manifesto

Looking into the future

Code quality.

Shared lesson learned.

Code maintainability.

Support company growth.

Page 12: Wix.com Back-end Engineering Guild Manifesto

Knowledge share and alignments

1 on 1 mentoring

Develop training courses content

Mentoring

Workshops

Tech talks

Page 13: Wix.com Back-end Engineering Guild Manifesto

Ensure production level quality

Best practices.

Post-mortem.

Peer review.

Production debuging .

Page 14: Wix.com Back-end Engineering Guild Manifesto

Teach and share best practices

Project spotlight

Retrospective

Bug Hunts

Post mortems

Page 15: Wix.com Back-end Engineering Guild Manifesto

Attract & Keep top talent

Build and enhance R&D Brand.

Engineers professional development .

Page 16: Wix.com Back-end Engineering Guild Manifesto

Professional development & R&D brand

Tech talks

Blog posts

Pair programing

Meetups

Open source

Page 17: Wix.com Back-end Engineering Guild Manifesto

When do you meet the guild

Before coming to Wix

• Attract and recruit talent

When you join

• New employee training (Kickstart / Pairing)

Daily

• Dedicated “guild masters” working continuously with the teams

Dedicated time

• Guild day

Page 18: Wix.com Back-end Engineering Guild Manifesto

New Employee Training

Culture

Knowledge gaps (TDD, Scala, Java, Design…)

Production scale (Patterns, Best practices…)

Continuous delivery

DevOps

Page 19: Wix.com Back-end Engineering Guild Manifesto

Guild Masters

• Distribute knowledge cross teams

• Teach best practices

• Help in execution

• Help in education

• Review architecture

Guild masters are the guild’s top engineers dedicated to support different groups

Page 20: Wix.com Back-end Engineering Guild Manifesto
Page 21: Wix.com Back-end Engineering Guild Manifesto

Guild Day

• Engineers work 4 days for their company

• Thursday is Guild day.

• Developers conduct quality enhancing activities with the Guild.

Page 22: Wix.com Back-end Engineering Guild Manifesto

Guild Day – Why?• Builds cross-team relationships

• Shares knowledge

• Assimilate the culture

• Lesson learned cross teams

• Continuous improvement

• Promotes innovation

• Professional development

Page 23: Wix.com Back-end Engineering Guild Manifesto

Weekdays guild activities:

Sun,Tue,Wed 10:15-10:30 – Representatives dailyMon 10:15-10:45 - Weekly meeting + Bug huntThu - Guild day

Guild day schedule:

10:00-11:00 Retrospective11:00-11:15 Break11:15-11:30 Project spotlight11:30-13:00 Tech talk or Workshop13:00- End of day: Lunch + Guild tasks (Games of Gangs)

Page 24: Wix.com Back-end Engineering Guild Manifesto

Production Bug Hunt

• Service owner picks a service running on production• Open the monitoring system• Explains the service to all Guild’s members

– What the service does– Exceptions thrown in production– Performance matrix– Build warnings

• Get a list of AI from group feedback (sometimes for dependent services)

Page 25: Wix.com Back-end Engineering Guild Manifesto

Production Bug Hunt - Why?

• Improve service stability

• Teach developers about services they don’t own

• Understand how services behave on production

• Open discussion and ideas from guild members

• Discover unexpected use patterns

• Find bugs on production

• Lessons learned from other teams experience

Page 26: Wix.com Back-end Engineering Guild Manifesto

Retrospective

• Main tool for continuous improvement

• Share lesson learned.

• Solve problems

• Suggestions on how to improve:– Our team

– Quality of products

– Process

– Effectiveness of the R&D organization.

Page 27: Wix.com Back-end Engineering Guild Manifesto

Retrospective – How ?

• Whenever developers encounter issues / dilemmas, they are encouraged to post them on a board (daPulse) for public discussion

• Topics posted on the board during the week constitute the agenda for the retrospective

Page 28: Wix.com Back-end Engineering Guild Manifesto

Retrospective – Board

Page 29: Wix.com Back-end Engineering Guild Manifesto
Page 30: Wix.com Back-end Engineering Guild Manifesto

Tech Talks

• Developers give a tech talks every week

• People from other departments in the company

• Guest speakers

• Open to anyone from Wix

• Using Meetup http://www.meetup.com/at-wix/to invite outsiders to our internal talks (if appropriate)

• Talks videos http://goo.gl/IDqXTi

Page 31: Wix.com Back-end Engineering Guild Manifesto

Tech Talks – Why ?

• Training employees

• Knowledge sharing

• Educating about other activities at Wix

• Professional development

• Recruitment funnel

Page 32: Wix.com Back-end Engineering Guild Manifesto

Project Spotlight

• Team presents an interesting project

• Present the new product

• Present the challenges

• Share interesting patterns / architecture

• Lessons learned

Page 33: Wix.com Back-end Engineering Guild Manifesto

Empower a Company (Group)

• When a company/group needs help it can request the Guild members to help in:

– Reviews

– Tests

– Infrastructure enhancements

– Training

– Extra manpower

Page 34: Wix.com Back-end Engineering Guild Manifesto

Games of Gangs – Guild Tasks

• Build tools that help developers• Enhance platform / framework

• Pay legacy technical debt• Improve tests

• Research something new for your company• Work on a task for a different group• Work on an open source project• 1 on 1 mentoring

Page 35: Wix.com Back-end Engineering Guild Manifesto

Games of Gangs Objectives

• Improve code quality

• Improve developer productivity

• Find repeating patterns across projects - generalize a solution or improve the infrastructure

• Learn other projects (easier to step in if necessary)

• Unbiased review of other projects

• Learn about problems and solutions other teams faced and solved that you may also encounter.

• It fun and breaks the day to day routine

Page 36: Wix.com Back-end Engineering Guild Manifesto

How it is Done

• Tasks are being done in pair programing (pair with a developer from a different group)

• For each task you make you get bragging points

• Tasks are being suggested on a public board by the developers

• Tasks need to meet one of the following motivations (Improve quality, productivity, help on a different project or knowledge sharing).

Page 37: Wix.com Back-end Engineering Guild Manifesto

Games of Gangs Task Board

0pt - Single person task 1pt - Blog post or other branding activities 2pt - Pair with someone in your team 3pts - Pair programming with a person from a different group3pts - Tech talk for the guild 4pts - Tech talk in dedicated meetups and conferences 4pts - Pair with off-shore developer

Page 38: Wix.com Back-end Engineering Guild Manifesto

Project Rotation within company

• Team usually has more than one project

• Avoid having one developer working on same service for long period of time

Page 39: Wix.com Back-end Engineering Guild Manifesto

Project Rotation within company– Why?

• There is no single person with a knowledge on a specific component

• Ongoing review

• Keep it interesting

• Team is the 24/7/365 production focal point

• Everybody owns everything

Page 40: Wix.com Back-end Engineering Guild Manifesto

CFO asks CEO: “What happens if we invest in developing our people and they leave us?”

CEO: “What happened if we don’t and they stay?”

Page 41: Wix.com Back-end Engineering Guild Manifesto