Download - Wix.com Back-end Engineering Guild Manifesto
Back-end 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.)
esponsibility
wnership
uality
haring
• Software architecture• Data architecture• Scalability• Performance• Availability• Fallbacks• Monitoring• Maintenance• Deployment• Networking• Recovery
Back-end engineer’s responsibilities
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.
Dev velocity
Build tools for developers
Development infrastructure improvements (build
tools, deployment system…)
Platform infrastructure & framework
Looking into the future
Code quality.
Shared lesson learned.
Code maintainability.
Support company growth.
Knowledge share and alignments
1 on 1 mentoring
Develop training courses content
Mentoring
Workshops
Tech talks
Ensure production level quality
Best practices.
Post-mortem.
Peer review.
Production debuging .
Teach and share best practices
Project spotlight
Retrospective
Bug Hunts
Post mortems
Attract & Keep top talent
Build and enhance R&D Brand.
Engineers professional development .
Professional development & R&D brand
Tech talks
Blog posts
Pair programing
Meetups
Open source
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
New Employee Training
Culture
Knowledge gaps (TDD, Scala, Java, Design…)
Production scale (Patterns, Best practices…)
Continuous delivery
DevOps
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
Guild Day
• Engineers work 4 days for their company
• Thursday is Guild day.
• Developers conduct quality enhancing activities with the Guild.
Guild Day – Why?• Builds cross-team relationships
• Shares knowledge
• Assimilate the culture
• Lesson learned cross teams
• Continuous improvement
• Promotes innovation
• Professional development
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)
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)
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
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.
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
Retrospective – Board
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
Tech Talks – Why ?
• Training employees
• Knowledge sharing
• Educating about other activities at Wix
• Professional development
• Recruitment funnel
Project Spotlight
• Team presents an interesting project
• Present the new product
• Present the challenges
• Share interesting patterns / architecture
• Lessons learned
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
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
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
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).
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
Project Rotation within company
• Team usually has more than one project
• Avoid having one developer working on same service for long period of time
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
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?”