Here’s a great post about Leonardo Da Vinci’s resume. Or rather, a letter he wrote to the Duke of Milan. At the least, it’s a great cover letter.
It’s a great piece of personal marketing, even if a bit outlandish. The key point is the tone is not “what I have done” but “what I can do for you” and he takes care to point out the value of his skills for both wartime and peace (so that he’s not just hired to do one job.)
So I’m working on my Da Vinci resume. Here’s an outline of “what I can do for you” in the role of a QA lead or consultant:
- Automated Builds
- Unit & Integration Tests (and Mocks)
- Test Deployment
- Functional Testing
- Automated Testing Framework
- Requirements Analysis
- Defect Tracking and Resolution
- QA Process
- Mentoring and Training
- Team Leadership
- I can set up an automated build system so that developers can verify their code works and is compatible with existing code. This can be run as often as you like, even after every checkin. It can enforce coding standards, run automated tests, report test coverage, and immediately notify you of problems. Checkins can prevented from degrading the quality of the system, and problems can be traced to their origination.
- I can design and develop tests that exercise individual components (unit tests) in isolation or working together (integration tests). I can build stub interfaces that allow parts of the system to be developed independently that would otherwise need to be all completed before they could be tested. In practice, writing these tests up front helps foster a design that reduces the necessity for dependent systems.
- I can measure the performance and reliability of systems under heavy usage, or simulate heavy usage over extended periods of time to determine the load that the systems can reliably carry and help plan for scalability needs.
- I can build a test environment and perform test deployments of the system which can be used for functional testing and determining dependencies and increase confidence in and ease of the production deployment.
- I can write and execute functional tests to verify features are correctly implemented and expose missing requirements or unforseen incompatibilities.
- I can write a framework to execute automated tests which will help prevent regression of features and allow testers to concentrate more on exploratory testing
- I can identify, document, and track defects and issues and their resolution. I can recommend and use defect a tracking system to help coordinate and prioritize problems and ensure they are not forgotten.
- I can provide insight and analysis to help improve the QA process within your organization. I can work within your process, with your tools, as well as give recommendations on process improvement and additional tools.
- I can provide mentoring to team members about quality assurance, test automation, and agile software development methods. I can pair with developers and understand their code, or with other testers and share my experience. I can offer training using a variety of tools and testing strategies, particularly test driven development using automation.
- I can provide leadership and coordinate QA efforts for your team. I can interview and train QA resources and be an evangelist for quality processes with development and business. I can help bridge the gap between customers and implementors.
I am a strong believer in agile, lightweight process and open communication among all stakeholders. I’m familiar with a variety of tools and processes. I’m a proponent of using open source technology where it makes sense.
I advocate unit tests written by developers, a continuous integration process with a dedicated build manager, automated regression tests, exploratory testing by QA, customer acceptance, prioritized iterative development and frequent releases.