Rock Solid Software Without Hiring an Army
This week we’re attending the Business of Software conference in Boston, which always provides a plethora of inspiration. We wanted to share some of the highlights in our notes… especially this one, which is so relevant to all of us who care deeply about developing quality software. Please pardon the hastiness… we're still in sessions...So chances are you’re already selling ahead of your roadmap and your dev team is getting pretty big. In this talk, Trish Khoo, Engineering Manager at Google, outlines approaches to keeping pace and maintaining high quality without hiring an army, drawing on a decade of software testing at Campaign Monitor, Google and Microsoft.
We all know about the iron triangle of software development – the tradeoff between Quality/Nice things, Time (aka $$), and People (also $$$). This triangle is what we use to justify why we can’t have nice things (ahem...).At Google, they try to live in a triangle-free world and have it all – at speed –without hiring a huge army of people. It is possible. Google has some pretty hefty reliability requirements, so quality is essential:
- 1B active monthly users of Google Maps services
- 1B downloads of Google maps on Android
- 2M active websites and apps use the Google Maps API
How many QA people does it take to change a light bulb?
None. They will just tell you the room is dark.Manual testing is the best way to test a simple product but it doesn’t work for complex ones. Typical Decision #2 – Hiring an automation team to fix the testing problem Write automated tests to replace the manual ones. A bad sign:
Subject – we’re hiring!
Test Automation Engineer
Low coding skill is ok
Write all our tests for us
We have a foosball table and a blimpIn other words - a very low bar. Another bad side: you teach your manual testers how to write tests. You end up with big unmaintainable piece of software to test your software. Which basically amounts to hiring a team of people to encourage bad practices in your Dev team. And then there are the Triage meetings: what is the least crappy product we can live with in production in order to get the thing out the door? ** Seven years ago, Google’s teams released to production once or twice a month; with the majority of time taken by testing. Today Google teams release to production daily or sub-daily. There was no decrease in quality.The secret: The whole team must commit to quality.It’s not a separate group where quality is your job but you can’t do anything about it. What testing really is: Testing provides expert driven feedback on the state of business requirement gaps, user impact and overall project quality. One of the ways we do this is by checking things. Everybody can check things. It’s easy. Just look!Checking is easy. Testing is hard.A Testing expert in your dev team will…
- Make sure people get info about your product at the optimal time to make timely decisions.
- Make your dev process more efficient
- Design tools and infrastructure to make your devs more productive
- We don’t have time to write tests
- We don’t know how
- That’s not the way we work at this company
- Software Engineer, Tools & Infrastructure
- Test Engineer – this role is higher in test experience. Also an engineer. They look for ways to make testing more efficient, look for new tools and ways to make things better. (At Google, the technical bar is not quite as high technically as for Software Engineers – but it’s balanced by their testing experience)
- You have to make them a first class citizen within the team – their job is often to convince people to do things they don’t want to do
- Similar job title and salary to developers
- This role needs management support
- Cultivate a postmortem culture
- Trust your people
- rock solid software
- ability to quickly change product direction
- freedom to innovate