making a quality change as a startup grows
DESCRIPTION
Almost every successful start-up company reaches a stage where the legacy code becomes a quality liability, withholding future progress. At MyHeritage we have faced the same issue. Since we are running a successful web-site and support a huge user base, we couldn't just stop the progress and “refactor” all of the required code. Doing a quality change in such a situation is an extreme challenge that requires the right state of mind and the right set of people.TRANSCRIPT
Making a quality change as a startup grows
Author: Ran LevyJune 2014
• Overview - MyHeritage
• The beginning
• Making a quality change
• Moving forward and Summary
Agenda
Enable you to explore, discover and preserve family history and have meaningful interactions with your family around your
shared story.
Our current addressable market is therefore anyone sufficiently interested in that value proposition
Our customer value proposition
Research Document Share
Challenges: Scale
70 million registered users
1.5 billion tree profiles in 25 million trees
5 billion historical records
200 million photos
40 languages
1 million daily emails
Overview - MyHeritage
• The beginning
• Making a quality change
• Moving forward and Summary
Agenda
• Startup mode
– “I emailed you the requirements. Please have it ready by tomorrow ”.
– Obviously such mode has its impact in terms of:• Procedures.• Habits.• Poor code can’t scale.
The beginning
• A change had to be made
Constraints
Do it right vs. do it fast
Culture change is always difficult
The beginning
• Though changes are not easy but we have realized:
– We have the right people.
– We have the right attitude.
The wind of the change
• Starting with short research and pilot.
• Small measurable changes.
• LIBTWYE – Leave It Better Than When You Enter.
• Adopt as we go.
• Get management buy-in for the greater investment in quality.
General concepts along the way
The following slides will give a slight taste of some quality issues we handled ….
General concepts along the way
Overview - MyHeritage
The beginning
• Making a quality change
• Moving forward and Summary
Agenda
• Highly important for a company with 40+ developers:• Supports code quality.• Has fewer bugs.• Can be easily maintained.• Helps new team members get into new code.
Coding standards
• What was done?– Came up with coding standards+ document.– Reviewed and agreed by all developers.– Patiently commenting about pitfalls.
• Achievements:– Unified code formatting (including major legacy code reformatting).– Better error handling.– Easier to review code.– Faster ramp up phase of new developers.
Coding standards
• Mandatory in all system, especially complex ones:• Increases product quality.• Provides greater coverage than functional test.• Shortens overall feature development.• Code quality improvement.
Unit / integration testing
• What was done?– Research and pilot phase.– Gradual. – Adopt as we go.
• Achievements:– Goes without saying.– Over 75% LOC coverage of new features.– Increasing number of tests for legacy code.– Jenkins integration.
Unit / integration testing
• Testing needs to be done in all levels
– Covered in the next session …
End to end testing
• High scale system needs “think before code” phase– A phase to sync all parties.– Taking “non functional requirement” into consideration.– Identifying re-usable components.– Knowledge sharing.– Feedback gathering.
Technical design phase
• What was done?– Template for design doc that reviewed and discussed.– Covers:
• Non functional req.: performance, scale, testability, operability…• Different system views: static, dynamic, physical.
• Achievements– Rapid feedback on important features.– Major aspects were not neglected.– Increased re-usability.– Adopted by one dev. team and spread to the others.
Technical design phase
• Visibility is a must in every operational system:– Know your applicative errors.– Capability to classify and analyze them.– Automatic scanning and alerting systems.
Increasing visibility
• What was done?– Policy for errors reporting.– Collecting errors from all ~200 machines.– Development of automatic scanning tools.
• Achievements– Excellent visibility.– Reacting fast on errors.
Increasing visibility
Overview - MyHeritage
The beginning
Making a quality change
• Moving forward and Summary
Agenda
• Quality is contagious:– Started with one team and spread to the entire R&D.– Initiatives pushed by many R&D members.– IT support for increasing visibility with Kibana and Anemometer.– Underlying the required steps for continuous delivery. – Crucible for more efficient code reviews.
Moving forward
• In every successful company the time to switch from “quick and dirty” mode to producing high quality SW arrives sooner or later.
• It’s in the hands of every R&D member to make a change.
• Prototype, gradual change and improvement as go, are the keys for success.
Summary