130 likes | 143 Views
Engineering Process at Microsoft. Dmitri Gavrilov Principal Software Development Lead Exchange Server. Agenda. Roles Career paths Product release cycle Tools. Roles. Three main roles: dev , test, product management Product Manager (PM): Owns scenarios Does not write code
E N D
Engineering Processat Microsoft Dmitri Gavrilov Principal Software Development Lead Exchange Server
Agenda • Roles • Career paths • Product release cycle • Tools
Roles • Three main roles: dev, test, product management • Product Manager (PM): • Owns scenarios • Does not write code • Interaction with customers, other teams • Writes functional specs • Dev (SDE): • Owns product code • Fixes product bugs • Writes design specs • Test (SDET): • Owns product quality • Writes test code and fixes test bugs • Writes test specs
Additional Roles • Managers • Lead, Manager, Director/PUM/GM • Executive (a hierarchy of VPs) • Architects • Super-smart individual contributors • Contractors • Manual testing/deployment/operations • Hourly pay, can only work 9 months out of 12.
More Additional Roles • User Experience/docs/help writers • Support • Escalation Engineers (frontline support, mostly in India, answer FAQs) • Support Engineers (second line of defence, know product well, can solve most problems) • Critical Problem Resolution Engineers (virtuoso debuggers) • Premier Field Engineers (dedicated to important customers) • Product Marketing • Sales
Career Paths Individual Contributor (IC) Architect Lead Manager Executive
Product Release Cycle • Milestones (6-9 months) • MQ (quality) • Dev/Test: fix postponed items from prev release • PM: Prioritize scenarios • M1-Mn (dev milestones) • Dev/Test/PM: Implement features • MP (polish) • Later milestones are released to external testers: • Internal testing (dogfooding) • Public Betas • Release Candidate • RTM/RTW (release to manufacturing/web) • SE (Support Engineering): hotfixes, service packs
Bug Bar • Criteria for taking/not taking bug fixes • There are always more bugs in the product • Do you fix them now or in the next milestone/release? • Bug bar is raised towards the end of milestone • Highest setting just before RTM • After RTM, the bar goes down somewhat • Safer to release a hotfix to a set of customers that need it • Hotfixes are rolled into service packs • When bar is high, bugs are triaged/approved by the War Team (release management people) • You come to war and defend your bug: prove why it meets the bar.
Bug Bar Example • High • High impact or frequent crash/hang, serious perf degradation, scale, config that will prevent production • Core scenario with high impact with no reasonable workaround • Data corruption or loss • RC blockers or RC failures • Very high impact supportability bugs that could save lots of time and money down the road • High impact globalization/localization issues • DOA and Test Pass blockers • CPX issues that prevent from shipping (Policheck, API scan, etc) • Security Issues rated as “Critical” based on the SWI guideline • Medium • Critical partner dependency issues (including other component teams, ExRAP and PSS) • Regressions • Functional behavior that is clearly against the design • Security issues rated as “Moderate” based on the SWI guideline • Supportability issues • Low • Code cleanups • Performance improvements beyond the stated goals • DCRs that are not essential to E12 SP1 • Branding • Bug with an easy workaround
Tools: Bug Tracking • Product Studio: database of bugs • Tree of components • Bug types: code bug, Design Change Request, Work Item, Customer Escalation, etc… • Bug lifetime: • Opened • Triaged by component triage team, assigned to a dev • Dev works on the fix • Tester verifies the fix • (optional) Bug is marked as ReadyToCheckIn, to be approved by war • Dev checks in the fix, resolves the bug • Tester verifies the bug is fixed, closes the bug • Mgmt uses bug database to track progress • Bug resolution: Fixed, NotRepro, Duplicate, WontFix, Postponed, External.
Tools: Source Change Management • Database of source code: Source Depot • To work on a file, you have to check it out • Multiple people can check out a file • At check in, you may need to merge with other people’s changes, resolve conflicts • Change history is preserved (incremental changes) • Checkins are associated with bugs • Branches are super powerful concept • One primary product branch • Code forked near milestones
Tools: Automation • Smoke • Automated test running system • Smoke must be run before checkin • Builds product with your changes • Deploys on multiple test topologies • Runs tests • Tests are prioritized, depending on which code is changed • TopoBuilder • Automated topology deployment • Topologies: from single machine to complex multi-domain multi-machine topologies • Quotas • Lifetime management: machines are automatically reclaimed into the common pool after a while.