EXPERT RESPONSE
I think this is a great question. It's specific, which makes it easy to
start answering, but it's also general enough that anyone who is
interested in specializing in something within software testing should
be able to pull something from the answer. I think there are three
overarching dynamics to your question:
How can you best structure your future learning to support your goals?How can you best market your abilities to get the opportunities you want?How can you best structure the work you're currently doing to support your work and learning objectives?Continuing to learning about performance testing The activity that you have the most control over is your own learning.
I've been studying and doing performance testing for eight years, and I
honestly still learn something new about performance testing almost
every week. It's a deep and rich specialization in software testing.
There's a lot to performance testing that still needs to be formalized
and written down. It's still a growing body of knowledge. If your dream is performance testing, then you need to continue to
learn. Reading articles, blogs, books and tool documentation is a good
place to start. Attending conferences, training, workshops and local
groups is a great place to meet others who have similar passions. If
you don't have opportunities like those, then join one of the many
online communities where performance testers have a presence. Depending
on your learning style, dialog and debate can be as great a teacher as
reading, if not greater. Finally, no learning is complete without practice. I'm so passionate
about the topic of practice that I wrote an entire article on it (you
can find ithere).
Many of the materials you read will include exercises. Work through
them. Many of the conferences, training, and workshops you attend will
show examples. Repeat them. Going through the work on your own, even if
you already know the outcome, provides a different kind of learning.
Some people learn best when the experience is hands-on. For performance testing, I think a great place to start practicing is
in the open source community. Given the nature of performance testing,
most tool knowledge is transferable to other performance testing tools.
Learning multiple open source tools will also give you different ideas
for how you can solve a performance testing problem. Many times, our
available tools anchor our thinking about how to approach the problem.
If you've practiced with multiple tools, you're more likely to have
variety in your test approaches and solutions. Once you know how to use a couple of performance testing tools, if you
can't seem to get the project work you need at your current employer,
and you're unwilling or unable to leave for another opportunity, then I
recommend volunteering your time. There are a lot of online communities
that help connect people who want to volunteer their technical talents
to nonprofits or other community-minded organizations. Finding project
work outside of your day job can be just as valuable as formal project
work. Start marketing your skills and abilities If you're serious about performance testing as a career, I recommend
you start pulling together some marketing material. A resume is the
place most people focus their limited marketing skills. That could be a
good place for you to start as well. What story does your resume tell a
potential employer? Is it that you're a performance tester? How has
each of your past experiences helped you develop a specific aspect of
performance testing? Remember, one of the great challenges performance
testing presents to practitioners is its variety. That makes it easy to
relate a variety of experiences to the skills a performance tester
needs. Don't forget to include your training on your resume. I've had to
remind several people of classes they've attended, workshops they
participated in, or people who have been an active member of an online
community for years and have not included that on their resume. If it
helps you tell the story of your expertise, get it on there. Include
anything that shows an employer that you're passionate about
performance testing and you're continuously learning more about it. Depending on the types of companies you want to work for, or the types
of projects you might want, a certification might be appropriate.
Certifications relevant to performance testing aren't just performance
testing tool certifications. Appropriate certifications may also come
in the form of programming languages (e.g., Java certification),
networking (e.g., CCNA), application servers (e.g., WebSphere
administrator certification), databases (e.g., Oracle certification),
or even a certification in the context you want to work in (e.g., CPCU
certification if you want to work in the Insurance industry). I'm not
normally a big fan of certifications, but they are clear marketing
products. Finally, I think the best way to market yourself is to write. Start by
being active in an online community. Answer questions on forums or
debate ideas on mailing lists. As you learn, catalog your learning in a
blog so others can benefit from your hard work. If you feel you're
really starting to understand a specific aspect of performance testing,
try writing an article or paper on it (for example, email your idea to
an editor at SearchSoftwareQuality.com -- they'll point you in the
right direction for help if you need it). Present your idea at a
conference or workshop. The more of a public face you develop by
writing, the more you learn. My experience has been that people are
very vocal in their feedback on what you write. You should get to learn
a lot. Even if you don't become the nextScott Barber,
when a potential employer Googles your name, they'll quickly see that
you know something about performance testing and have a passion for it. Align your project work with performance testing activities Even if you can't get performance testing projects at your current
employer, you can still get project work that relates to performance
testing. Does your team test Web services? See if you can get involved;
it will get you experience with XML, various protocols and, often,
specialized tools. Does your team test databases? See if you can get
involved; it will get you experience with SQL and managing large
datasets. Does your team write automated tests? See if you can get
involved; it will get you experience programming and dealing with the
problems of scheduled and distributed tests. Does your team do
risk-based testing? See if you can get involved; it will get you
experience modeling the risk of an application or feature and teach you
how to make difficult choices about which tests to run. I could go on
with more examples. Take your current opportunities and make them
relevant for learning more about performance testing. If you can't get your own performance testing project, ask if you can
work with someone else. What if you volunteer some of your time? What
if you work under someone else's supervision for a while? Work with
your current manager to understand what factors are preventing them
from giving you the opportunity. Perhaps they can't give you the
opportunity for a number of reasons out of their direct control.
Perhaps they can, they just haven't given it enough attention. After a
conversation where you try to figure it out with them, you should have
an idea of what opportunities are available at that company. Just
recognize that sometimes you have to leave for different opportunities.
If you do that, make sure you're clear with your new employer as to
what your expectations are.
I hope that's helpful. Your question is a great one, and I feel like it
covers a general concern software testers have. The general form of the
answer is the same for people who might want to specialize in security
testing, test automation, Web service testing, test management, or any
other aspect of testing where there can be specialization. Stay focused
on your learning and development, actively market your knowledge and
abilities, and work to align your work with your goals -- even if that
means taking projects outside of the specialization to help you develop
a specific skill.
|