I have somewhat of a non-traditional test role at Microsoft. I’m a tester (that’s what my business card says), but I don’t own any specific components or features. I test, but mostly where I want to discover something for myself, experiment with an idea, or when I’m coaching others. The bulk of my time, in fact, is spent coaching and mentoring other testers on the team, as well as working with the test managers on the team and our test director to make sure we’re doing the "right thing" with both strategic and tactical decisions and goals.
I should mention for those of you who don’t already know that I don’t manage anyone. One of the things I really like about Microsoft is that there’s a clear career path (including stock and pay scale) for non-managers and managers. On the Lync team, for example, I report directly to the test director (the test managers are my peers), and the director and I happen to be the same "level". Several times in my career, I’ve worked for a few managers who were a lower level than me, and it hasn’t caused a problem. In my own eyes, as well as the managers I’ve worked for, I am a better asset to the team in a non-management role (not, I hope, because I’m a horrible manager, but because I can accomplish more and have a wider span of influence without the "burdens" of management).
When I started on the team just a bit over a year ago, I asked my manager what he wanted me to do. He said, "Do whatever you want". My answer (possibly obvious if you know me) was, "Great – that’s exactly what I was planning to do." Doing "whatever I want" doesn’t mean I sit around all day – at least not to me. For me, it means that it’s my job to figure out what needs to be done and find a way to get it done. I try to recognize where gaps in knowledge or skill are anywhere on the team and find ways to address the gaps. I’ve had success in my career having the right balance between breadth of knowledge, organizational influence, and tester intuition (or plain dumb luck) to find and address areas where a team needs to improve. The code review work I presented at PNSQC last year (paper here) is one example of this, but I’ve also spearheaded efforts in exploratory testing, code coverage, test design, test automation and test strategy on the team. Mostly, I try to keep an eye on the big picture of what I think the future of our team needs to look like, then make sure we’re making the right decisions and investments to move in the right direction. It’s fun – and since the future changes frequently, so does the job.
The coaching and mentoring parts of the role give me occasional opportunities to get my hands dirty testing, but I try to make sure I have other opportunities to keep my mind wrapped around the technical aspects of testing as well. I’ve most recently been working on improving test code quality (through a combination of guidelines, code reviews, static analysis and (mostly) culture). It’s a fun problem (for me) to solve because it involves both organizational and technical challenges, so it gives me an opportunity to make good things happen for the team while spending a bit of time grepping through code – fixing bugs and solving problems.
Probably worth mentioning is that I chair two cross-company testing communities – one is a collection of other senior non-management testers (some, at least, with roles similar to mine), as well as a community of the top 3-4% of all testers at Microsoft. I am a huge believer in the power of community and networking and although the work I do to keep these communities going doesn’t impact my day-job directly, I consider it a critical part of what I do.
While my role is (I think) somewhat unique among industry testing roles, it’s not completely uncommon at Microsoft. I’m curious, however, if this sort of role exists elsewhere – or what you would call the role if it existed (other than Tester / Thinker)?